Boosting系列算法之AdaBoost算法

 接自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)對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章