一般来讲,提升方法实际采用加法模型与前向分步算法,以决策树为基函数的提升方法称为提升树。
提升树
提升树算法采用前向分布算法。
算法框架大致思想为:
1. 首先,确定初始提升树f~0~(x)=0,第m步的模型是:
2. 对于每一个步的模型,都是通过经验风险最小化确定模型的参数:
其中:
回归问题 ,使用平方差损失函数
分类问题,使用指数损失函数
一般决策问题,一般损失函数
回归问题的提升树算法流程:
假设训练集为T,训练得到提升树为
(1) 初始化
(2) 对m = 1,2,......,M
- (i) 计算残差:
- (ii) 拟合残差
学习一个回归树,得到。
这里的拟合残差过程,利用一个CART树来进行回归学习的过程,只不过这里回归的目标不再是原来的标签,而是上个树模型回归后的残差。(比如,回归年龄50岁,上个树回归预测23岁,那么这次的残差就是50-23=27岁,回归的过程参考CART)
- (iii)更新以下提升树:
(3)得到回归树:
GBDT树
在提升树算法中,当损失函数是平方损失和指数损失函数时,每一步的优化都比较简单,但对于一般损失函数而言,就不容易处理。 因此,GBDT首先使用最速下降的近似方法来计算残差的近似值:
参考博客:子龙风已经总结的十分好了,在这里就不重复书写。
GDBT正则化:
- 第一种是和Adaboost类似的正则化项,即使用步长(learning rate),定义为 α
- 子采样比例(subsample),取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。 使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。
- Regularized Learning Objective,将树模型的复杂度作为正则项显式地加进优化目标里