1. 程式人生 > >『機器學習筆記 』GBDT原理-Gradient Boosting Decision Tree

『機器學習筆記 』GBDT原理-Gradient Boosting Decision Tree

1. 背景

決策樹是一種基本的分類迴歸方法。決策樹模型具有分類速度快,模型容易視覺化的解釋,但是同時是也有容易發生過擬合,雖然有剪枝,但也是差強人意。

提升方法boosting)在分類問題中,它通過改變訓練樣本的權重(增加分錯樣本的權重,減小分隊樣本的的權重),學習多個分類器,並將這些分類器線性組合,提高分類器效能。boosting數學表示為:

f(x)=w0+m=1Mwmϕm(x)

其中w是權重,ϕ是弱分類器的集合,可以看出最終就是基函式的線性組合。

於是決策樹與boosting結合產生許多演算法,主要有提升樹、GBDT等。本文主要是GBDT學習筆記。

1.1 Gradient Boosting

Gradient Boosting是一種Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型損失函式的梯度下降方向。損失函式是評價模型效能(一般為擬合程度+正則項),認為損失函式越小,效能越好。而讓損失函式持續下降,就能使得模型不斷改性提升效能,其最好的方法就是使損失函式沿著梯度方向下降(講道理梯度方向上下降最快)。

Gradient Boost是一個框架,裡面可以套入很多不同的演算法。

1.2 提升樹-boosting tree

以決策樹為基函式的提升方法稱為提升樹,其決策樹可以是分類樹OR迴歸樹。提升樹模型可以表示為決策樹的加法模型。

fM(x)=m=1MT(x;Θm)
其中,T(x;Θm)Θm表示樹的引數,M為樹的個數。

迴歸問題提升樹演算法

輸入:訓練資料集T={(x1,y1),(x2,y2),···,(xN,yN)},xiχ=Rn,yiγ,i=1,2,···,Nγ為輸出空間。

輸出:提升樹fM(x)

  1. 初始化f0(x)=0

  2. 對於m=1,2,...M:

    1. 計算殘差(後一棵樹擬合前一顆樹殘差):

      rmi=yifm1(xi)
    2. 擬合殘差學習一個迴歸樹,得到T(x;Θm)

    3. 更新fm(x)=fm1(x)+T(x;Θm)

  3. M次迭代之後得到提升樹:

    fM(x)=m=1MT(x;Θm)

2 Gradient Boosting Decision Tree

提升樹的學習優化過程中,損失函式平方損失和指數損失時候,每一步優化相對簡單,但對於一般損失函式優化的問題,Freidman提出了Gradient Boosting演算法,其利用了損失函式的負梯度在當前模型的值

[L(y,f(xi))f(xi)]f(x)=fm1(x)
作為迴歸問題提升樹演算法的殘差近似值,去擬合一個迴歸樹。

2.1 函式空間的數值優化

優化目標是使得損失函式最小,(N是樣本集合大小):