Baggging 和Boosting都是模型融合的方法,可以將弱分類器融合之后形成一個強分類器,而且融合之后的效果會比最好的弱分類器更好。
Bagging:
先介紹Bagging方法:
Bagging即套袋法,其算法過程如下:
-
從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是相互獨立的)
-
每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。(注:這里并沒有具體的分類算法或回歸方法,我們可以根據具體問題采用不同的分類或回歸方法,如決策樹、感知器等)
-
對分類問題:將上步得到的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,之所以進行bagging,是希望模型能夠具有更好的魯棒性,也就是穩定性,希望避免過擬合,顯然這就是在減少variance。
而boosting是在優化loss function損失函數--- L2正則,在降低loss,那么很顯然,這在很大程度上是減少bias。
?
?
?