集成學習
1.導言
一個形象的比喻:“三個臭皮匠賽過諸葛亮!”
假設輸入x和輸出y之間的真實關係爲:y=h(x).對於M個不同的模型f1(x),⋯,fM(x),每個模型的期望錯誤定義如下:
R(fm)=Ex[(fm(x)−h(x))2]=Ex[ϵm(x)2](式1)
其中,ϵm(x)=(fm(x)−h(x))爲模型m在樣本x上的錯誤。
這樣一來,所有模型的平均錯誤爲:
Rˉ(f)=M1m=1∑MEx[ϵm(x)2](式2)
集成學習(Ensemble Learning)是採取某種策略(比如:直接平均,加權平均)將多個模型集成起來,通過羣體決策來提高準確率。集成學習首要的問題是如何集成多個模型。
最直接的策略是:直接平均,即通過“投票”。基於投票的集成模型F(x)定義爲:
F(x)=M1m=1∑Mfm(x)(式3)
在這裏,通過簡單投票機制的集成模型F(x)=M1∑m=1Mfm(x),F(x)的期望在:M1Rˉ(f)和Rˉ(f)之間。
【證明】:根據定義,集成模型的期望錯誤爲:
R(F)=Ex[(M1m=1∑Mfm(x)−h(x))2]=Ex[(M1m=1∑Mϵm(x))2]=Ex[M21m=1∑Mn=1∑Mϵm(x)ϵn(x)]=M21m=1∑Mn=1∑MEx[ϵm(x)ϵn(x)](式4)
其中,Ex[ϵm(x)ϵn(x)]爲兩個不同模型錯誤的相關性。如果每一個模型的錯誤是不相關的,則有:
∀m=n,Ex[ϵm(x)ϵn(x)]=0(式5)
如果,每個模型的錯誤都是相同的,則:
∀m=n,ϵm(x)=ϵn(x)(式6)
且由於:∀m,ϵm(x)≥0,於是得到:
Rˉ(f)≥R(f)≥M1Rˉ(f)(式7)
也就是說:集成模型的期望錯誤大於等於所有模型的平均期望錯誤的1/M,小於等於所有模型的平均期望錯誤。
⟹爲了得到更好的模型集成效果,則需要每個模型之間具備一定的差異性。且隨着模型數量的增多,其錯誤率也會下降,最終趨近於0.
一個有效的集成學習模型要求各個基模型(弱分類器)之間的差異儘可能大,爲了增加基模型之間的差異,可以採用Bagging和Boosting這兩類方法。
2.Bagging類方法
Bagging類方法是通過隨機構造訓練樣本,隨機選取特徵等方法來提高每個基模型之間的獨立性,代表性方法有:Bagging和隨機森林。
→Bagging:(Bootstrap Aggregating)是通過不同模型的訓練數據集的獨立性來提高模型之間的獨立性。在原始數據集上進行有放回的隨機採樣,得到M個比較小的訓練集,並訓練M個模型,然後通過投票的方法進行模型集成。
→隨機森林:(Random Forest)是在Bagging的基礎上再引入了隨機特徵,進一步提高每個基模型之間的獨立性。再隨機森林中,每個基模型都是一棵決策樹。
3.Boosting類方法
Boosting類方法,是按照一定順序來先後訓練不同的基模型,每個模型都針對前序模型的錯誤進行訓練。根據前序模型的結果,來調整訓練樣本的權重,增加不同基模型之間的差異性。Boosting類方法的代表有:Adaboost方法。
→AdaBoost:Boosting類的集成模型的目標是學習到一個加性模型,即:
F(x)=m=1∑Mαmfm(x)(式8)
其中,fm(x)爲弱分類器,或者基分類器。αm爲弱分類器的集成權重,F(x)就爲強分類器。
Boosting類方法的關鍵:
怎樣訓練確定每一個弱分類器fm(x)及其權重αm。做法爲:採用迭代的方式來學習每一個弱分類器,也就是按照一定的順序依次訓練每一個弱分類器。具體爲:”假設已經訓練了m個弱分類器,再訓練第m+1個弱分類器的時候,增加已有弱分類器錯分樣本的權重,使得第m+1個弱分類器更加關注已有弱分類器錯分的樣本“。這樣增加每個弱分類器的差異,最終提升集成分類器的準確率。這種方法叫做:AdaBoost算法。
二分類AdaBoost算法過如下:
AdaBoost算法的統計學解釋:
AdaBoost算法可以視爲一種分步優化的加性模型。損失函數定義如下:
L(F)=exp(−yF(x))=exp(−ym=1∑Mαmfm(x))(式9)
其中,y,fm(x)∈{−1,+1}.
若前m−1次迭代之後得到:
Fm−1(x)=t=1∑m−1αtft(x)(式10)
則第m次迭代的目標是找到一個αm和fm(x)使得損失函數最小,即:
L(αm,fm(x))=n=1∑Nexp(−y(n)(Fm−1(x(n))+αmfm(x(n))))(式11)
令wm(n)=exp(−y(n)Fm−1(x(n))),那麼上式可以寫爲:L(αm,fm(x))=n=1∑Nwm(n)exp(−αmy(n)fm(x)(n)))(式12)
因爲:y,fm(x)∈{−1,+1},則有:
yfm(x)=1−2I(y=fm(x))(式13)
其中,I(x)爲指示函數。
將損失函數進行二階泰勒展開,得到:
L(αm,fm(x))=n=1∑Nwm(n)(1−αmy(n)fm(x(n))+21αm2)∝αmn=1∑Nwm(n)I(y=fm(x))(式14)
可以得到,當αm>0時,最優分類器fm(x)爲:樣本權重是wm(n),1≤n≤N時的加權錯誤最小的分類器。
這樣一來,求出了fm(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)
其中,ϵm爲分類器fm(x)的加權錯誤率。
ϵm=∑nwm(n)∑y(n)=fm((x)(n))wm(n)(式16)
於是求取式15關於αm的導數並令爲零:
α=21logϵm1−ϵm(式17)