閱讀816 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機器學習中Bagging和Boosting的區別

       Bagging和Boosting都是將已有的分類或回歸算法通過一定方式組合起來,形成一個性能更加強大的分類器,更準確的說這是一種分類算法的組裝方法。即將弱分類器組裝成強分類器的方法。

       首先介紹Bootstraping,即自助法:它是一種有放回的抽樣方法(可能抽到重複的樣本)。

1. Bagging (bootstrap aggregating)

Bagging即套袋法,其算法過程如下:

  1. 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是相互獨立的)

  2. 每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。(注:這裏並沒有具體的分類算法或回歸方法,我們可以根據具體問題采用不同的分類或回歸方法,如決策樹、感知器等)

  3. 對分類問題:將上步得到的k個模型采用投票的方式得到分類結果;對回歸問題,計算上述模型的均值作為最後的結果。(所有模型的重要性相同)

2. Boosting

       其主要思想是將弱分類器組裝成一個強分類器。在PAC(概率近似正確)學習框架下,則一定可以將弱分類器組裝成一個強分類器。

關於Boosting的兩個核心問題:

2.1 在每一輪如何改變訓練數據的權值或概率分布?

       通過提高那些在前一輪被弱分類器分錯樣例的權值,減小前一輪分對樣例的權值,來使得分類器對誤分的數據有較好的效果。

2.2 通過什麼方式來組合弱分類器?

       通過加法模型將弱分類器進行線性組合,比如AdaBoost通過加權多數表決的方式,即增大錯誤率小的分類器的權值,同時減小錯誤率較大的分類器的權值。

而提升樹通過擬合殘差的方式逐步減小殘差,將每一步生成的模型疊加得到最終模型。

3. Bagging,Boosting二者之間的區別

Bagging和Boosting的區別:

1)樣本選擇上:

Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。

Boosting:每一輪的訓練集不變,隻是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。

2)樣例權重:

Bagging:使用均勻取樣,每個樣例的權重相等

Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。

3)預測函數:

Bagging:所有預測函數的權重相等。

Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重。

4)並行計算:

Bagging:各個預測函數可以並行生成

Boosting:各個預測函數隻能順序生成,因為後一個模型參數需要前一輪模型的結果。

4. 總結

       這兩種方法都是把若幹個分類器整合為一個分類器的方法,隻是整合的方式不一樣,最終得到不一樣的效果,將不同的分類算法套入到此類算法框架中一定程度上會提高了原單一分類器的分類效果,但是也增大了計算量。

下麵是將決策樹與這些算法框架進行結合所得到的新的算法:

  1. Bagging + 決策樹 = 隨機森林

  2. AdaBoost + 決策樹 = 提升樹

  3. Gradient Boosting + 決策樹 = GBDT

最後更新:2017-09-19 14:02:36

  上一篇:go  《大數據分析原理與實踐》——第3章 關聯分析模型
  下一篇:go  政府安全資訊精選 2017年第八期 等保檢查工作、網絡安全威脅監測與處置辦法細化,監管有據可依