目录
1. XGBoost原理
1.1 提升方法(Boosting)
1.2 提升决策树 (BDT,Boosting Decision Tree)
1.3 梯度提升决策树 (GBDT,Gradient Boosting Decision Tree)
1.4 极限梯度提升(XGBoost,eXtreme Gradient Boosting)
附一篇很赞的博客:https://www.pianshen.com/article/30521719325/


BDT(集成决策树):在决策树的基础上用boosting方法集成
GBDT(梯度提升决策树):在BDT的基础上使用一阶梯度进行残差拟合
XGB:GBDT做一系列优化改进
1. XGBoost原理
1.1 提升方法(Boosting)
提升方法使用加法模型和前向分步算法
加法模型

其中,
为基函数,
为基函数的参数,
为基函数的系数。
在给定训练数据
及损失函数
的条件下,学习加法模型
成为经验风险极小化问题:

前向分步算法求解这⼀优化问题的思路:因为学习的是加法模型,可以从前向后,每⼀步只学习⼀个基函数及其系数,逐步
逼近优化⽬标函数式( 1.2 ),则可以简化优化复杂度。具体地,每步只需优化如下损失函数:
得到参数
(b) 更新
( 3 )得到加法模型
前向分步算法将同时求解从 = 1 到 所有参数
的优化问题简化为逐次求解各个
的优化问题
1.2 提升决策树 (BDT,Boosting Decision Tree)
将Boosting中的基模型约束为决策树,将
约束为1,即为BDT。
以决策树为基函数的提升⽅法为提升决策树。
提升决策树模型可以表示为决策树的加法模型:

其中,
表示决策树;
为决策树的参数;
为树的个数。
提升决策树采⽤前向分步算法。⾸先确定初始提升决策树
,第
步的模型是

其中,
为当前模型,通过经验风险极小化确定下一颗决策树的参数
,

已知训练数据集
,
,
为输⼊空间,
,
为输出空间。
如果将输⼊空间
划分为
个互不相交的区域
,并且在每个区域上确定输出的常量
,那么决策树可表示为

其中,参数
表示决策树的区域划分和各区域上的常量值。
是决策树的复杂度即叶⼦
结点个数。
提升决策树使⽤以下前向分步算法:

在前向分步算法的第
步,给定当前模型
,需要求解

得到
,即第m棵树的参数。
当采⽤平⽅误差损失函数时,

其损失变为
![\begin{aligned} L(y, f_{m-1}(x) + T(x; \Theta_m)) &= [y - f_{m-1}(x) - T(x; \Theta_m)]^2 \\ &= [r - T(x; \Theta_m)]^2 \end{aligned}](http://img.e-com-net.com/image/info8/8bb1f3225f68456f8d9d5e41ba98735f.gif)
其中,

是当前模型拟合数据的残差(residual)。对回归问题的提升决策树,只需要简单地拟合当前模型的残差。
算法 2.1 回归问题的提升决策树算法
输⼊:训练数据集
;
输出:提升决策树
( 1 )初始化
( 2 )对
( a )按照式( 2.5 )计算残差

( b) 拟合残差 学习⼀个回归树,得到
( c )更新
( 3 )得到回归提升决策树

1.3 梯度提升决策树 (GBDT,Gradient Boosting Decision Tree)
GBDT VS BDT: BDT学习的是当前模型拟合数据的残差;GBDT学习的是损失函数关于梯度的负值。
梯度提升算法使⽤损失函数的负梯度在当前模型的值
![\left.\begin{matrix} -[\frac{\partial L(y, f(x_i))}{\partial f(x_i)}] \end{matrix}\right| _{f(x)=f_{m-1}(x)} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (3.1)](http://img.e-com-net.com/image/info8/733dbedd9ada4d7397e68f9b3660fde7.gif)
作为回归问题提升决策树算法中残差的近似值,拟合⼀个回归树。
算法3.1 梯度提升算法
输⼊:训练数据集
; 损失函数
输出:梯度提升决策树
( 1 )初始化

(2)对
( a)对
,计算
![r_{mi} = \left.\begin{matrix} -[\frac{\partial L(y, f(x_i))}{\partial f(x_i)}] \end{matrix}\right| _{f(x)=f_{m-1}(x)}](http://img.e-com-net.com/image/info8/969270e8f4774fdb9b505b54ceef6d6e.gif)
(b)对 拟合⼀个回归树,得到第 棵树的叶结点区域
( c )对
,计算

( d )更新
( 3 )得到回归梯度提升决策树
1.4 极限梯度提升(XGBoost,eXtreme Gradient Boosting)
GBDT VS XGB
- GBDT仅使用了一阶梯度拟合,XGB用到了二阶梯度拟合,自然阶数越高,拟合的精度越高。
- GBDT是经验风险最小化,容易过拟合,XGB引入了正则化项
训练数据集
,其中
。
决策树模型
其中,
为第
棵决策树。
正则化⽬标函数,我们期待当前的树的叶子结点不要太多
;我们还期待每颗叶子结点的输出值不要太大
,这个是从稳定性考虑的?
其中,
。
其中,

。
第t轮⽬标函数
的⼆阶泰勒展开,并移除关于
常数项
我们可以看到两个累加项,但是前一个是对整个数据集的累加(遍历数据集),后一个是对叶子的累加(遍历叶节点),暂时没法统一。但是我们想想,所有的数据集中的数据必然应该落到叶子上,所以对数据集的遍历可以转换为对叶子结点的遍历,遍历完一个叶子结点里面的数据,我们再遍历下一个叶子节点。即我们遍历叶子结点再遍历叶子结点所有的数据。公式表达如下:
定义叶结点 j上的样本的下标集合
,则⽬标函数可表示为按叶结点累加的形式
由于
得到每个叶结点 的最优分数为
代⼊每个叶结点 的最优分数,得到最优化⽬标函数值
假设
和
分别为分裂后左右结点的实例集,令
,则分裂后损失减少量由下式得出