上一篇记述了Bagging的思维与应用 : https://blog.csdn.net/qq_35946969/article/details/85045432
本篇记录Boosting的思想与应用:AdaBoosting、GDBT(梯度提升树)
Boosting
概念:提升学习(Boosting)每一步产生一个弱预测模型(如决策树),而后面每一次产生的弱预测模型都要受到前面弱预测模型的影响(从输入特征或其他方面),最后将所有预测模型加权累加到总模型中;如果每一步的弱预测模型的生成都是根据损失函数的梯度方向的话 ,就称之为梯度提升(Gradient Boosting)。
AdaBoosting
AdaBoosting作为最初的Boosting算法的提升版,具体思想:
(1)、生成第一个弱预测模型。
(2)、之前的预测模型输出的结果,调整样本集中各个样本的权重,将调整权重后的样本集作为下一个弱预测模型的输入,生成弱预测模型。
(3)、重复(2)中的操作,直到设置的循环结束。
伪代码实现如下:
以上伪代码来自周志华老师的西瓜书,比较让人疑惑的点在第6行 ,为什么起作用?
这个来源于对损失函数的推导,有兴趣的时候再去推导……
GBDT(Gradient Boosting Decision Tree)
梯度提升树的思想与AdaBoost有所差异:
(1)、生成第一个弱预测模型。
(2)、之前的预测模型输出的结果,然后与真实值相减得到差值;将差值作为下一个预测模型的label值。(当损失函数不是MSE时,残差将以负梯度来代替)
(3)、重复(2)中的操作,直到设置的循环结束。
梯度提升树这样的方式在于减少偏差,泛化能力并不能得到提升。
由于对于具体的推导过程还不熟悉,暂时贴出笔记来,记录,求过路大牛指点……