一、概览
首先强调一点,先有提升树模型(总体概念),然后针对不同情况和不同损失函数,提出各自提升树,包含残差提升树,梯度提升树等

这两种树的差别,一是残差和梯度,二是节点分裂根据不一样,残差提升树是根据gini指数,梯度提升树是根据目标函数衍化的
二、提升树概念
提升树(Boosting Decision Tree) = Boosting + Decision Tree。
提升方法实际采用加法模型(即基函数的线性组合)和前向分布算法。
以基函数的提升方法称为提升树。
对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树
提升树公式

三、基于平方误差的回归提升树(基于残差的提升树)
最原始,最开始提出的提升树,就是基于平方误差的回归提升树,也可以叫基于残差的提升树


四、梯度提升(基于梯度的提升树)
当损失函数是平方损失和指数损失函数时,每一步优化很自然简单。但对一般损失函数而言,往往每一步优化并不如意。针对这个问题,又提出了梯度提升算法。
他的步骤是:
- 1、用前向分步算法拟合加法模型。
- 2、在每个阶段,引入一个新的回归树h,弥补现有模型的‘残差。
- 3、‘残差’是由负梯度确定的。
- 4、对于任何损失函数,都可以推导出梯度提升算法。
- 5、绝对损失和Huber损失,比平方损失,对于异常值更稳健。
核心就是利用损失函数的负梯度在当前模型的值作为回归问题提升树的残差近似值。

五、残差 vs 梯度
-
基于平方损失的提升树,受异常点影响大
-
基于huber损失的提升树,可以减少异常点对整体的影响
-
因此,负梯度比残差,减少异常点的影响
-
总结
截图来源于A Gentle Introduction to Gradient Boosting
六、题外话:LR与GBDT
LR是利用梯度更新参数
GBDT是利用梯度更新函数值

截图来源于GBDT算法原理与系统设计简介
参考
1.《统计学习方法》
2、A Gentle Introduction to Gradient Boosting
3、GBDT算法原理与系统设计简介
网友评论