机器学习算法二:详解Boosting系列算法二GBM

GBM

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

boosting加法模型

提升类的算法可以认为是一种加法模型:

f(x)=m=1MαmT(x;Θm) f ( x ) = ∑ m = 1 M α m T ( x ; Θ m )

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

boosted tree

提升树是以分类树和回归树为基学习器的提升算法,就是将 T(x;Θm) T ( x ; Θ m ) 学习器定义为了决策树。提升树被认为是统计学性能最好的方法之一。为了方便大家理解,这里就不再另外定义模型了(参考前文),提升树模型如下

f(x)=m=1MαmT(x;Θm) f ( x ) = ∑ m = 1 M α m T ( x ; Θ m )
对于二分类问题,提升树可以看做采用二分类树的adaboost算法,所以这里不再详细解释。因此这里的 T(x;Θm) T ( x ; Θ m ) 为回归树。回归提升树使用的前向分布计算法:
f0(x)=0 f 0 ( x ) = 0
fm(x)=fm1(x)+T(x;Θm) f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m )
fM(x)=m=1MT(x;Θm) f M ( x ) = ∑ m = 1 M T ( x ; Θ m )
前向计算到低 m m 步时,需要求解目标函数
Θm=argminΘi=1NL(yi,fm1(xi)+T(xi;Θm)) Θ m ′ = arg ⁡ min Θ ⁡ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x − i ; Θ m ) )
Θm Θ m ′ 为根据损失函数更新的第m颗树的参数。假设这里的损失函数我们定义为平方误差函数
L=(yf(x))2 L = ( y − f ( x ) ) 2
损失就变为了
L=[yfm1(xi)T(xi;Θm)]2 L = [ y − f m − 1 ( x i ) − T ( x − i ; Θ m ) ] 2
这就是基于平方误差函数的提升树模型。
算法步骤可以总结如下:
1.输入训练数据 xi,yi ( x i , y i ) ;
2.构建提升树模型 fM(x) f M ( x )
3.初始化 f0(x)=0 f 0 ( x ) = 0
对于第m步,首先计算残差
rmi=yifm1(xi) r m i = y i − f m − 1 ( x i )
然后根据残差求取误差函数最小化的分类器,得到树模型
Θm=argminΘi=1NL(rmi,fm1(xi)+T(xi;Θm)) Θ m ′ = arg ⁡ min Θ ⁡ ∑ i = 1 N L ( r m i , f m − 1 ( x i ) + T ( x − i ; Θ m ) )

4. 更新提升树模型
fm(x)=fm1(x)+T(x;Θm) f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m )

详细的例子可以参考这篇博文: https://blog.csdn.net/sb19931201/article/details/52506157中的算法实例,即李航统计学习P149例 8.2

GBM梯度提升树

了解了adaboost和提升树算法后,就很容易理解GBM算法了。GBM(提升器)算法,又名GBDT,是基于梯度下降算法得到提升树模型。它与提升树的关键不同之处,就在于残差更新的方式,下面来看看GBM的的计算步骤;
1.输入训练数据 xi,yi ( x i , y i ) ;
2.构建提升树模型 fM(x) f M ( x )
3.初始化 f0(x)=arg minΘi=1NL(yi;Θ) f 0 ( x ) = a r g   min Θ ⁡ ∑ i = 1 N L ( y i ; Θ )
For m=1 to M F o r   m = 1   t o   M
1.对于第m个基学习器,首先计算梯度

gm(xi)=[L(yi,f(xi))f(xi)]f(x)=fm1 (x); g m ( x i ) = [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1   ( x ) ;
2.根据梯度学习第m个学习器
Θm=arg minΘ,βi=1N[gm(xi)βmΘ(xi)]2 Θ m ′ = a r g   min Θ , β ⁡ ∑ i = 1 N [ − g m ( x i ) − β m Θ ( x i ) ] 2 ;
3.通过line search求取最佳步长
βm=arg minβi=1NL[yi,fm1(xi)+βmΘm(xi)] β m = a r g   min β ⁡ ∑ i = 1 N L [ y i , f m − 1 ( x i ) + β m Θ m ′ ( x i ) ] ;
4.令 fm=βmΘm f m = β m Θ m ′ ,更新,模型
f(xi)=fm1+fm; f ( x i ) = f m − 1 + f m ;
end e n d
Output:f(xi) O u t p u t : f ( x i )

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

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

你可能感兴趣的:(机器学习理论)