集成學習-Bagging-Boosting-AdaBoost

集成學習

1.導言

一個形象的比喻:“三個臭皮匠賽過諸葛亮!”
假設輸入x\boldsymbol{{x}}和輸出y\boldsymbol{{y}}之間的真實關係爲:y=h(x)\boldsymbol{{y}}=h(\boldsymbol{{x}}).對於M\boldsymbol{{M}}個不同的模型f1(x),,fM(x)f_1(\boldsymbol{{x}}),\cdots,f_{\boldsymbol{{M}}}(\boldsymbol{{x}}),每個模型的期望錯誤定義如下:
R(fm)=Ex[(fm(x)h(x))2]=Ex[ϵm(x)2](式1) \begin{aligned} \mathcal{R}(f_m)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式1} \end{aligned}
其中,ϵm(x)=(fm(x)h(x))\epsilon_m(\boldsymbol{{x}})=(f_m(\boldsymbol{{x}})-h(\boldsymbol{{x}}))爲模型m\boldsymbol{m}在樣本x\boldsymbol{x}上的錯誤。
這樣一來,所有模型的平均錯誤爲:
Rˉ(f)=1Mm=1MEx[ϵm(x)2](式2) \bar{\mathcal{R}}(f)=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{{x}}}\left[\epsilon_m(\boldsymbol{{x}})^2\right]\tag{式2}

集成學習(Ensemble Learning)是採取某種策略(比如:直接平均,加權平均)將多個模型集成起來,通過羣體決策來提高準確率。集成學習首要的問題是如何集成多個模型。
最直接的策略是:直接平均,即通過“投票”。基於投票的集成模型F(x)F(\boldsymbol{{x}})定義爲:
F(x)=1Mm=1Mfm(x)(式3) F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})\tag{式3}
在這裏,通過簡單投票機制的集成模型F(x)=1Mm=1Mfm(x)F(\boldsymbol{{x}})=\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}}),F(x)F(\boldsymbol{{x}})的期望在:1MRˉ(f)\cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f)Rˉ(f)\bar{\mathcal{R}}(f)之間。

【證明】:根據定義,集成模型的期望錯誤爲:
R(F)=Ex[(1Mm=1Mfm(x)h(x))2]=Ex[(1Mm=1Mϵm(x))2]=Ex[1M2m=1Mn=1Mϵm(x)ϵn(x)]=1M2m=1Mn=1MEx[ϵm(x)ϵn(x)](式4) \begin{aligned} \mathcal{R}(F)&=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}f_m({\boldsymbol{x}})-h(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[(\cfrac{1}{\boldsymbol{M}}\sum_{m=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}}))^2\right]\\ &=\operatorname{E}_{\boldsymbol{{x}}}\left[\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\\ &=\cfrac{1}{\boldsymbol{M}^2}\sum_{m=1}^{{\boldsymbol{M}}}\sum_{n=1}^{{\boldsymbol{M}}}\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]\tag{式4} \end{aligned}
其中,Ex[ϵm(x)ϵn(x)]\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]爲兩個不同模型錯誤的相關性。如果每一個模型的錯誤是不相關的,則有:
mn,Ex[ϵm(x)ϵn(x)]=0(式5) \forall{m\neq{n}},\operatorname{E}_{\boldsymbol{x}}\left[\epsilon_m(\boldsymbol{{x}})\epsilon_n(\boldsymbol{{x}})\right]=0\tag{式5}
如果,每個模型的錯誤都是相同的,則:
mn,ϵm(x)=ϵn(x)(式6) \forall{m\neq{n}},\epsilon_m(\boldsymbol{{x}})=\epsilon_n(\boldsymbol{{x}})\tag{式6}
且由於:m,ϵm(x)0\forall{m},\epsilon_m(\boldsymbol{{x}})\ge0,於是得到:
Rˉ(f)R(f)1MRˉ(f)(式7) \bar{\mathcal{R}}(f)\ge{{\mathcal{R}}(f)}\ge{\cfrac{1}{\boldsymbol{M}}\bar{\mathcal{R}}(f)}\tag{式7}
也就是說:集成模型的期望錯誤大於等於所有模型的平均期望錯誤的1/M1/M,小於等於所有模型的平均期望錯誤。

\Longrightarrow爲了得到更好的模型集成效果,則需要每個模型之間具備一定的差異性。且隨着模型數量的增多,其錯誤率也會下降,最終趨近於0.

一個有效的集成學習模型要求各個基模型(弱分類器)之間的差異儘可能大,爲了增加基模型之間的差異,可以採用BaggingBoosting這兩類方法。

2.Bagging類方法

Bagging類方法是通過隨機構造訓練樣本,隨機選取特徵等方法來提高每個基模型之間的獨立性,代表性方法有:Bagging和隨機森林。
Bagging\rightarrow{Bagging}:(Bootstrap Aggregating)是通過不同模型的訓練數據集的獨立性來提高模型之間的獨立性。在原始數據集上進行有放回的隨機採樣,得到MM個比較小的訓練集,並訓練MM個模型,然後通過投票的方法進行模型集成。
\rightarrow隨機森林:(Random Forest)是在Bagging的基礎上再引入了隨機特徵,進一步提高每個基模型之間的獨立性。再隨機森林中,每個基模型都是一棵決策樹。

3.Boosting類方法

Boosting類方法,是按照一定順序來先後訓練不同的基模型,每個模型都針對前序模型的錯誤進行訓練。根據前序模型的結果,來調整訓練樣本的權重,增加不同基模型之間的差異性。Boosting類方法的代表有:Adaboost方法。
AdaBoost\rightarrow AdaBoost:Boosting類的集成模型的目標是學習到一個加性模型,即:
F(x)=m=1Mαmfm(x)(式8) F(\boldsymbol{x})=\sum_{m=1}^{\boldsymbol{M}}\alpha_{m}f_m(\boldsymbol{x})\tag{式8}
其中,fm(x)f_m(\boldsymbol{x})爲弱分類器,或者基分類器。αm\alpha_{m}爲弱分類器的集成權重,F(x)F(\boldsymbol{x})就爲強分類器。

Boosting類方法的關鍵:
怎樣訓練確定每一個弱分類器fm(x)f_m(\boldsymbol{x})及其權重αm\alpha_{\boldsymbol{m}}。做法爲:採用迭代的方式來學習每一個弱分類器,也就是按照一定的順序依次訓練每一個弱分類器。具體爲:”假設已經訓練了mm個弱分類器,再訓練第m+1m+1個弱分類器的時候,增加已有弱分類器錯分樣本的權重,使得第m+1m+1個弱分類器更加關注已有弱分類器錯分的樣本“。這樣增加每個弱分類器的差異,最終提升集成分類器的準確率。這種方法叫做:AdaBoost算法。

二分類AdaBoost算法過如下:
在這裏插入圖片描述
AdaBoost算法的統計學解釋:
AdaBoost算法可以視爲一種分步優化的加性模型。損失函數定義如下:
L(F)=exp(yF(x))=exp(ym=1Mαmfm(x))(式9)\begin{aligned} \mathfrak{L}(F) &= exp(- yF(\boldsymbol{x}))\\ &=exp(-y\sum_{m=1}^{\boldsymbol{M}}\alpha_mf_m(\boldsymbol{x}))\tag{式9} \end{aligned}
其中,y,fm(x){1,+1}y,f_m{(\boldsymbol{x}})\in\{-1,+1\}.
若前m1m-1次迭代之後得到:
Fm1(x)=t=1m1αtft(x)(式10)F_{m-1}(\boldsymbol{x})=\sum_{t=1}^{m-1}\alpha_tf_t(\boldsymbol{x})\tag{式10}
則第mm次迭代的目標是找到一個αm\alpha_mfm(x)f_m(\boldsymbol{x})使得損失函數最小,即:
L(αm,fm(x))=n=1Nexp(y(n)(Fm1(x(n))+αmfm(x(n))))(式11)\mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}exp(-y^{(n)}(F_{m-1}(\boldsymbol{x}^{(n)})+\alpha_mf_m(\boldsymbol{x}^{(n)})))\tag{式11}
wm(n)=exp(y(n)Fm1(x(n)))w_m^{(n)}=exp(-y^{(n)}F_{m-1}(\boldsymbol{x}^{(n)})),那麼上式可以寫爲:L(αm,fm(x))=n=1Nwm(n)exp(αmy(n)fm(x)(n)))(式12)\mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))=\sum_{n=1}^{N}w_m^{(n)}exp(-\alpha_my^{(n)}f_m(\boldsymbol{x})^{(n)}))\tag{式12}
因爲:y,fm(x){1,+1}y,f_m(\boldsymbol{x})\in\{-1,+1\},則有:
yfm(x)=12I(yfm(x))(式13)yf_m(\boldsymbol{x}) = 1-2I(y\neq{f_m(\boldsymbol{x})})\tag{式13}
其中,I(x)I(\boldsymbol{x})爲指示函數。
將損失函數進行二階泰勒展開,得到:
L(αm,fm(x))=n=1Nwm(n)(1αmy(n)fm(x(n))+12αm2)αmn=1Nwm(n)I(yfm(x))(式14)\begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{n=1}^{N}w_m^{(n)}\left(1-\alpha_my^{(n)}f_m(\boldsymbol{x}^{(n)})+\cfrac{1}{2}\alpha_m^2\right)\\ &\propto{\alpha_m\sum_{n=1}^{N}w_m^{(n)}I(y\neq{f_m(\boldsymbol{x})})} \end{aligned}\tag{式14}
可以得到,當αm>0\alpha_m>0時,最優分類器fm(x)f_m(\boldsymbol{x})爲:樣本權重是wm(n),1nNw_m^{(n)},1\le{n}\le{N}時的加權錯誤最小的分類器。
這樣一來,求出了fm(x)f_m(\boldsymbol{x}),則式12可以寫成:
L(αm,fm(x))=y(n)fm((x)(n))wm(n)exp(αm)+y(n)=fm((x)(n))wm(n)exp(αm)ϵmexp(αm)+(1ϵm)exp(αm)(式15) \begin{aligned} \mathfrak{L}(\alpha_m,f_m(\boldsymbol{x}))&=\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(\alpha_m)+\sum_{y^{(n)}={f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}exp(-\alpha_m)\\ &\propto{\epsilon_mexp(\alpha_m)}+(1-\epsilon_m)exp(-\alpha_m) \end{aligned}\tag{式15}
其中,ϵm\epsilon_m爲分類器fm(x)f_m(\boldsymbol{x})的加權錯誤率。
ϵm=y(n)fm((x)(n))wm(n)nwm(n)(式16) \epsilon_m=\cfrac{\sum_{y^{(n)}\neq{f_m((\boldsymbol{x})^{(n)})}}w_m^{(n)}}{\sum_nw_m^{(n)}}\tag{式16}
於是求取式15關於αm\alpha_m的導數並令爲零:
α=12log1ϵmϵm(式17) \alpha=\cfrac{1}{2}\log{\cfrac{1-\epsilon_m}{\epsilon_m}}\tag{式17}

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