1. 程式人生 > >Boosting學習筆記(Adboost、GBDT、Xgboost)

Boosting學習筆記(Adboost、GBDT、Xgboost)

http://www.cnblogs.com/willnote/p/6801496.html 總結得不錯

AdaBoost是最著名的Boosting族演算法。開始時,所有樣本的權重相同,訓練得到第一個基分類器。從第二輪開始,每輪開始前都先根據上一輪基分類器的分類效果調整每個樣本的權重,上一輪分錯的樣本權重提高,分對的樣本權重降低。之後根據新得到樣本的權重指導本輪中的基分類器訓練,即在考慮樣本不同權重的情況下得到本輪錯誤率最低的基分類器。重複以上步驟直至訓練到約定的輪數結束,每一輪訓練得到一個基分類器

AdaBoost演算法可以認為是一種模型為加法模型、損失函式為指數函式、學習演算法為前向分步演算法的而分類學習方法

 

GBDT

GBDT與Adboost最主要的區別在於兩者如何識別模型的問題。Adaboost用錯分資料點來識別問題,通過調整錯分資料點的權重來改進模型。GBDT通過負梯度來識別問題,通過計算負梯度來改進模型。

 

xgboost

xgboost 的全稱是eXtreme Gradient Boosting

GBDT演算法只利用了一階的導數資訊,xgboost對損失函式做了二階的泰勒展開,並在目標函式之外加入了正則項對整體求最優解,用以權衡目標函式的下降和模型的複雜程度,避免過擬合。所以不考慮細節方面,兩者最大的不同就是目標函式的定義

Bagging(套袋法)

bagging的演算法過程如下:

1、從原始樣本集中使用Bootstraping方法隨機抽取n個訓練樣本,共進行k輪抽取,得到k個訓練集。(k個訓練集之間相互獨立,元素可以有重複)
2、對於k個訓練集,我們訓練k個模型(這k個模型可以根據具體問題而定,比如決策樹,knn等)
3、對於分類問題:由投票表決產生分類結果;
對於迴歸問題:由k個模型預測結果的均值作為最後預測結果。(所有模型的重要性相同)

Boosting(提升法)

boosting的演算法過程如下:

1、對於訓練集中的每個樣本建立權值wi,表示對每個樣本的關注度。當某個樣本被誤分類的概率很高時,需要加大對該樣本的權值。
2、進行迭代的過程中,每一步迭代都是一個弱分類器。我們需要用某種策略將其組合,作為最終模型。
(例如AdaBoost給每個弱分類器一個權值,將其線性組合最為最終分類器。誤差越小的弱分類器,權值越大)

Bagging,Boosting的主要區別

1、樣本選擇上:
Bagging採用的是Bootstrap隨機有放回抽樣;
而Boosting每一輪的訓練集是不變的,改變的只是每一個樣本的權重。

2、樣本權重:
Bagging使用的是均勻取樣,每個樣本權重相等;
Boosting根據錯誤率調整樣本權重,錯誤率越大的樣本權重越大。

3、預測函式:
Bagging所有的預測函式的權重相等;
Boosting中誤差越小的預測函式其權重越大。

4、平行計算:
Bagging各個預測函式可以並行生成;
Boosting各個預測函式必須按順序迭代生成。
       1)Bagging + 決策樹 = 隨機森林 RF 

  •        2)AdaBoost + 決策樹 = 提升樹  
  •       3)Gradient Boosting + 決策樹 = GBDT
  • 常用的決策樹演算法有ID3,C4.5,CART三種。

1、CART樹是二叉樹,而ID3和C4.5可以是多叉樹 
2、CART在生成子樹時,是選擇一個特徵一個取值作為切分點,生成兩個子樹 
選擇特徵和切分點的依據是基尼指數,選擇基尼指數最小的特徵及切分點生成子樹

 

梯度提升決策樹GBDT

Gradient Boosting Decision Tree

GBDT也是迭代,使用了前向分佈演算法,但是弱學習器限定了只能使用CART迴歸樹模型,同時迭代思路和Adaboost也有所不同