GBDT的基本原理


這里以二元分類為例子,給出最基本原理的解釋

   

GBDT 是多棵樹的輸出預測值的累加

GBDT的樹都是 回歸樹 而不是分類樹

   

  1. 分類樹

   

分裂的時候選取使得誤差下降最多的分裂

計算的技巧

最終分裂收益按照下面的方式計算,注意圓圈內的部分是固定值

  1. GBDT 二分類

GBDT在實現中可以完全復用上面的計算方法框架,只是我們的優化的目標函數不同。

這里使用的是 指數誤差函數,不管是預測正確還是錯誤 誤差值都存在,但是正確的預測 會使得誤差值小於錯誤的預測 參考

AdaBoost and the Super Bowl of Classiers

A Tutorial Introduction to Adaptive Boosting

關於常用誤差函數 參考 http://www.cnblogs.com/rocketfan/p/4083821.html

   

參考 Greedy Functon Approximation:A Gradient Boosting Machine

4.4節關於二分類情況誤差函數的設計

這里其實和上面給出的一樣,只是增加了 log(1 +, 另外多了一個2,2yF), 參考前面的LossFunction http://www.cnblogs.com/rocketfan/p/4083821.html

的推導,其實這個應該算作LogLoss或者說是logistic regression, cross entropy error,也就是從probablity出發的logloss推導到output F(x)的表示就是上面的

式子,而它看上去剛好就是一個指數誤差函數。

嚴格意義上說是LogLoss不是指數誤差 不過LogLoss和指數誤差看上去比較相似。

   

這個F值其實就是邏輯回歸的思路,類似 語音語言處理一書27頁解釋,線性加權的值(output)用來預測 p(true)和p(false)的比例的log值(回歸值是實數范圍取值不適合預測0-1,做了一個轉換),越是接近true,那么F(x)越接近+無窮(對應最大可能性判斷true), p(false)越大 那么越接近-無窮(對應最大可能性判斷false)

   

F(X) 對應 feature X 當前的回歸預測值也就是多棵樹經過決策到達葉子節點的輸出值output(x)的累加值。N個樣本則F(x)N個維度,當開始沒有分裂的時候所有樣本在一個節點則所有F(x)對應一個相同的值,分裂一次后兩個葉子節點則F(X)對應可能到不同的葉子節點從而可能有兩個不同的值。

對誤差函數計算關於F的梯度,誤差函數是

變量是F(x)

   

考慮learning_rate之后是 (@TODO)

F(X) 對應 葉子節點中一個樣本對應它的feature X 當前的預測值

參考 機器學習概率角度 一書的16

   

   

我們的分裂目標從上面回歸樹基本算法中的希望逼近y 變成了 逼近梯度值 r_im

也就是說當前樹是預測負梯度值的。

F_m(x) = F_m-1(x) + learning_rate*(當前樹的預測值(也就是預測負梯度..)) //@TODO check

   

再對比下ng課件最簡單的梯度下降 針對regression的例子

   

我們采用的每顆樹更新策略是針對F(x)的,而F(x)沿着梯度的方向的累加,目標是使得我們的

誤差函數達到最小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM