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也有所不同
轉載于:https://www.cnblogs.com/guodavid/p/10162678.html