Bagging和Boosting的区别(面试准备)
Baggging 和Boosting都是模型融合的方法,可以將弱分類器融合之后形成一個強(qiáng)分類器,而且融合之后的效果會比最好的弱分類器更好。
?
Bagging:
先介紹Bagging方法:
Bagging即套袋法,其算法過程如下:
從原始樣本集中抽取訓(xùn)練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓(xùn)練樣本(在訓(xùn)練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進(jìn)行k輪抽取,得到k個訓(xùn)練集。(k個訓(xùn)練集之間是相互獨立的)
每次使用一個訓(xùn)練集得到一個模型,k個訓(xùn)練集共得到k個模型。(注:這里并沒有具體的分類算法或回歸方法,我們可以根據(jù)具體問題采用不同的分類或回歸方法,如決策樹、感知器等)
對分類問題:將上步得到的k個模型采用投票的方式得到分類結(jié)果;對回歸問題,計算上述模型的均值作為最后的結(jié)果。(所有模型的重要性相同)
?
Boosting:
? ? ? AdaBoosting方式每次使用的是全部的樣本,每輪訓(xùn)練改變樣本的權(quán)重。下一輪訓(xùn)練的目標(biāo)是找到一個函數(shù)f 來擬合上一輪的殘差。當(dāng)殘差足夠小或者達(dá)到設(shè)置的最大迭代次數(shù)則停止。Boosting會減小在上一輪訓(xùn)練正確的樣本的權(quán)重,增大錯誤樣本的權(quán)重。(對的殘差小,錯的殘差大)
? ? ? 梯度提升的Boosting方式是使用代價函數(shù)對上一輪訓(xùn)練出的模型函數(shù)f的偏導(dǎo)來擬合殘差。
Bagging,Boosting二者之間的區(qū)別
Bagging和Boosting的區(qū)別:
1)樣本選擇上:
Bagging:訓(xùn)練集是在原始集中有放回選取的,從原始集中選出的各輪訓(xùn)練集之間是獨立的。
Boosting:每一輪的訓(xùn)練集不變,只是訓(xùn)練集中每個樣例在分類器中的權(quán)重發(fā)生變化。而權(quán)值是根據(jù)上一輪的分類結(jié)果進(jìn)行調(diào)整。
2)樣例權(quán)重:
Bagging:使用均勻取樣,每個樣例的權(quán)重相等
Boosting:根據(jù)錯誤率不斷調(diào)整樣例的權(quán)值,錯誤率越大則權(quán)重越大。
3)預(yù)測函數(shù):
Bagging:所有預(yù)測函數(shù)的權(quán)重相等。
Boosting:每個弱分類器都有相應(yīng)的權(quán)重,對于分類誤差小的分類器會有更大的權(quán)重。
4)并行計算:
Bagging:各個預(yù)測函數(shù)可以并行生成
Boosting:各個預(yù)測函數(shù)只能順序生成,因為后一個模型參數(shù)需要前一輪模型的結(jié)果。
5)這個很重要面試被問到了
為什么說bagging是減少variance,而boosting是減少bias?
Bagging對樣本重采樣,對每一重采樣得到的子樣本集訓(xùn)練一個模型,最后取平均。由于子樣本集的相似性以及使用的是同種模型,因此各模型有近似相等的bias和variance(事實上,各模型的分布也近似相同,但不獨立)。由于,所以bagging后的bias和單個子模型的接近,一般來說不能顯著降低bias。另一方面,若各子模型獨立,則有,此時可以顯著降低variance。若各子模型完全相同,則
,此時不會降低variance。bagging方法得到的各子模型是有一定相關(guān)性的,屬于上面兩個極端狀況的中間態(tài),因此可以一定程度降低variance。為了進(jìn)一步降低variance,Random forest通過隨機(jī)選取變量子集做擬合的方式de-correlated了各子模型(樹),使得variance進(jìn)一步降低。
(用公式可以一目了然:設(shè)有i.d.的n個隨機(jī)變量,方差記為,兩兩變量之間的相關(guān)性為,則的方差為
,bagging降低的是第二項,random forest是同時降低兩項。詳見ESL p588公式15.1)
boosting從優(yōu)化角度來看,是用forward-stagewise這種貪心法去最小化損失函數(shù)。例如,常見的AdaBoost即等價于用這種方法最小化exponential loss:。所謂forward-stagewise,就是在迭代的第n步,求解新的子模型f(x)及步長a(或者叫組合系數(shù)),來最小化,這里
是前n-1步得到的子模型的和。因此boosting是在sequential地最小化損失函數(shù),其bias自然逐步下降。但由于是采取這種sequential、adaptive的策略,各子模型之間是強(qiáng)相關(guān)的,于是子模型之和并不能顯著降低variance。所以說boosting主要還是靠降低bias來提升預(yù)測精度。
?
參考資料:
鏈接:https://www.zhihu.com/question/26760839/answer/40337791
https://blog.csdn.net/u013709270/article/details/72553282
?
轉(zhuǎn)載于:https://www.cnblogs.com/earendil/p/8872001.html
總結(jié)
以上是生活随笔為你收集整理的Bagging和Boosting的区别(面试准备)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫学习day1
- 下一篇: Scala学习之路 (六)Scala的类