Bagging和Boosting都是將已有的分類或迴歸算法經過必定方式組合起來,造成一個性能更增強大的分類器,更準確的說這是一種分類算法的組裝方法。即將弱分類器組裝成強分類器的方法。html
首先介紹Bootstraping,即自助法:它是一種有放回的抽樣方法(可能抽到重複的樣本)。算法
一、Bagging (bootstrap aggregating)bootstrap
Bagging即套袋法,其算法過程以下:api
A)從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被屢次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,獲得k個訓練集。(k個訓練集之間是相互獨立的)框架
B)每次使用一個訓練集獲得一個模型,k個訓練集共獲得k個模型。(注:這裏並無具體的分類算法或迴歸方法,咱們能夠根據具體問題採用不一樣的分類或迴歸方法,如決策樹、感知器等)機器學習
C)對分類問題:將上步獲得的k個模型採用投票的方式獲得分類結果;對迴歸問題,計算上述模型的均值做爲最後的結果。(全部模型的重要性相同)函數
二、Boosting性能
其主要思想是將弱分類器組裝成一個強分類器。在PAC(機率近似正確)學習框架下,則必定能夠將弱分類器組裝成一個強分類器。學習
關於Boosting的兩個核心問題:spa
1)在每一輪如何改變訓練數據的權值或機率分佈?
經過提升那些在前一輪被弱分類器分錯樣例的權值,減少前一輪分對樣例的權值,來使得分類器對誤分的數據有較好的效果。
2)經過什麼方式來組合弱分類器?
經過加法模型將弱分類器進行線性組合,好比AdaBoost經過加權多數表決的方式,即增大錯誤率小的分類器的權值,同時減少錯誤率較大的分類器的權值。
而提高樹經過擬合殘差的方式逐步減少殘差,將每一步生成的模型疊加獲得最終模型。
三、Bagging,Boosting兩者之間的區別
Bagging和Boosting的區別:
1)樣本選擇上:
Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。
Boosting:每一輪的訓練集不變,只是訓練集中每一個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
2)樣例權重:
Bagging:使用均勻取樣,每一個樣例的權重相等
Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。
3)預測函數:
Bagging:全部預測函數的權重相等。
Boosting:每一個弱分類器都有相應的權重,對於分類偏差小的分類器會有更大的權重。
4)並行計算:
Bagging:各個預測函數能夠並行生成
Boosting:各個預測函數只能順序生成,由於後一個模型參數須要前一輪模型的結果。
四、總結
這兩種方法都是把若干個分類器整合爲一個分類器的方法,只是整合的方式不同,最終獲得不同的效果,將不一樣的分類算法套入到此類算法框架中必定程度上會提升了原單一分類器的分類效果,可是也增大了計算量。
下面是將決策樹與這些算法框架進行結合所獲得的新的算法:
1)Bagging + 決策樹 = 隨機森林
2)AdaBoost + 決策樹 = 提高樹
3)Gradient Boosting + 決策樹 = GBDT
參考文獻
[1] 林軒田,機器學習技法。
[2] IRLAB, http://www.cnblogs.com/guolei/archive/2013/05/21/3091301.html
[3] 百度技術,http://baidutech.blog.51cto.com/4114344/743809/