AdaBoost原理說明

AdaBoost原理說明

提升方法(Boosting)的基本思想

提升方法的思想是:對於一個複雜任務來說,多個專家的綜合判斷要好於其中任何一個專家的單獨判斷。

從算法角度來說,就是從弱學習器出發,反覆學習,得到一系列弱分類器,然後組合這些弱分類器,構成一個強分類器。

弱學習器:分類正確率略高於隨機猜測(0.5)的學習器;

弱學習器:分類正確率很高的學習器。

這個定義參照的是統計學習方法,查看了一些參考資料,都沒有說具體多高才算強學習器。

對於提升方法,有兩個關鍵問題需要回答:

  • 在每一輪如何改變訓練樣本的權重?
  • 如何將弱分類器組合成一個強分類器?

提升方法最具代表性的方法是AdaBoost,它的解決方式是:

  • AdaBoost的樣本權重更新

    提高那些被前一輪弱分類器錯誤分類樣本的權值,降低那些被正確分類樣本的權值。這樣,那些沒有得到正確分類的數據由於其權值的加大而受到後一輪的弱分類器的更大關注。

  • AdaBoost的弱分類器組合

    採取加權多數表決的方法,具體就是,加大分類誤差率小的弱分類器的權值,使其在表決中起較大的作用,減小分類誤差率大的弱分類器的權值,時期在表決中起較小的作用。

AdaBoost的推導

很多書上一開始就告訴你AdaBoost的整個算法流程,然後再解釋裏面的關鍵步驟,我覺得這不符合初學者的認知過程,所以這裏我想要從統計學習方法裏說的前向分步算法的解釋來一步步引導。

假設現在我們有一個二分類的訓練數據集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } \text{T}=\{ (\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中,每個樣本點由特徵與標籤組成,特徵 x i \mathbf{x}_i xi是n維向量,標籤 y i ∈ { − 1 , + 1 } y_i \in \{-1,+1\} yi{1,+1}

假如最終的組合模型是
f M ( x ) = ∑ m = 1 M α m ϕ m ( x ) f_M(\mathbf{x}) = \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x}) fM(x)=m=1Mαmϕm(x)
ϕ m ( x ) \phi_m(\mathbf{x}) ϕm(x) α m \alpha_m αm分別是AdaBoost的第 m m m個基分類器及其權值。

損失函數採用指數損失
L ( y , f ( x ) ) = exp ⁡ ( − y f ( x ) ) L(y, f(x)) = \exp \left( -yf(x) \right) L(y,f(x))=exp(yf(x))

爲什麼選取指數損失函數?

簡單來說,最小化指數損失函數和最小化0-1損失函數是等價的,但是指數損失函數有很好的解析性質,方便求導。

組合模型最終的損失函數是
min ⁡ ∑ i = 1 N L ( y i , f M ( x ) ) ⇒ min ⁡ α , ϕ ∑ i = 1 N L ( y i , ∑ m = 1 M α m ϕ m ( x i ) ) \min \sum_{i=1}^N L\left(y_i, f_M(\mathbf{x}) \right) \\ \Rightarrow \quad\min_{\boldsymbol{\alpha},\boldsymbol{\phi}} \sum_{i=1}^N L\left(y_i, \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x}_i) \right) mini=1NL(yi,fM(x))α,ϕmini=1NL(yi,m=1Mαmϕm(xi))
目的是尋找使 L L L最小的 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α M ∗ ) , ϕ ∗ = ( ϕ 1 ∗ , ϕ 2 ∗ , ⋯   , ϕ M ∗ ) \boldsymbol{\alpha}^* = (\alpha_1^*, \alpha_2^*, \cdots ,\alpha_M^*), \boldsymbol{\phi}^* = (\phi_1^*, \phi_2^*, \cdots ,\phi_M^*) α=(α1,α2,,αM),ϕ=(ϕ1,ϕ2,,ϕM)

這個優化問題的參數非常多,幾乎不可能一次求解得到,怎麼辦呢?

一個想法是採用分步計算的方法:因爲 f M ( x ) = ∑ m = 1 M α m ϕ m ( x ) f_M(\mathbf{x}) = \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x}) fM(x)=m=1Mαmϕm(x)是加法模型,那麼我們每次只學習一個基分類器及其係數,然後疊加到之前的模型中,從而逐步逼近優化目標函數。

這個思路就是前向分步算法,具體可參照統計學習方法第8章8.3.1節前向分步算法。

現在問題就變成了第 m m m次迭代求解最優的基學習器 ϕ m \phi_m ϕm和參數 α m \alpha_m αm
( α m , ϕ m ) = min ⁡ α , ϕ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + α ϕ ( x i ) ) (\alpha_m, \phi_m) = \min_{\alpha, \phi} \sum_{i=1}^N L\left(y_i, f_{m-1}(\mathbf{x}_i) + \alpha \phi (\mathbf{x}_i) \right) (αm,ϕm)=α,ϕmini=1NL(yi,fm1(xi)+αϕ(xi))
L ( y , f ( x ) ) = exp ⁡ ( − y f ( x ) ) L(y, f(x)) = \exp\left( -yf(x)\right) L(y,f(x))=exp(yf(x))代入,變爲
( α m , ϕ m ) = min ⁡ α , ϕ ∑ i = 1 N exp ⁡ [ − y i ( f m − 1 ( x i ) + α ϕ ( x i ) ) ] = min ⁡ α , ϕ ∑ i = 1 N w m , i exp ⁡ [ − α y i ϕ ( x i ) ] \begin{aligned} (\alpha_m, \phi_m) &= \min_{\alpha, \phi} \sum_{i=1}^N \exp \left[ -y_i \left( f_{m-1}(\mathbf{x}_i) + \alpha \phi (\mathbf{x}_i) \right) \right] \\ &= \min_{\alpha, \phi} \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi (\mathbf{x}_i) \right] \end{aligned} (αm,ϕm)=α,ϕmini=1Nexp[yi(fm1(xi)+αϕ(xi))]=α,ϕmini=1Nwm,iexp[αyiϕ(xi)]
其中, w m , i = exp ⁡ [ − y i f m − 1 ( x i ) ] w_{m,i} = \exp \left[ -y_i f_{m-1} (\mathbf{x}_i) \right] wm,i=exp[yifm1(xi)],其實它就是樣本權重。

對於迴歸問題,損失函數是L2損失: L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x)) = (y-f(x))^2 L(y,f(x))=(yf(x))2,所以問題變爲:

ϕ m = min ⁡ ϕ ∑ i = 1 N [ y i − ( f m − 1 ( x i ) + ϕ ( x i ) ) ] 2 = min ⁡ ϕ ∑ i = 1 N ( y i − f m − 1 ( x i ) − ϕ ( x i ) ) 2 = min ⁡ ϕ ∑ i = 1 N [ ( y i − f m − 1 ( x i ) ) − ϕ ( x i ) ] 2 = min ⁡ ϕ ∑ i = 1 N ( r i − ϕ ( x i ) ) 2 \begin{aligned} \phi_m &= \min_{\phi} \sum_{i=1}^N \left[ y_i - \left( f_{m-1}(\mathbf{x}_i) + \phi (\mathbf{x}_i) \right) \right]^2 \\ &= \min_{\phi} \sum_{i=1}^N \left( y_i - f_{m-1}(\mathbf{x}_i) - \phi (\mathbf{x}_i) \right)^2 \\ &= \min_{\phi} \sum_{i=1}^N \left[ \left( y_i - f_{m-1}(\mathbf{x}_i)\right) - \phi (\mathbf{x}_i) \right] ^2 \\ &= \min_{\phi} \sum_{i=1}^N \left( r_i - \phi (\mathbf{x}_i) \right) ^2 \end{aligned} ϕm=ϕmini=1N[yi(fm1(xi)+ϕ(xi))]2=ϕmini=1N(yifm1(xi)ϕ(xi))2=ϕmini=1N[(yifm1(xi))ϕ(xi)]2=ϕmini=1N(riϕ(xi))2

其中, r i = y i − f m − 1 ( x i ) r_i = y_i - f_{m-1}(\mathbf{x}_i) ri=yifm1(xi),也就是殘差

求解上式分兩步:

  1. 先求基學習器 ϕ m \phi_m ϕm

    對任意 α > 0 \alpha \gt 0 α>0,求最小的 ϕ m \phi_m ϕm由下式得到:
    ϕ m = arg ⁡ min ⁡ ϕ ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \phi_m = \arg \min_\phi \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) ϕm=argϕmini=1Nwm,iI(yi=ϕ(xi))
    以上的最小值問題相當於求使錯分樣本權值和最小的 ϕ m \phi_m ϕm

    原來求指數損失最小爲什麼變成求 min ⁡ ϕ ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \min_\phi \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) minϕi=1Nwm,iI(yi=ϕ(xi))

    周志華的機器學習第8章集成學習裏面有推導,這個細節先不深究。

    但在實際操作中,我們並不知道什麼樣的基分類器是最好的,一般都是人工選擇(決策樹,logistic迴歸等),訓練選定的基分類器,達到錯分率最小就行。

  2. 再求權值 α m \alpha_m αm

    知道了基分類器 ϕ m \phi_m ϕm,問題變成
    α m = min ⁡ α ∑ i = 1 N w m , i exp ⁡ [ − α y i ϕ m ( x i ) ] \alpha_m = \min_{\alpha} \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] αm=αmini=1Nwm,iexp[αyiϕm(xi)]
    通常做法肯定是對 g ( α ) = ∑ i = 1 N w m , i exp ⁡ [ − α y i ϕ m ( x i ) ] g(\alpha) = \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] g(α)=i=1Nwm,iexp[αyiϕm(xi)]求導並使導數爲0,我們先試試看。
    ∂ g ∂ α = − ∑ i = 1 N w m , i y i ϕ m ( x i ) exp ⁡ [ − α y i ϕ m ( x i ) ] = 0 \frac{\partial g}{\partial \alpha} = - \sum_{i=1}^N w_{m,i} y_i \phi_m (\mathbf{x}_i) \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] = 0 αg=i=1Nwm,iyiϕm(xi)exp[αyiϕm(xi)]=0
    不好求解,因爲 α \alpha α y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)一塊作爲自然常數e的指數,在累加 ∑ i = 1 N \sum_{i=1}^N i=1N的情況下沒法單獨提取。

    那麼現在的問題是如何把 α \alpha α單獨提取出來,或者說有沒有辦法把 y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)給消去。

    我們知道 y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)有以下的兩種情況:
    y i ϕ m ( x i ) = { 1 , y i = ϕ m ( x i ) − 1 , y i ≠ ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) = \left\{ \begin{aligned} 1,& \quad y_i = \phi_m (\mathbf{x}_i) \\ -1,& \quad y_i \ne \phi_m (\mathbf{x}_i) \end{aligned} \right. yiϕm(xi)={1,1,yi=ϕm(xi)yi=ϕm(xi)
    只要分成以上兩種情況討論, y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)就可以變成常數。把上式代入 g ( α ) g(\alpha) g(α)

    g ( α ) = ∑ i = 1 N w m , i exp ⁡ [ − α y i ϕ m ( x i ) ] = ∑ y i = ϕ m ( x i ) w m , i e − α + ∑ y i ≠ ϕ m ( x i ) w m , i e α = e − α ∑ y i = ϕ m ( x i ) w m , i + e α ∑ y i ≠ ϕ m ( x i ) w m , i \begin{aligned} g(\alpha) =& \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] \\ =& \sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i} e^{-\alpha} + \sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i} e^{\alpha} \\ =& e^{-\alpha} \sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i} + e^{\alpha} \sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i} \end{aligned} g(α)===i=1Nwm,iexp[αyiϕm(xi)]yi=ϕm(xi)wm,ieα+yi=ϕm(xi)wm,ieαeαyi=ϕm(xi)wm,i+eαyi=ϕm(xi)wm,i
    這樣, α \alpha α就可以單獨提取出來了,接着對 g ( α ) g(\alpha) g(α)求導並使導數爲0,就能得到:
    α m = 1 2 ln ⁡ ∑ y i = ϕ m ( x i ) w m , i ∑ y i ≠ ϕ m ( x i ) w m , i \alpha_m = \frac12 \ln \frac{\sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i}}{\sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i}} αm= 求導並使導數爲0,就能得到:
    α m = 1 2 ln ⁡ ∑ y i = ϕ m ( x i ) w m , i ∑ y i ≠ ϕ m ( x i ) w m , i \alpha_m = \frac12 \ln \frac{\sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i}}{\sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i}} αm=21lnyi=ϕm(xi)wm,iyi=ϕm(xi)wm,i
    α m \alpha_m αmαm=21lnyi=ϕm(xi)wm,iyi=ϕm(xi)wm,i
    α m \alpha_m αm可以進一步化簡,看下式
    α m = 1 2 ln ⁡ ∑ i = 1 N w m , e="top: -2.55em; margin-left: -0.02691em; margin-right: 0.05em;">m,i
    y<

相關文章
相關標籤/搜索