關於GBDT的幾個不理解的地方?

我有兩個問題麻煩各路大神幫著解答下,我的理解是基於殘差的提升樹,樹的個數就是你迭代的次數,每次迭代生成一個回歸樹,然後最終的模型是累次迭代的疊加。而基於梯度的是每次更新一個類別的時候得到一顆回歸樹。那麼樹的個數就是分類的類別數目,可以這樣理解嗎?或者說最終的模型就是分類個數相等數目的回歸樹的疊加?謝謝!

第二個問題是,對於每個類別生成一顆回歸樹的過程,是不是就不用考慮其他K-1類的輸出概率情況(假設是k分類)。只考慮輸入特徵輸出僅僅為此類概率殘差的情況來構建一顆回歸樹。謝謝!


建議還是去看一下gbdt的wiki或者實現方法,其實仔細看過一遍之後就會很清晰了。

你的問題,「樹的個數就是分類的類別個數」,這是明顯不對的。說明你還沒有明白gbdt到底是做什麼的。說到底,它的底層還是用tree去做分類或者回歸,就像你以前所了解的tree一樣,沒什麼差別,只是這裡用的是回歸樹(可以設想,如果是做分類,其實這一棵樹已經得到所有的分類結果了);但是,為了提高精度,當使用一棵樹訓練完以後,我們還想在它的基礎上再去把它的殘差拿來做二次加工、三次加工。。。這樣就有了後面的樹。想要幾棵樹就看你自己心情了(笑)。當然這裡面也就是gradient boosting的內容了。

那麼,通過上面的描述,你就應該很清楚了,如果是k分類問題,當一個樣本輸入後,理論上(每棵樹可能不是都用到了所有的feature,而數據中的feature也有可能缺失,所以說理論上)它會經過你已經訓練好的n棵樹,並且會掉在每棵樹的某一個葉子節點上。而每個葉子節點其實也都可以表示為一個k維的向量,代表這個樣本在這棵樹上被分到這個葉子節點上的時候,其屬於每一個分類的可能性。最後,組合n課樹的結果,看這個樣本屬於哪一類的可能性最大。看公式第6步那裡:

其實gbdt除了做分類和回歸,還可以做很多其他事情,這裡就不展開討論了。


  1. 樹的個數就是最大迭代次數,與分類類別無關
  2. 前提不成立=,=

多分類問題每棵樹都是多類別分類器

實際計算的殘差 = 樣本i對應類別k的真實概率 - 上一輪預測的概率


1.都是回歸樹擬合負梯度,殘差只是均方loss負梯度的特例。

2.樹的個數和類別個數沒有關係,多類別問題每棵樹都是多類別分類器,最後ensemble


第一個問題,樹的個數與分類的類別數目沒有關係。

第二個問題貌似是基於第一個問題的,所以這個問題得前提就不對。

建議你看一下維基的解釋(Gradient boosting),非常清晰,希望能對你有所幫助。


GBDT如何做分類,或者多分類,因為GBDT使用的是回歸CART樹,所以這個問題變成了CART回歸樹如何做多分類問題,CART本來有一個分類的基於Ginni係數的,但是沒用ta,如何讓CART回歸樹,用來做分類,其實如果是k分類,就相當於有K個不同的屬性要建立回歸,比如本來回歸是要預測Age(是一個連續的值),但是如果要預測多分類,(爬行動物,兩棲,哺乳)這三類的話,就會變成分別對(爬行動物(是或者不是)單獨做一個CART回歸樹,會比較矮?也不一定,因為不一定每次二分都能夠完美分開啊)


個人感覺基於梯度就是用損失函數負梯度在當前模型的值作為殘差近似值了。。還是殘差的問題吧。而且累加的就是每次迭代學習到的『弱分類器』,和分類個數木有關係誒。


推薦閱讀:

GBDT預測時每一棵樹是否能並行?
如何評價中山大學鄭子彬教授?
如何求出libsvm中每個樣本點到超平面的歐式距離?
一張圖片上有上百種顏色,如何在一張圖上篩選出小於五種的基本色,或者在一張圖上進行顏色劃分歸類?
為何DL在NLP效果並不是特別好但是Stanford卻開設cs224d這門課?

TAG:機器學習 | adaboost | 深度學習DeepLearning | 集成學習 | xgboost |