1. 程式人生 > >Boosting和Bagging的區別

Boosting和Bagging的區別

 最近開始學習機器學習和資料探勘的知識 對boosting和bagging演算法進行了部分比較  在此做個總結 分享給大家。  初學不久 如果有哪裡地方理解的不到位或者錯誤的地方 歡迎大家不吝指正。

     言歸正傳。決策樹可以分為分類樹和迴歸樹兩大類。分類樹以資訊增益(率)來選擇feature,構建樹,用作分類;而回歸樹則是以均方差來選擇feature,構建樹,用作預測。boosting思想和bagging思想 都是屬於迴歸樹。這兩種方法都是把若干個分類器整合為一個分類器的方法,只是整合的方式不一樣,最終得到不一樣的效果,將不同的分類演算法套入到此類演算法

框架中一定程度上會提高了原單一分類器的分類效果,但是也增大了計算量。

下面主要談談兩者的不同:

1.樣本的選擇上

bagging:有放回的抽樣,多個訓練集時間是相互獨立的,使用多個獨立的訓練集訓練出多顆迴歸樹

Boosting:每次都是用相同的訓練集,只是改變訓練集中訓練資料的權重

2.樣本的權重

bagging:bagging中所有的樣本都是相同權重的

boosting:boosting中的樣本權重一般不是都相同的,演算法是通過增大錯誤資料的權重來修正分類器的。

3.預測函式的權重:

bagging:bagging的思想在於完全隨機的線性無關的樣本、完全相等的概率,所以得到的預測函式權重也是一樣的

boosting:它的思想是通過增大錯誤樣本的權重讓分類器把重點放在分類錯誤的樣本上來提高準確率;在預測函式權重上,給正確率高的分類器更高的權重以保證整體的正確性。

4.計算的並行性

bagging:由於訓練樣本是完全獨立的,所以多個分類器的訓練可以並行執行。

boosting:由於下一個分類器的訓練要依賴上一個分類器的分類結果,所以訓練只能是順序進行。

5.樹的深度

bagging:一般來講bagging樹深度較大,常常大於15甚至更高

boosting:構建的樹深度較小。一般為6即可。

5的解釋:泛化誤差一般包括兩部分:偏差和方差。偏差是指預測值和實際值之間的差距,表徵目標函式的準確性;而方差是衡量資料的離散程度,或者說預測函式能不能很好的擬合具有一定離散度的訓練資料,它表徵著目標函式的抗干擾性(泛化能力)。所以:

(a) bagging演算法在樣本選擇初期就選擇了很多的樣本,所以能一定程度上保證預測函式的抗干擾性即方差,在整體方差得到了保證的基礎上,它就把每個分類器的重點放在了儘量的降低偏差,即提高準確性,提高準確性就需要做更細緻的分類和擬合,所以bagging演算法可能會把樹建的非常深。

(b):boosting演算法剛好相反,boosting演算法一直使用一組訓練資料,通過錯誤資料的權重來重點關注分類出錯的資料,層層迭代,最後能夠得到很高的擬合度,即偏差非常低。所以在偏差得到保證的情況下,每個單獨的分類器需要保證方差即泛化能力。所以就把樹建立的比較淺。