【機器學習】十四、AdaBoost算法原理詳解

集成學習主要包括Boosting(提升)和Bagging(袋裝)兩大類,本文主要分享Boosting類集成學習中的AdaBoost算法,會詳細講解AdaBoost的原理。碼字不易,喜歡請點贊!!!
在這裏插入圖片描述

1.提升算法的思路

俗話說的好,“三個臭皮匠,頂個諸葛亮”。提升方法就是基於這種思想的,對於任意一個複雜的問題,將多個專家的判斷進行適當的綜合所得到的判斷,要比其中任意一個專家單獨判斷的好。
在這裏插入圖片描述
Kearns和Valiant首先提出了強可學習(strongly learnable)和弱可學習(weakly learnable)的概念。其指出,強可學習得預測準確率很高,而弱可學習得準確率僅比隨即猜測略好。後來,Schapire證明,強可學習與弱可學習是等價的。

這樣,我們就可以通過發現“弱學習算法”,然後將它提升爲“強學習算法”。很明顯,發現弱學習算法通常比發現強學習算法容易得多。

關於提升算法的研究很多,最具代表性的是AdaBoost算法。本文將在理論方面根據自己的理解來詳解AdaBoost算法,歡迎各位學者批評者正。

2.AdaBoost算法

假設給定一個二分類訓練數據集:
T={(x1,y1),(x2,y2),...,(xN,yN)}T= \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}
其中,xiχRnx_i\in \chi \in R^nyiY={1,+1}y_i\in Y=\{-1,+1\}。AdaBoost算法,通過從訓練樣本集中學習到一系列的弱分類器,並將這些弱分類器線性組合成爲一個強分類器。

算法過程:
輸入:訓練樣本集T={(x1,y1),(x2,y2),...,(xN,yN)}T= \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},其中,xiχRnx_i\in \chi \in R^nyiY={1,+1}y_i\in Y=\{-1,+1\};弱學習算法;
輸出:最終分類器G(x)G(x)
(1)初始化訓練數據的權值分佈
D1=(w11,...,w1i,...,w1N)D_1 = (w_{11},...,w_{1i},...,w_{1N})
其中w1i=1Ni=12...Nw_{1i}=\frac{1}{N},i=1,2,...,N

(2)對m=1,2,...,Mm=1,2,...,M
(a)使用具有權值分佈DmD_m的訓練數據集學習,得到基分類器

Gm(x):χ{1,+1}G_m(x):\chi \to \{-1,+1\}

(b)計算Gm(x)G_m(x)在訓練數據集上的分類誤差率

em=i=1NP(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)=Gm(xi)yiwmie_m=\sum_{i=1}^NP(G_m(x_i)\neq y_i)=\sum_{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i)=\sum_{G_m(x_i)\neq y_i}w_{mi}

其中wmiw_{mi}爲基學習器m在第ii個樣本上的權重

(c)計算基學習器Gm(x)G_m(x)的係數

αm=12log1emem\alpha _m=\frac{1}{2}log\frac{1-e_m}{e_m}

這裏的對數是自然對數,當em12{e_m}\leq \frac{1}{2}時,αm0\alpha _m \geq 0,並且當em{e_m}變小時,αm\alpha _m變大。這也表明,當一個基學習器的分類誤差率越小時,這個基學習器的權重越大。

(d)更新訓練數據集的權重分佈

Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)D_{m+1}=(w_{m+1,1},...,w_{m+1,i},...,w_{m+1,N})

Zm=i=1Nwm,iexp(αmyiGm(xi))Z_m=\sum_{i=1}^Nw_{m,i}exp(-\alpha _my_iG_m(x_i))

wm+1,i=wm,iZmexp(αmyiGm(xi))w_{m+1,i}=\frac{w_{m,i}}{Z_m}exp(-\alpha _my_iG_m(x_i))

其中,ZmZ_m爲規範化因子,使得Dm+1D_{m+1}成爲一個概率分佈,並有i=1Nwm,i=1\sum_{i=1}^Nw_{m,i}=1

(3)構建基分類器的線性組合

f(x)=m=1MαmGm(x)f(x)=\sum_{m=1}^M\alpha _mG_m(x)

得到最終的分類器

G(x)=sign(f(x))=sign(m=1MαmGm(x))G(x)=sign(f(x))=sign(\sum_{m=1}^M\alpha _mG_m(x))

其中sign函數爲符號函數。

3.AdaBoost算法說明

步驟(1)假設訓練數據集具有均勻的權值分佈,這一假設保證了第1步能夠在原始數據上學習基分類器G1(x)G_1(x)

步驟(2)中,基分類器Gm(x)G_m(x)在訓練樣本集上的分類誤差率爲:

em=Gm(xi)yiwmie_m=\sum_{G_m(x_i)\neq y_i}w_{mi}

其中,wmiw_{mi}爲第m個分類器中第ii個數據的權重。這表明,Gm(x)G_m(x)在訓練樣本集上的分類誤差率是被Gm(x)G_m(x)誤分類樣本的權重之和,因此,可看出數據權值分佈DmD_m和基分類器Gm(x)G_m(x)的分類誤差率的關係。

更新訓練數據權重分佈時:

wm+1,i=wm,iZmexp(αmyiGm(xi))w_{m+1,i}=\frac{w_{m,i}}{Z_m}exp(-\alpha _my_iG_m(x_i))

因此

Gm(xi)=yiG_m(x_i)=y_i時,wm+1,i=wm,iZmexp(αm)w_{m+1,i}=\frac{w_{m,i}}{Z_m}exp(-\alpha _m)

Gm(xi)yiG_m(x_i)\neq y_i時,wm+1,i=wm,iZmexp(αm)w_{m+1,i}=\frac{w_{m,i}}{Z_m}exp(\alpha _m)

由此可知,被基分類器Gm(x)G_m(x)誤分類樣本的權值將會擴大,而被正確分類的樣本的權值會縮小。

4.前向分佈算法與AdaBoost

AdaBoost算法還有一個解釋,即可以認爲AdaBoost算法是加法模型。

4.1前向分佈算法

考慮加法模型:
f(x)=m=1Mβmb(x;γm)f(x)=\sum_{m=1}^{M}\beta_mb(x;\gamma_m)
其中b(x;γm)b(x;\gamma_m)爲基函數,βm\beta_m爲基函數的係數。顯然,這個公式就是一個加法模型。

在給定訓練數據及損失函數L(y,f(x))L(y,f(x))的條件下,學習加法模型f(x)f(x)成爲經驗極小化即損失函數極小化爲題:
minβm,γmi=1NL(yi,m=1Mβmb(xi;γm))\min_{\beta_m,\gamma_m}\sum_{i=1}^{N}L(y_i,\sum_{m=1}^{M}\beta_mb(x_i;\gamma_m))
通常這是個複雜的優化問題,但是前向分佈算法,給出了求解這一問題的想法:因爲學習的是加法模型,如果能夠從前向後,每一步只學習一個基函數及其係數,逐步逼近優化目標函數,那麼就可以簡化優化的複雜度。因此,每步只需要優化如下損失函數:
minβ,γi=1NL(yi,βb(xi;γ))\min_{\beta,\gamma}\sum_{i=1}^{N}L(y_i,\beta b(x_i;\gamma))
前向分佈算法算法過程:
輸入:訓練樣本集T={(x1,y1),(x2,y2),...,(xN,yN)}T= \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},其中,xiχRnx_i\in \chi \in R^nyiY={1,+1}y_i\in Y=\{-1,+1\};基函數集合{b(x,γ)}\{b(x,\gamma)\};損失函數L(y,f(x))L(y,f(x))
輸出:加法模型f(x)f(x)
(1)初始化f0(x)=0f_0(x)=0
(2)對m=1,2,…,M
(a)極小化損失函數
(βm,γm)=argminβ,γi=1NL(yi,fm1(xi)+βb(xi;γ))(\beta_m,\gamma_m)=arg\min_{\beta,\gamma}\sum_{i=1}^{N}L(y_i,f_{m-1}(x_i)+\beta b(x_i;\gamma))
得到參數βm,γm\beta_m,\gamma_m
(b)更新
fm(x)=fm1(x)+βmb(x;γm)f_m(x)=f_{m-1}(x)+\beta_m b(x;\gamma_m)
(3)得到加法模型
f(x)=fM(x)=m=1Mβmb(x;γm)f(x)=f_M(x)=\sum_{m=1}^{M}\beta_m b(x;\gamma_m)

通過以上步驟,前向分佈算法將同時求解m=1到M的所有參數βm,γm\beta_m,\gamma_m的問題優化成爲了逐次求解各個βm,γm\beta_m,\gamma_m的問題。

4.2前向分佈算法與AdaBoost

我們將前向分佈算法的損失函數限定爲指數損失函數,基函數爲基分類器時即等價於AdaBoost,因此,AdaBoost算法可以認爲是前向分佈算法的特例。

5.AdaBoost算法優缺點

優點

  1. Adaboost作爲分類器時,分類精度很高
  2. 在Adaboost的框架下,可以使用各種迴歸分類模型來構建弱學習器,非常靈活。
  3. 作爲簡單的二元分類器時,構造簡單,結果可理解。
  4. 不容易發生過擬合

缺點

  • 對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。

參考文獻
李航 《統計學習方法》
https://www.cnblogs.com/pinard/p/6133937.html

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