XGBoost全称 “Extreme Gradient Boosting“,被称为极端梯度提升法。它利用一连串的决策树,通过学习前一个决策树残差的方式,来不断逼近最终的预测结果,这里着重讲目标函数是如何构建的以及如何生成一棵新的树。
假设我们已经训练了 K K K棵树,那么其对于第 i i i个样本的预测结果为:
y ^ i = ∑ k = 1 K f k ( x i ) \hat y_i=\sum\limits_{k=1}^Kf_k(x_i) y^i=k=1∑Kfk(xi)
- 如果是回归问题,那么其最终的预测值就是 y ^ \hat y y^
- 如果是分类问题,那么最终的结果 y ^ \hat y y^就是其预测值为对应分类的概率( 0 < y ^ < 1 0<\hat y<1 0<y^<1)
假设我们一共有 n n n条样本数据,我们可以构建一个统一的目标函数:
O b j = ∑ i = 1 n l ( y i , y ^ i ) + ∑ k = 1 K Ω ( f k ) Obj=\sum\limits_{i=1}^nl(y_i,\hat y_i)+\sum\limits_{k=1}^KΩ(f_k) Obj=i=1∑nl(yi,y^i)+k=1∑KΩ(fk)
- 其中 y i y_i yi是第 i i i个样本的真实值,如果是分类问题那就是1
- l ( y i , y ^ i ) l(y_i,\hat y_i) l(yi,y^i)是损失函数,对于回归问题我们可以使用MSE,对于分类问题可以使用Cross entropy
- Ω ( f k ) Ω(f_k) Ω(fk)是对于每棵树的具体约束,防止单棵树过拟合,下面会具体讲
同样对于样本 i i i我们可以得到:
y i ( 0 ) = 0 ( d e f a u l t v a l u e ) y i ( 1 ) = f 1 ( x i ) = y i ( 0 ) + f 1 ( x i ) y i ( 2 ) = f 1 ( x i ) + f 2 ( x i ) = y i ( 1 ) + f 2 ( x i ) . . . y i ( k ) = f 1 ( x i ) + f 2 ( x i ) + . . . + f k − 1 ( x i ) + f k ( x i ) = y i ( k − 1 ) + f k ( x i ) \begin{aligned}y_i^{(0)}&=0\quad(default\quad value)\\y_i^{(1)}=f_1(x_i)&=y_i^{(0)}+f_1(x_i)\\y_i^{(2)}=f_1(x_i)+f_2(x_i)&=y_i^{(1)}+f_2(x_i)\\&.\\&.\\&.\\y_i^{(k)}=f_1(x_i)+f_2(x_i)+...+f_{k-1}(x_i)+f_k(x_i)&=y_{i}^{(k-1)}+f_k(x_i)\end{aligned} yi(0)yi(1)=f1(xi)yi(2)=f1(xi)+f2(xi)yi(k)=f1(xi)+f2(xi)+...+fk−1(xi)+f