Bagging和Boosting的介紹及對比

  「團結就是力量」這句老話很好地表達了機器學習領域中強大「集成方法」的基本思想。總的來講,許多機器學習競賽(包括 Kaggle)中最優秀的解決方案所採用的集成方法都創建在一個這樣的假設上:將多個模型組合在一塊兒一般能夠產生更強大的模型。html

1、集成方法

  集成(Ensemble)方法就是針對同一任務,將多個或多種分類器進行融合,從而提升總體模型的泛化能力。對於一個複雜任務,將多個模型進行適當地綜合所得出的判斷,一般要比任何一個單獨模型的判讀好。也就是咱們常說的「三個臭皮匠,頂過諸葛亮」。算法

  不過對於組合分類器必須知足兩點:api

  (1) 基模型之間應該是相互獨立的
  (2) 基模型應好於隨機猜想模型框架

  集成方法目前分爲兩種:Bagging 與 Boosting,下面分別介紹。dom

2、Bagging算法(套袋法)

  bagging的算法過程以下:機器學習

  一、從原始樣本集中使用Bootstraping 方法隨機抽取n個訓練樣本,共進行k輪抽取,獲得k個訓練集(k個訓練集之間相互獨立,元素能夠有重複)。ide

  二、對於n個訓練集,咱們訓練k個模型(這個模型可根據具體的狀況而定,能夠是決策樹,KNN等)。函數

  三、對於分類問題:由投票表決產生的分類結果;對於迴歸問題,由k個模型預測結果的均值做爲最後預測的結果(全部模型的重要性相同)。學習

3、Boosting(提高法)

  boosting的算法過程以下:優化

  一、對於訓練集中的每一個樣本創建權值$w_{i}$,表示對每一個樣本的權重, 其關鍵在與對於被錯誤分類的樣本權重會在下一輪的分類中得到更大的權重(錯誤分類的樣本的權重增長)。

  二、同時加大分類偏差機率小的弱分類器的權值,使其在表決中起到更大的做用,減少分類偏差率較大弱分類器的權值,使其在表決中起到較小的做用。每一次迭代都獲得一個弱分類器,須要使用某種策略將其組合,最爲最終模型(AbaBoost給每一個迭代以後的弱分類器一個權值,將其線性組合做爲最終的分類器,偏差小的分類器權值越大)。

  關於Boosting的兩個核心問題:

  一、在每一輪如何改變訓練數據的權值或機率分佈?

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

  二、經過什麼方式來組合弱分類器?

  經過加法模型將弱分類器進行線性組合,好比AdaBoost經過加權多數表決的方式,即增大錯誤率小的分類器的權值,同時減少錯誤率較大的分類器的權值。而提高樹經過擬合殘差的方式逐步減少殘差,將每一步生成的模型疊加獲得最終模型。 

4、Bagging、Boosting兩者之間的區別

  Bagging和Boosting的區別:

  1)樣本選擇上:

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

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

  2)樣例權重:

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

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

  3)預測函數:

  Bagging:全部預測函數的權重相等。

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

  4)並行計算:

  Bagging:各個預測函數能夠並行生成

  Boosting:各個預測函數只能順序生成,由於後一個模型參數須要前一輪模型的結果。

  5)Bagging是減小variance(方差),而Boosting是減小bias(誤差)

  Bagging對樣本重採樣,對每一重採樣獲得的子樣本集訓練一個模型,最後取平均。因爲子樣本集的類似性以及使用的是同種模型,所以各模型有近似相等的bias和variance(事實上,各模型的分佈也近似相同,但不獨立)。因爲$E\left [ \frac{\sum X_{i}}{n} \right ]=E\left [X_{i} \right ]$,因此bagging後的bias和單個子模型的接近,通常來講不能顯著下降bias。另外一方面,若各子模型獨立,則有$Var\left ( \frac{\sum X_{i}}{n} \right )=\frac{Var\left (X_{i} \right )}{n}$,此時能夠顯著下降variance。若各子模型徹底相同,則$Var\left ( \frac{\sum X_{i}}{n} \right )=Var\left (X_{i} \right )$,此時不會下降variance。bagging方法獲得的各子模型是有必定相關性的,屬於上面兩個極端情況的中間態,所以能夠必定程度下降variance。爲了進一步下降variance,Random forest經過隨機選取變量子集作擬合的方式de-correlated了各子模型(樹),使得variance進一步下降。(用公式能夠一目瞭然:設有i.d.的n個隨機變量,方差記爲$\sigma ^{2}$,兩兩變量之間的相關性爲$\rho $,則$\frac{\sum X_{i}}{n}$的方差爲$\rho \ast \sigma ^{2}+(1-\rho )\ast \sigma ^{2}/n$,Bagging下降的是第二項,Random Forest是同時下降兩項。)

  Boosting從優化角度來看,是用Forward-Stagewise這種貪心法去最小化損失函數$L(y,\sum a_{i}f_{i}(x))$。例如,常見的AdaBoost即等價於用這種方法最小化Exponential Loss:$L(y,f(x))=exp(-yf(x))$。所謂Forward-Stagewise,就是在迭代的第n步,求解新的子模型$f(x)$及步長$a$(或者叫組合係數),來最小化$L(y,f_{n-1}(x)+af(x))$,這裏$f_{n-1}(x)$是前n-1步獲得的子模型的和。所以Boosting是在Sequential地最小化損失函數,其bias天然逐步降低。但因爲是採起這種Sequential、Adaptive的策略,各子模型之間是強相關的,因而子模型之和並不能顯著下降variance。因此說Boosting主要仍是靠下降bias來提高預測精度。 

5、總結

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

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

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

  2)AdaBoost + 決策樹 = 提高樹

  3)Gradient Boosting + 決策樹 = GBDT

 

參考

https://baijiahao.baidu.com/s?id=1633580172255481867&wfr=spider&for=pc

https://www.pianshen.com/article/1393124418/

http://www.javashuo.com/article/p-cafqqqxe-v.html

http://www.javashuo.com/article/p-fjkcqlep-me.html

相關文章
相關標籤/搜索