机器学习教程 之 加性模型:GBDT退化为AdaBoost原理

Gradient boosting是一种广泛被用于回归、分类和排序任务的集成方法,于2001年被Friedman提出
该类算法通过以上一轮基学习器的误差的负梯度为训练目标训练本轮的基学习器,不断降低集成模型在训练集上的偏差实现高精度的集成
基于Gradient Boosting算法的学习器被称为Gradient Boosting Machine(GBM),如果说AdaBoost是boosting方法的开山之作,那么GBM就是boosting方法的集大成者。GBM几乎刷新了各个领域众多数据集的精度记录,有人认为GBM是性能最好的机器学习方法,这种说法有点激进,但通常各类数据竞赛赢家的策略里也确实都会有这类算法的方法或者思想

由于集成学习方法在实际应用中出色的性能,我曾经写过几篇这方面的博文,关于集成学习及其boosting方法的

机器学习教程 之 Boosting 与 bagging:集成学习框架
人工智能里的数学修炼 | AdaBoost的数学原理: 分布更新推导
机器学习教程 之 集成学习算法: 深入刨析AdaBoost

还有一片关于 bagging 类随机森林的
机器学习教程 之 随机森林: 算法及其特征选择原理

关于GBDT的博客有
机器学习教程 之 梯度提升方法:GBDT及其扩展模型XGBoost
机器学习教程 之 梯度提升方法:GBDT处理分类问题
感兴趣的朋友可以了解一下,可以帮助你们更好的了解集成学习的整体情况, 而这篇博客要讲述的内容是,GBDT在何种情况下会退化为AdaBoost

GBDT退化为AdaBoost原理

Boosting在集成学习领域是非常耀眼的一类方法,其中又以AdaBoost和GBDT最为突出,AdaBoost是Adaptive Boosting的简称,在人脸识别和处理不均匀数据相关领域得到广泛引用;GBDT 更是被称为最强学习器,在各类数据竞赛中得到追捧。这两类方法都是集成模型,其构造方法是通过构造多个弱分类器来组成一个强分类器,且他们同属于Boosting框架,那么AdaBoost和GBDT有什么区别呢?

这两者的最大区别在于, AdaBoost不属于梯度提升方法(Gradient Boosting),即它在构造集成模型的时候没有用到梯度下降的思想,而是用的 Forward Stagewise Additive Modeling (分步前向加性模型,FSAM)。这个模型和方法在之前的机器学习教程 之 梯度提升方法:GBDT及其扩展模型XGBoost 已经详细介绍过,为了后面更好的描述,这里简单再说一下
集成模型的加性模型

Fm(x)=m=1Mαmfm(x)

等价于
Fm(x)=Fm1(x)+αmfm(x)

这个加性模型的求解,严格上要求我们同时找出所有的 alphamfm, 这是一个非常困难的问题,因此我们采用分步求解的方法,每一步找出一个合适的 alphaf。假设我们已经得到了前 m1 个弱学习器,即 Fm1(x), 我们针对损失函数 L 进行优化有
机器学习教程 之 加性模型:GBDT退化为AdaBoost原理

如果损失函数为平方差函数,则我们有
机器学习教程 之 加性模型:GBDT退化为AdaBoost原理

这里的 yiFm1(xi) 就是当前模型在数据上的残差,可以看出,求解合适的 alphaf 就是在当前的残差上拟合一个弱的分类器,而且损失函数还是平方差损失函数。这和GBDT选择平方差损失函数时构造弱分类器的方法恰好一致
而如果损失函数是指数形式,即
机器学习教程 之 加性模型:GBDT退化为AdaBoost原理

则有
机器学习教程 之 加性模型:GBDT退化为AdaBoost原理

上式中的 wim1=exp(yi(Fm1(xi))) 和要求解的 alphamfm 无关,与样本有关,可以理解为样本权重,因此,在这种情况下,构造弱分类器就是在对样本设置权重后的数据上拟合,且损失函数还是指数形式,这也正式AdaBoost的形式。不过值得一提的是,最早的AdaaBoost并不是从这个思路推出来的,在AdaBoost提出5年后,人们才开始从FSAM的角度来解释AdaBoost的原理