從AdaBoost到GBDT(part 2)


注:本文假設讀者已經有了AdaBoost和GBDT的背景知識。


看到網上關於AdaBoost和GBDT資料都不少,可是鮮有資料介紹他們聯繫,剛好之前有看過,最近複習到此,覺得有所收穫,所以記錄下來。此爲讀書筆記,若有錯誤,請予糾正。

前情概要:涉及公式較多,如要閱讀,請提前找一個安靜場所。

轉載請標明出處:http://blog.csdn.net/wuzqchom/article/details/69487888
本篇文章分爲兩部分,第一部分:http://blog.csdn.net/wuzqChom/article/details/69487847

從AdaBoost到GBDT

若上面的式子使用梯度下降求解,則可將式子變換爲:

minηminh1NNn=1exp(yn(T1t=1αtgt(xn)+ηh(xn)))

h 可以想象爲一個方向,η 爲往該方向走多遠,和梯度下降完全一個概念。對應到AdaBoost上面,h 即爲一棵決策樹,而η 即爲該樹的權重。
上面的AdaBoost損失函數是指數函數,把它generalize一點:

minηminh1NNn=1err(T1t=1αtgt(xn)+ηh(xn),yn)

上面的式子就是GradientBoost 的優化式子了。但是損失函數要求平滑。
err 損失函數換成squared-error,並一階泰勒展開(先不考慮η ):

minh1Nn=1Nerr(t=1T1αtgt(xn)sn+ηh(xn),yn)minh1Nn=1Nerr(sn,yn)+1Nn=1Nηh(xn)2(snyn)

由於我們現在是要優化關於h 的函數,所以第一項可以看成是常數,還記得嗎,h 即相當於確定了一個方向而已,至於走多遠,我們可以交由η 來決定(即第二步優化確定),但我們目前僅關注應該往哪個方向走。我們可以加限制條件令h 的長度爲1,但是約束化的優化問題比較不容易求,可以加一個L2正則轉換成無約束的優化問題。上式就變成了:

minhC1+ηNn=1N(h(xn)2(snyn)+(h(xn))2)=C1+ηNn=1N(C2+(h(xn)(ynsn))2)

C1,C2 爲常數項,第一個式子到第二個式子用了配方,並把無關項設爲常數C2 .
從上面的式子可以看出,加了正則化的優化目標即爲求平方錯誤的迴歸問題{xn,ynsn} ,ynsn 即爲殘差。GBDT每一棵決策樹就是爲了擬合殘差,這是朝着h 方向走的結果,而h 爲一個函數,在GBDT當中即爲一棵決策樹。
好了,現在我們方向找到了,究竟應該朝這個方向走多遠,那麼就是η 來決定啦。優化η 容易得多,即爲單變量的優化問題(注意此時已經從g 的集合h 中找到了最優的gt ):
minη1Nn=1N(yn(t=1T1αtgt(xn)sn+ηgt(xn)yn))2=1N((ynsn)ηgt(xn))2

又見殘差!!
經過上述的優化之後,我們就得到了αtgt ,對了,上述所說的準確來說還只是GB迴歸問題,假如我們的每一個g 都是有決策樹學術來的,那麼就是我們要的GBDT了。
簡單總結一下GBDT的過程:
  1. 用決策樹算法學,以{xn,ynsn} 爲目標學得棵決策樹gt
  2. 在學得gt 之後,解{gt(xn) ,ynsn }的單變量的線性迴歸問題得到αt
  3. 更新sn=sn+αtgt(xn)
  4. 重複1-3,到一定次數爲止,返回G(x)=Tt=1αtgt(x)

ps:
GBDT實際上是用迴歸樹來作爲基分類器,所以用GBRT可能更合適一點。

The end.

參考資料:林軒田. 機器學習技法課程 Lecture 11.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章