Bagging是從原始數據集中進行有放回抽樣,新數據集和原始數據集的大小相等,再將算法分別作用於各個數據集得到N個分類器,最后進行投票抉擇(典型算法如:Bagging + 決策樹 = 隨機森林)
Boosting是將弱分類器組裝成一個強分類器,boosting是通過訓練集中關注被已有分類器錯分的那些數據來獲得新的分類器(典型算法如:AdaBoost + 決策樹 = 提升樹;Gradient Boosting + 決策樹 = GBDT)
Bagging和Boosting的區別:摘自http://www.cnblogs.com/liuwu265/p/4690486.html
1)樣本選擇
Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間相互獨立
Boosting:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
2)樣本權重
Bagging:使用均勻取樣,每個樣例的權重相等
Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大
3)分類器權重
Bagging:所有分類器的權重相等
Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重
4)並行
Bagging:各個分類器可以並行生成
Boosting:各個分類器只能順序生成,因為后一個模型參數需要前一輪模型的結果
Boosting有兩個主要的思考點,一是如何改變訓練數據的概率分布來學習到一系列弱分類器;二是如何將弱分類器組合成一個強分類器
AdaBoost的做法是:
一是對於前一輪分類器中分類錯誤的樣本,提高其權值,引起后一輪分類器的更大關注
二是加大分類誤差率小的分類器權值,使其在表決時起更大作用
AdaBoost詳細實例講解:http://blog.csdn.net/GYQJN/article/details/45501185
AdaBoost優缺點
優點:泛化錯誤率低,無需參數調整
缺點:對離群點敏感
為什么AdaBoost不會過擬合?
關於Adaboost,它是boosting算法,從bias-variance(偏差-方差)的角度來看,boosting算法主要關注的是降低偏差
而boosting算法每個分類器都是弱分類器,而弱分類器的特性就是high-bias & low variance(高偏差-低方差),其與生俱來的優點就是泛化性能好
因此,將多個算法組合起來之后,可以達到降偏差的效果,進而得到一個偏差小、方差小的泛化能力好的模型。
AdaBoost總結
adaboost算法首先為訓練集中的每個樣本賦予一個均分權重,構成向量D;
接着訓練第一個弱分類器,計算其錯誤率e,再調整樣本權重,提高誤分類樣本權值,進行下一輪訓練
並且,由於最終結果是由各分類器投票產生,所以還需為每個分類器計算權重值α,α是根據錯誤率e更新的,e越小,α越大
訓練過程不斷持續,直至e為0或分類器數目達到指定值時算法停止
(以上大部分內容摘自http://blog.csdn.net/dream_angel_z/article/details/52348135(推薦關注))
