GBM

GBM 全称gradient boosting machine,一般叫做梯度提升树算法。是一类很常用的集成学习算法,在多次数据挖掘比赛中获得了优秀的成绩。
在解释GBM时,有很多内容需要提前一并解释了才有助于理解GBM算法。建议阅读此篇内容以前先了解一个Adaboost算法
<https://blog.csdn.net/weixin_38629654/article/details/80516045>
,接下来此文还会给出boosting加法模型以及boosted tree(提升树)的解释,最后再讲解GBM算法。

boosting加法模型

提升类的算法可以认为是一种加法模型:
f(x)=∑m=1MαmT(x;Θm)f(x)=∑m=1MαmT(x;Θm)
αmαm是每个基学习器的权系数,T(x;Θm)T(x;Θm)代表学习得到的第m个基学习器,mm为学习器个数,ΘmΘm
为学习器分类的参数,一般这里指分类树或者回归树模型参数。
在给定训练数据和损失函数形式后,boosting学习模型可以定义为一个损失函数极小化的问题,优化的目标函数为:argminf∑i=1NL(yi,f(xi))
arg⁡minf⁡∑i=1NL(yi,f(xi))LL为损失函数,NN
为样本个数。从这两个定义我们就可以知道boosting类算法的模型和优化目标函数是什么。接下来理解boosted tree 就容易了。


boosted tree

提升树是以分类树和回归树为基学习器的提升算法,就是将T(x;Θm)T(x;Θm)
学习器定义为了决策树。提升树被认为是统计学性能最好的方法之一。为了方便大家理解,这里就不再另外定义模型了(参考前文),提升树模型如下
f(x)=∑m=1MαmT(x;Θm)f(x)=∑m=1MαmT(x;Θm)
对于二分类问题,提升树可以看做采用二分类树的adaboost算法,所以这里不再详细解释。因此这里的T(x;Θm)T(x;Θm)
为回归树。回归提升树使用的前向分布计算法:f0(x)=0f0(x)=0fm(x)=fm−1(x)+T(x;Θm)fm(x)=fm−1(x)+T(x;Θm)fM(
x)=∑m=1MT(x;Θm)fM(x)=∑m=1MT(x;Θm)前向计算到低mm步时,需要求解目标函数Θ′m=argminΘ∑i=1NL(yi,fm−1(xi
)+T(x−i;Θm))Θm′=arg⁡minΘ⁡∑i=1NL(yi,fm−1(xi)+T(x−i;Θm))Θ′mΘm′
为根据损失函数更新的第m颗树的参数。假设这里的损失函数我们定义为平方误差函数L=(y−f(x))2L=(y−f(x))2损失就变为了L=[y−fm−1(xi)−
T(x−i;Θm)]2L=[y−fm−1(xi)−T(x−i;Θm)]2这就是基于平方误差函数的提升树模型。
算法步骤可以总结如下:
1.输入训练数据(xi,yi)(xi,yi);
2.构建提升树模型fM(x)fM(x)
3.初始化f0(x)=0f0(x)=0
对于第m步,首先计算残差rmi=yi−fm−1(xi)rmi=yi−fm−1(xi)然后根据残差求取误差函数最小化的分类器,得到树模型Θ′m=argminΘ
∑i=1NL(rmi,fm−1(xi)+T(x−i;Θm))Θm′=arg⁡minΘ⁡∑i=1NL(rmi,fm−1(xi)+T(x−i;Θm))
4. 更新提升树模型fm(x)=fm−1(x)+T(x;Θm)fm(x)=fm−1(x)+T(x;Θm)
详细的例子可以参考这篇博文:https://blog.csdn.net/sb19931201/article/details/52506157
<https://blog.csdn.net/sb19931201/article/details/52506157>中的算法实例,即李航统计学习P149例
8.2


GBM梯度提升树


了解了adaboost和提升树算法后,就很容易理解GBM算法了。GBM(提升器)算法,又名GBDT,是基于梯度下降算法得到提升树模型。它与提升树的关键不同之处,就在于残差更新的方式,下面来看看GBM的的计算步骤;
1.输入训练数据(xi,yi)(xi,yi);
2.构建提升树模型fM(x)fM(x)
3.初始化f0(x)=arg minΘ∑i=1NL(yi;Θ)f0(x)=arg minΘ⁡∑i=1NL(yi;Θ)
For m=1 to MFor m=1 to M
1.对于第m个基学习器,首先计算梯度
gm(xi)=[∂L(yi,f(xi))∂f(xi)]f(x)=fm−1 (x);gm(xi)=[∂L(yi,f(xi))∂f(xi)]f(x)=fm−1 (
x);2.根据梯度学习第m个学习器Θ′m=arg minΘ,β∑i=1N[−gm(xi)−βmΘ(xi)]2;Θm′=arg minΘ,β⁡∑i=1N[−gm(
xi)−βmΘ(xi)]2;3.通过line search求取最佳步长βm=arg minβ∑i=1NL[yi,fm−1(xi)+βmΘ′m(xi)];βm=a
rg minβ⁡∑i=1NL[yi,fm−1(xi)+βmΘm′(xi)];4.令fm=βmΘ′mfm=βmΘm′,更新,模型f(xi)=fm−1+fm;f(x
i)=fm−1+fm;endend
Output:f(xi)Output:f(xi)


目前对GBM算法理解还不深,我会在后续学习中继续更新对GBM算法得解释。

更多的内容可以参考以下资料:
1.Introduction to Boosted Trees. By Tianqi Chen.
http://homes.cs.washington.edu/~tqchen/data/pdf/BoostedTree.pdf
<http://homes.cs.washington.edu/~tqchen/data/pdf/BoostedTree.pdf>
2.李航《统计学习方法》
3.GBDT算法原理与系统设计简介.wepon.http://wepon.me <http://wepon.me>
4.http://baijiahao.baidu.com/s?id=1596688880528064344&wfr=spider&for=pc
<http://baijiahao.baidu.com/s?id=1596688880528064344&wfr=spider&for=pc>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信