【机器学习算法推导】AdaBoost与GBDT(Gradient Boosting Decision Tree)

1.Gradient Boosted Decision Tree(GBDT)

  AdaBoost中的模型是二分类模型;扩展到任意的error function后,可以得到
min ⁡ η min ⁡ h 1 N ∑ n = 1 N e r r ( ∑ τ = 1 t − 1 a τ h τ ( x n ) + η h t ( x n ) , y n ) . . . . . . . . . . ( 1 ) \min_\eta \min_h \frac{1}{N}\sum_{n=1}^Nerr\left(\sum_{\tau=1}^{t-1}a_\tau h_\tau(x_n)+\eta h_t(x_n),y_n\right)..........(1) ηminhminN1n=1Nerr(τ=1t1aτhτ(xn)+ηht(xn),yn)..........(1)
  可以配合任意的预测函数(通常是实数型输出)。其中式子(1)是新的融合模型——GradientBoost的形式,也是一种框架。它可以配合很多的算法,解决regression,或者soft classification等问题。
  如果让GradientBoost应用到回归问题,使用平方误差函数,则会有
{ min ⁡ η min ⁡ h 1 N ∑ n = 1 N e r r ( ∑ τ = 1 t − 1 a τ h τ ( x n ) + η h t ( x n ) , y n ) e r r ( s , y ) = ( s − y ) 2 . . . . . . . . . . ( 2 ) \begin{cases} \min\limits_\eta \min\limits_h \frac{1}{N}\sum\limits_{n=1}^Nerr\left(\sum\limits_{\tau=1}^{t-1}a_\tau h_\tau(x_n)+\eta h_t(x_n),y_n\right) \\ err(s,y)=(s-y)^2 \end{cases}..........(2) ηminhminN1n=1Nerr(τ=1t1aτhτ(xn)+ηht(xn),yn)err(s,y)=(sy)2..........(2)
  其损失变为
L ( y , ( ∑ τ = 1 t − 1 a τ h τ ( x n ) + η h t ( x n ) , y n ) ) = [ y − f m − 1 ( x ) − η h t ( x n ) ] 2 = [ r − η h t ( x n ) ] 2 \begin{aligned} &L(y,\left(\sum\limits_{\tau=1}^{t-1}a_\tau h_\tau(x_n)+\eta h_t(x_n),y_n\right)) \\ &= [y-f_{m-1}(x)-\eta h_t(x_n)]^2 \\ &=[r-\eta h_t(x_n)]^2 \end{aligned} L(y,(τ=1t1aτhτ(xn)+ηht(xn),yn))=[yfm1(x)ηht(xn)]2=[rηht(xn)]2
  r=y- f m − 1 ( x ) f_{m-1}(x) fm1(x)是当前数据拟合的残差,所以对于回归问题的提升树算法中,只需要简单地拟合当前模型的残差即可。
  其中
( 2 ) ≈ t a y l o r min ⁡ h 1 N ∑ n = 1 N e r r ( S n , y n ) + 1 N ∑ n = 1 N η h ( x n ) ∂ e r r ∂ s ∣ S = S n = min ⁡ h c o n s t a n t s + η N ∑ n = 1 N h ( x n ) ⋅ 2 ( S n − y n ) \begin{aligned} (2) &\approx^{taylor} \min_h \frac{1}{N}\sum_{n=1}^Nerr(S_n,y_n)+\frac{1}{N}\sum_{n=1}^N\eta h(x_n)\left .\frac{\partial err}{\partial s}\right|_{S=S_n} \\ &=\min_h\quad constants +\frac{\eta}{N}\sum_{n=1}^Nh(x_n)·2(S_n-y_n) \end{aligned} (2)taylorhminN1n=1Nerr(Sn,yn)+N1n=1Nηh(xn)serrS=Sn=hminconstants+Nηn=1Nh(xn)2(Snyn)
  关于h的大小其实无所谓,因为它只是个方向, η \eta η 会在下一步优化它。为了限制h的大小,将h作为一个惩罚项放到式子中。
min ⁡ h c o n s t a n t s + η N ∑ n = 1 N ( h ( x n ) ⋅ 2 ( S n − y n ) + h ( x n ) 2 ) = c o n s t a n t s + η N ∑ n = 1 N ( c o n s t a n t + ( h ( x n ) − ( y n − s n ) ) 2 ) \begin{aligned} &\min_h\quad constants +\frac{\eta}{N}\sum_{n=1}^N(h(x_n)·2(S_n-y_n)+h(x_n)^2)\\ &= \quad constants +\frac{\eta}{N}\sum_{n=1}^N(constant + (h(x_n)-(y_n-s_n))^2) \end{aligned} hminconstants+Nηn=1N(h(xn)2(Snyn)+h(xn)2)=constants+Nηn=1N(constant+(h(xn)(ynsn))2)
   y n − s n y_n-s_n ynsn是想要的y和目前已经得到的分数的差,称之为残差,因此我们的优化目标转换为求 x n x_n xn y n − s n y_n-s_n ynsn的回归问题。
  经过上面的步骤,我们求得了最优的h,接下来要求解 η \eta η。对于 η \eta η的求解,我们需要做一步转换:
min ⁡ η 1 N ∑ n = 1 N ( s n + η h t ( x n ) − y n ) 2 = 1 N ∑ n = 1 N ( ( y n − s n ) − η h t ( x n ) ) 2 \min_\eta \frac{1}{N}\sum_{n=1}^N(s_n+\eta h_t(x_n)-y_n)^2=\frac{1}{N}\sum_{n=1}^N((y_n-s_n)-\eta h_t(x_n))^2 ηminN1n=1N(sn+ηht(xn)yn)2=N1n=1N((ynsn)ηht(xn))2
  经过转变后,求解 η \eta η问题变为以 h t h_t ht为权重, η \eta η为变量,输出为残差的线性回归问题,因此只要解决线性回归问题就可以得到 η \eta η

  GBDT算法流程总结如下:

  1. 初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0
  2. 对于m=1,2,…,M,计算残差 r m , i = y i − f m − 1 ( x i ) , i = 1 , 2 , . . . , N r_{m,i}=y_i-f_{m-1}(x_i),i=1,2,...,N rm,i=yifm1(xi),i=1,2,...,N,拟合残差 r m . i r_{m.i} rm.i学习一个回归树,得到 T ( x ; θ m ) T(x;\theta_m) T(x;θm),更新 f m ( x ) = f m − 1 ( x ) + T ( x ; θ m ) f_m(x)=f_{m-1}(x)+T(x;\theta_m) fm(x)=fm1(x)+T(x;θm)
  3. 得到回归问题提升树 f M ( x ) = ∑ i = 1 M T ( x ; θ m ) f_M(x)=\sum_{i=1}^MT(x;\theta_m) fM(x)=i=1MT(x;θm)
      决策树除了与Gradient Boost组成形成GBDT算法之外,还有两种典型的算法,比如Random ForestAdaBoost-DTree

3.Random Forest

  组成:Bagging+Decision Tree
  使用bootstraping取样得到T份不同的样本,得到T棵决策树,将这些决策树融合起来,就可以得到随机森林。

4.AdaBoost-DTree

  一棵树,如果无限制的划分下去,能够得到一颗完全长成的树,任何训练样本都能够很好地划分,也就是说我们的训练误差 ϵ = 0 \epsilon=0 ϵ=0
  对于AdaBoost来说, ϵ = 0 \epsilon=0 ϵ=0意味着缩放因子 t = ln ⁡ 1 − ϵ ϵ t=\ln \sqrt{\frac{1-\epsilon}{\epsilon}} t=lnϵ1ϵ 无限大。因此,我们需要对树做一些限制,比如不使用所有的训练样本,或者是限制树的高度。我们称它为pruned tree
  同时,使用AdaBoost还有一个问题,就是AdaBoost中的样本是有权重的,也就是说我们得实现一颗带权重的决策树。有没有办法避免这种情况呢?答案是有的。对于一个权重为x的样本,我们只要从样本集合中取出x份该样本进行训练即可。这样在决策树的训练过程中,就隐含了样本的权重。
  当树的高度只剩下两层时,这种情况下的树被称为AdaBoost-Stump

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值