接自https://blog.csdn.net/Y_hero/article/details/88381259 ,由上一篇總結我們已經初步瞭解了集成學習以及Boosting的基本原理,不過有幾個Boosting具體的問題沒有詳細解釋:
1)如何計算學習誤差率e?
2) 如何得到弱學習器權重係數α?
3)如何更新樣本權重D?
4) 使用何種結合策略?
只要是boosting大家族的算法,都要解決這4個問題。那麼Adaboost是怎麼解決的呢?
1.Adaboost分類算法
Adaboost是一種boosting算法,表示自適應boosting。假設我們的訓練集樣本是:
則訓練集在第K個弱學習器的輸出權重爲:
可以看出,第一個弱學習器的輸出權重就是樣本集中各樣本所佔權重。
接下來我們看第一個問題;如何計算學習誤差率e?
分類問題的誤差率很好理解和計算。由於多元分類是二元分類的推廣,這裏假設我們是二元分類問題,輸出爲{-1,1},則第k個弱分類器Gk(x)在訓練集上的加權誤差率爲:
加權誤差率=失敗樣本數*樣本權重之和
接着我們來看第二個問題;如何得到弱學習器權重係數α?
對於二元分類問題,第k個弱分類器的權重係數爲:
爲什麼這樣計算弱學習器權重係數?從上式可以看出,如果分類誤差率ek越大,則對應的弱分類器權重係數αk越小。也就是說,誤差率小的弱分類器權重係數越大。具體爲什麼採用這個權重係數公式,我們在講Adaboost的損失函數優化時再講。
第三個問題:如何更新樣本權重D?,
假設第k個弱學習器的樣本集權重係數爲
那麼第K+1個弱學習器的樣本集權重係數爲:
根據上式我們可以看出,如果第i個樣本分類錯誤,導致樣本的權重在第k+1個弱學習器重增大,如果分類正確,則權重在第k+1個弱分類器中減少.具體爲什麼採用樣本權重更新公式,我們在講Adaboost的損失函數優化時再講。
最後一個問題是集合策略。Adaboost分類採用的是加權表決法,最終的強分類器爲
以上是adaboost的分類算法。
2.Adaboost分類問題的損失函數優化
剛纔上一節我們講到了分類Adaboost的弱學習器權重係數公式和樣本權重更新公式。但是沒有解釋選擇這個公式的原因,讓人覺得是魔法公式一樣。其實它可以從Adaboost的損失函數推導出來。
從另一個角度講, Adaboost是模型爲加法模型,學習算法爲前向分步學習算法,損失函數爲指數函數的分類問題。
模型爲加法模型好理解,我們的最終的強分類器是若干個弱分類器加權平均而得到的。
前向分步學習算法也好理解,我們的算法是通過一輪輪的弱學習器學習,利用前一個弱學習器的結果來更新後一個弱學習器的訓練集權重。也就是說,第k-1輪的強學習器爲
而第k輪的強學習器爲
兩式比較得:
可見強學習器的確是通過前向分步學習算法一步步而得到的。
Adaboost損失函數爲指數函數,即定義損失函數爲
利用前向分步學習算法的關係可以得到損失函數爲
3.Adaboost小結
到這裏Adaboost就寫完了,前面有一個沒有提到,就是弱學習器的類型。理論上任何學習器都可以用於Adaboost.但一般來說,使用最廣泛的Adaboost弱學習器是決策樹和神經網絡。對於決策樹,Adaboost分類用了CART分類樹,而Adaboost迴歸用了CART迴歸樹。
這裏對Adaboost算法的優缺點做一個總結。
Adaboost的主要優點有:
1)Adaboost作爲分類器時,分類精度很高
2)在Adaboost的框架下,可以使用各種迴歸分類模型來構建弱學習器,非常靈活。
3)作爲簡單的二元分類器時,構造簡單,結果可理解。
4)不容易發生過擬合
Adaboost的主要缺點有:
1)對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。