boosting是一种集成学习的方法,与bagging并列形成俩中不同的集成学习算法,本文主要概括boosting方法。
boosting在训练过程中,它通过改变训练样本的权重,学习多个学习器,然后将这些学习器线性组合,提高分类器的性能。
本文主要按以下思路讨论,boosting算法的整体流程,boostingDT,GBDT。
boosting是一大类集成学习框架的总称,前面我们说到 机器学习的三要素:模型、策略、算法。模型即映射函数或者条件概率:
具体来讲:前向分布算法:
输入:数据集D,基函数
输出:预测函数
第一:
第二:对于m=1,2...,M
极小化损失函数 :
更新
第三步得到加法模型:
至此,我们解释了boosting的加法模型,策略,前向分布算法。由加法模型和前向分布算法以及确定一个损失函数得到模型都是boosting模型。
接下来讨论BDT
BDT是boosting decision tree,是以回归决策树(CART树)为基模型以平方误差为损失函数的boosting方法。
BDT的模型:
因此,基于前向分布模型可以得到DBT算法
输入:数据集
输出:预测函数
第一:初始化
第二:for m=1,2,...m
(a)计算第m步的残差
(b)将残差作为新数据集使用CART回归树算法生成回归树
(c)更新
最后得到boosting回归树
至此,我们得到了boosting回归树,是算法是使用CART回归树作为基学习器,使用boosting的方式(即前向分布算法和加法模型)。
接下来我们讨论一下GDBT,基于boosting的算法以CART回归树作为基学习器,以平方损失函数作为损失函数的我们称之为DBT算法,但有时候往往使用的是一般的损失函数,一般的损失函数在进行前向分布算法更新参数使得损失函数变小的时候往往很难直接求得参数,所以我们采用损失函数的负梯度来近似拟合残差,
所以,GBDT算法和BDT、以及前向分布算法一样,只是将负梯度作为残差,让决策树拟合负梯度这个残差。
输入:数据集D,损失函数
输出:回归树
(1)初始化:
(2)for m=1,2...m
计算损失函数的负梯度:
对该负梯度作为残差进行拟合一个决策回归树
最后的到GBDT模型:
思考?为社么是用损失函数的负梯度就可以拟合残差?
损失函数
至此,我们基于前向分布算法得到GBDT算法,如果我们的损失函数采用指数损失函数,通过对指数损失函数求导得到更新的参数,我们将得到adaboost算法。