Bagging和Boosting的區別(面試准備)


Baggging 和Boosting都是模型融合的方法,可以將弱分類器融合之后形成一個強分類器,而且融合之后的效果會比最好的弱分類器更好。

 

Bagging:

先介紹Bagging方法:

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

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

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

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

 

Boosting:

      AdaBoosting方式每次使用的是全部的樣本,每輪訓練改變樣本的權重。下一輪訓練的目標是找到一個函數f 來擬合上一輪的殘差。當殘差足夠小或者達到設置的最大迭代次數則停止。Boosting會減小在上一輪訓練正確的樣本的權重,增大錯誤樣本的權重。(對的殘差小,錯的殘差大)

      梯度提升的Boosting方式是使用代價函數對上一輪訓練出的模型函數f的偏導來擬合殘差。

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[\frac{\sum X_i}{n}]=E[X_i],所以bagging后的bias和單個子模型的接近,一般來說不能顯著降低bias。另一方面,若各子模型獨立,則有Var(\frac{\sum X_i}{n})=\frac{Var(X_i)}{n},此時可以顯著降低variance。若各子模型完全相同,則Var(\frac{\sum X_i}{n})=Var(X_i)

,此時不會降低variance。bagging方法得到的各子模型是有一定相關性的,屬於上面兩個極端狀況的中間態,因此可以一定程度降低variance。為了進一步降低variance,Random forest通過隨機選取變量子集做擬合的方式de-correlated了各子模型(樹),使得variance進一步降低。

(用公式可以一目了然:設有i.d.的n個隨機變量,方差記為\sigma^2,兩兩變量之間的相關性為\rho,則\frac{\sum X_i}{n}的方差為\rho*\sigma^2+(1-\rho)*\sigma^2/n

,bagging降低的是第二項,random forest是同時降低兩項。詳見ESL p588公式15.1)

boosting從優化角度來看,是用forward-stagewise這種貪心法去最小化損失函數L(y, \sum_i 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來提升預測精度。

 

參考資料:
鏈接:https://www.zhihu.com/question/26760839/answer/40337791

https://blog.csdn.net/u013709270/article/details/72553282

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM