Xgboost是目前Tree boosting method方法实现效果最好的工具,支持几乎所有的主流语言调用,在Kaggle等众多数据科学比赛中取得了十分优秀的成绩,该包由DMLC开发并维护。官网列出了它的优势所在我就直接贴出来了
按照官方的说法xgboost并不是boosting tree的简单实现,而是一个boosting系统。
首先是模型,假设有K棵树
$$\hat{y}_i=\sum^K f_k(x_i)$$
很简单,就是我们之前介绍的Additive Model,然后是目标函数
$$Obj=\sum_{i=1}^nl(y_i,\hat y_i)+\sum_{k=1}^K\Omega(f_k)$$
其中第一项表示损失函数,第二项表示正则项(包含树的深度和节点数量、叶节点权重的L2范数等)用于控制模型复杂度。由于这是一个Additive Model对于第t轮预测有:
$$Obj^{t}=\sum_{i=1}^nl(y_i,\hat y_i^{(t-1)}+f_t(x_i))+\sum_{k=1}^K\Omega(f_k)+constant$$
将损失函数做泰勒展开有:
$$Obj^t\simeq\sum_{i-1}^n[l(y_i,\hat y_i^{(t-1)})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+\sum_{k=1}^K\Omega(f_k)+constant$$
去掉常数项有:
$$Obj^t\simeq\sum_{i-1}^n[g_if_t(x_i)+\frac{1}{2