1. 程式人生 > 其它 >機器學習-GBDT演算法理解

機器學習-GBDT演算法理解

GB and AdaBoost

梯度提升(Gradient boosting)是一種用於迴歸、分類和排序任務的機器學習技術,屬於Boosting演算法族的一部分。Boosting是一族可將弱學習器提升為強學習器的演算法,屬於整合學習(ensemble learning)的範疇。

Boosting方法基於這樣一種思想:對於一個複雜任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比其中任何一個專家單獨的判斷要好。通俗地說,就是“三個臭皮匠頂個諸葛亮”的道理。梯度提升同其他boosting方法一樣,通過整合(ensemble)多個弱學習器,通常是決策樹,來構建最終的預測模型。

Boosting

baggingstacking是整合學習的三種主要方法。不同於bagging方法,boosting方法通過分步迭代(stage-wise)的方式來構建模型,在迭代的每一步構建的弱學習器都是為了彌補已有模型的不足。Boosting族演算法的著名代表是AdaBoost,AdaBoost演算法通過給已有模型預測錯誤的樣本更高的權重使得先前的學習器做錯的訓練樣本在後續受到更多的關注的方式來彌補已有模型的不足

與AdaBoost演算法不同,梯度提升方法在迭代的每一步構建一個能夠沿著梯度最陡的方向降低損失(steepest-descent)的學習器來彌補已有模型的不足。經典的AdaBoost演算法只能處理採用指數損失函式的二分類學習任務,而梯度提升方法通過設定不同的可微損失函式可以處理各類學習任務(多分類、迴歸、Ranking等),應用範圍大大擴充套件。
另一方面,AdaBoost演算法對異常點(outlier)比較敏感

,而梯度提升演算法通過引入bagging思想、加入正則項等方法能夠有效地抵禦訓練資料中的噪音,具有更好的健壯性。這也是為什麼梯度提升演算法(尤其是採用決策樹作為弱學習器的GBDT演算法)如此流行的原因,有種觀點認為GBDT是效能最好的機器學習演算法,這當然有點過於激進又固步自封的味道,但通常各類機器學習演算法比賽的贏家們都非常青睞GBDT演算法,由此可見該演算法的實力不可小覷。