1. 程式人生 > >機器學習(七)—Adaboost 和 梯度提升樹GBDT

機器學習(七)—Adaboost 和 梯度提升樹GBDT

獲得 決策樹 info gin 否則 它的 均方差 但是 ont

1、Adaboost算法原理,優缺點:

  理論上任何學習器都可以用於Adaboost.但一般來說,使用最廣泛的Adaboost弱學習器是決策樹和神經網絡。對於決策樹,Adaboost分類用了CART分類樹,而Adaboost回歸用了CART回歸樹。

  Adaboost算法可以簡述為三個步驟:

  (1)首先,是初始化訓練數據的權值分布D1。假設有N個訓練樣本數據,則每一個訓練樣本最開始時,都被賦予相同的權值:w1=1/N。

  (2)然後,訓練弱分類器hi。具體訓練過程中是:如果某個訓練樣本點,被弱分類器hi準確地分類,那麽在構造下一個訓練集中,它對應的權值要減小;相反,如果某個訓練樣本點被錯誤分類,那麽它的權值就應該增大。權值更新過的樣本集被用於訓練下一個分類器,整個訓練過程如此叠代地進行下去。

  (3)最後,將各個訓練得到的弱分類器組合成一個強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,使其在最終的分類函數中起著較大的決定作用,而降低分類誤差率大的弱分類器的權重,使其在最終的分類函數中起著較小的決定作用。

  換而言之,誤差率低的弱分類器在最終分類器中占的權重較大,否則較小。

  Adaboost的主要優點有:

    1)Adaboost作為分類器時,分類精度很高。

    2)在Adaboost的框架下,可以使用各種回歸分類模型來構建弱學習器,不用對特征進行篩選,非常靈活。

    3)作為簡單的二元分類器時,構造簡單,結果可理解。

    4)不容易發生過擬合。

  Adaboost的主要缺點有:

    1)對異常樣本敏感,異常樣本在叠代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。

  算法推導見筆記。

2、GBDT算法原理

  GBDT在BAT大廠中也有廣泛的應用,假如要選擇3個最重要的機器學習算法的話,個人認為GBDT應該占一席之地。

  基本思想:積跬步以至千裏,每次學習一點。先用一個初始值來學習一棵決策樹,葉子處可以得到預測的值,以及預測之後的殘差,然後後面的決策樹就是要基於前面決策樹的殘差來學習,直到預測值和真實值的殘差為0。最後對於測試樣本的預測值,就是前面許多棵決策樹預測值的累加

  GBDT的思想可以用一個通俗的例子解釋,假如有個人30歲,我們首先用20歲去擬合,發現損失有10歲,這時我們用6歲去擬合剩下的損失,發現差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的叠代輪數還沒有完,可以繼續叠代下面,每一輪叠代,擬合的歲數誤差都會減小。

  GBDT也是叠代,使用了前向分布算法,但是弱學習器限定了只能使用CART回歸樹模型.(GBDT的會累加所有樹的結果,而這種累加是無法通過分類完成的,因此GBDT的樹都是CART回歸樹,而不是分類樹(盡管GBDT調整後也可以用於分類但不代表GBDT的樹為分類樹))

  它的每一次計算都是為了減少上一次的殘差,而為了消除殘差,我們可以在殘差減小的梯度方向上建立模型,所以說,在GradientBoost中,每個新的模型的建立是為了使得之前的模型的殘差往梯度下降的方法,與傳統的Boosting中關註正確錯誤的樣本加權有著很大的區別。

  通過損失函數的負梯度來擬合,我們找到了一種通用的擬合損失誤差的辦法,這樣無輪是分類問題還是回歸問題,我們通過其損失函數的負梯度的擬合,就可以用GBDT來解決我們的分類回歸問題。區別僅僅在於損失函數不同導致的負梯度不同而已。

3、GBDT算法步驟

  損失函數主要有:指數損失、對數損失、均方差、絕對損失

  對於回歸問題:

  技術分享圖片

  技術分享圖片

  對於分類問題:樣本輸出不是連續的值,而是離散的類別,導致我們無法直接從輸出類別去擬合類別輸出的誤差。

  主要有兩個方法:一個是用指數損失函數,此時GBDT退化為Adaboost算法。另一種方法是用類似於邏輯回歸的對數似然損失函數的方法。也就是說,我們用的是類別的預測概率值和真實概率值的差來擬合損失。

4、優缺點:

  目前GBDT的算法比較好的庫是xgboost。當然scikit-learn也可以。

    GBDT主要的優點有:

    1) 可以靈活處理各種類型的數據,包括連續值和離散值。

    2) 在相對少的調參時間情況下,預測的準備率也可以比較高。這個是相對SVM來說的。

    3)使用一些健壯的損失函數,對異常值的魯棒性非常強。比如 Huber損失函數和Quantile損失函數。

    GBDT的主要缺點有:

    1)由於弱學習器之間存在依賴關系,難以並行訓練數據。不過可以通過自采樣的SGBT來達到部分並行。

5、GBDT和隨機森林對比

  相同點:1.都是由多棵樹組成;2.最終的結果都是由多棵樹一起決定;

  不同點:(1)隨機森林的子樹可以是分類或回歸樹,而GBDT只能是回歸樹;

      (2)基於bagging思想,而gbdt是boosting思想,即采樣方式不同

      (3)隨機森林可以並行生成,而GBDT只能是串行;

      (4)輸出結果,隨機森林采用多數投票,GBDT將所有結果累加起來;

      (5)隨機森林對異常值不敏感,GBDT敏感,隨進森林減少方差,GBDT減少偏差;

6、GBDT和隨機森林哪個容易過擬合?

  隨機森林,因為隨機森林的決策樹嘗試擬合數據集,有潛在的過擬合風險,而boosting的GBDT的決策樹則是擬合數據集的殘差,然後更新殘差,由新的決策樹再去擬合新的殘差,雖然慢,但是難以過擬合。

機器學習(七)—Adaboost 和 梯度提升樹GBDT