Adaboost - 新的角度理解權值更新策略(轉載)

轉載的比較倉促, 公式沒有整理好,建議返回原文查看:git

http://www.csuldw.com/2016/08/28/2016-08-28-adaboost-algorithm-theory/github

Adaboost - 新的角度理解權值更新策略

Posted on 2016-08-28 19:24   |   In ML   |     |   views : 4489算法

關於Adaboost,在先前的一篇文章裏,也介紹過它的步驟與實現,但理論上的推導不曾涉及。雖然Adaboost算法思想通俗易懂,但權值更新公式的由來,想必並不是人人皆知。本文着重於從理論層面進一步闡述Adaboost,最終推導出迭代時的樣本權值更新公式。api

關於本文使用的數學符號的具體解釋,見下表:app

變量 符號 描述
訓練數據 (X,Y)(X,Y) 第ii個樣本爲(xi,yi)(xi,yi),其中xi=(xi1,xi2,⋯,xid)xi=(xi1,xi2,⋯,xid),yi∈{+1,−1}yi∈{+1,−1}
錯誤率 ee 第mm個弱分類器的錯誤率爲emem
分類器的係數 αα 第mm個弱分類器的係數爲αmαm
樣本權重向量 DD 迭代至第mm次時的第ii個樣本的權值爲Dm,iDm,i,初始階段,全部樣本的權重值均爲1N1N
歸一化因子 ZZ 迭代至第mm次的的歸一化因子爲ZmZm
組合分類器 f(x) 迭代至第mm次的組合分類器爲fm(x)fm(x)
最終分類器 G(X) 最終分類器爲G(X)=sign(fM(x))G(X)=sign(fM(x))

下面來看看Adaboost的算法思想與其權值的推導。機器學習

算法思想

關於Adaboost,它是boosting算法,從bias-variance(誤差-方差)的角度來看,boosting算法主要關注的是下降誤差。仔細想一想即可理解,由於boosting算法每一個分類器都是弱分類器,而弱分類器的特性就是high-bias & low variance(高誤差-低方差),其與生俱來的優勢就是泛化性能好。所以,將多個算法組合起來以後,能夠達到降誤差的效果,進而獲得一個誤差小、方差小的泛化能力好的模型。另外,Adaboost的損失函數是指數損失L(y,f(x))=e−yf(x)L(y,f(x))=e−yf(x)。爲了掌握Adaboost的整個流程,我將其思想經過下圖簡單的進行了一番總結(因爲此圖是我使用LaTex編輯的,因此若有表達不妥的地方,還請讀者指出):函數

圖一 Adaboost 算法性能

Adaboost算法能夠概括至三步,以下:學習

  • 第一步:初始化每一個樣本的權重值爲1N1N;
  • 第二步:迭代MM次,每次都根據錯誤率emem不斷修改訓練數據的權值分佈(此處須要確保弱學習器的錯誤率ee小於0.50.5),樣本權值更新規則爲增長分類錯誤樣本的權重,減小分類正確樣本的權重;
  • 第三步:根據每一個弱學習器的係數αmαm,將MM個弱學習器組合到一塊兒,共同決定最終的學習結果,即G(X)=∑Mm=1αmGm(x)G(X)=∑m=1MαmGm(x).

對於上面給出的算法,可能會存在一些疑問,諸如:優化

  1. 弱學習器的錯誤率ee爲什麼要小於0.50.5?
  2. 弱學習器的係數αα這個等式如何獲得的?
  3. 歸一化因子ZmZm又有何寓意?

對於第一點,應該比較容易理解,由於若是弱學習器的效果都沒有隨機猜想好,那麼學習獲得的模型毫無疑問確定是無用的。事實上,在上面三個問題中,最讓人不解的應該是這個αα的取值。爲何它會是這種(1)(1)形式呢?下面咱們一塊兒來推導一下。

權值推導

從圖一咱們能夠看到,迭代至第mm次時,分類器的係數計算公式爲:

 

αm=12ln(1−emem)(1)(1)αm=12ln(1−emem)

然而,爲什麼會是它呢?其推導方式有兩種,第一種是最小化訓練偏差界進行推導;第二種是最小化損失函數進行推導。二者在本質上是同樣的,都是爲了求最小化某個式子時的αα值。在下面的篇章中,只涉及第一種。也就是爲了肯定αα的表達式,根據訓練偏差界來逐步推導。

訓練偏差界

從圖一可知,最終獲得的函數表達式是G(x)G(x),然而,當G(xi)≠yiG(xi)≠yi時,yifM(xi)<0yifM(xi)<0,從而獲得e−yifM(xi)≥1e−yifM(xi)≥1,進而能夠獲得:

 

1N∑i=1NI(G(xi)≠yi)≤1N∑ie−yifM(xi)(2)(2)1N∑i=1NI(G(xi)≠yi)≤1N∑ie−yifM(xi)

從圖一中還能夠看到,更新訓練樣本的權值分佈公式以下:

 

Dm+1,i=Dm,iZm⋅exp{−αmyiGm(xi)}(3)(3)Dm+1,i=Dm,iZm⋅exp{−αmyiGm(xi)}

如今,對權值更新公式(3)(3)變形,獲得下列式子:

 

ZmDm+1,i=Dm,i⋅exp{−αmyiGm(xi)}(4)(4)ZmDm+1,i=Dm,i⋅exp{−αmyiGm(xi)}

對於上面這個式子,很是重要,是下面這個推導的核心。對於公式(2)(2)不等於的右式,咱們能夠作以下推導:

 

1N∑ie−yifM(xi)=1N∑iexp(−∑m=1MαmyiGm(xi))=D1,i=1N∑iD1,i∏m=1Mexp(−αmyiGm(xi))=(4)∑iZ1D2,i∏m=2Mexp(−αmyiGm(xi))=(4)Z1⋅∑iZ2D3,i∏m=3Mexp(−αmyiGm(xi))=(4)Z1Z2⋅∑iZ3D4,i∏m=4Mexp(−αmyiGm(xi))=∏m=1MZm1N∑ie−yifM(xi)=1N∑iexp(−∑m=1MαmyiGm(xi))=D1,i=1N∑iD1,i∏m=1Mexp(−αmyiGm(xi))=(4)∑iZ1D2,i∏m=2Mexp(−αmyiGm(xi))=(4)Z1⋅∑iZ2D3,i∏m=3Mexp(−αmyiGm(xi))=(4)Z1Z2⋅∑iZ3D4,i∏m=4Mexp(−αmyiGm(xi))=∏m=1MZm

所以能夠得出,Adaboost的偏差界爲

 

1N∑i=1NI(G(xi)≠yi)≤1N∑ie−yifM(xi)=∏m=1MZm(5)(5)1N∑i=1NI(G(xi)≠yi)≤1N∑ie−yifM(xi)=∏m=1MZm

從公式(6)(6)能夠看出,在每一輪生成弱分類器Gm(x)Gm(x)時,應使歸一化因子ZmZm儘量的小,而最小化時的αα就是咱們要求的αα, 即求優化表達式minαm Zm(αm)minαm Zm(αm)。

係數αα

將問題轉化爲求最小值,這就比較簡單了,只須要對ZmZm求αmαm的導數,而後令導數爲零,求出此時的αmαm就行了。OK,下面給出計算過程以下:

 

Zm=∑i=1NDm,i⋅exp{−αyiGm(xi)}=∑Gm(xi)=yiDm,i⋅e−αm+∑Gm(xi)≠yiDm,i⋅eαm=(1−em)⋅e−αm+em⋅eαm(6)(6)Zm=∑i=1NDm,i⋅exp{−αyiGm(xi)}=∑Gm(xi)=yiDm,i⋅e−αm+∑Gm(xi)≠yiDm,i⋅eαm=(1−em)⋅e−αm+em⋅eαm

 

∂Zm∂αm=−(1−em)⋅e−αm+em⋅eαm(7)(7)∂Zm∂αm=−(1−em)⋅e−αm+em⋅eαm

而後令導數式(7)(7)等於00,簡單的進行化簡便可求得(1)(1)式。

說明:對於(6)(6)式的變形,從第一步變換爲第二步時,應用的規則是,當樣本被正確分類,yiGm(xi)=1yiGm(xi)=1;當樣本被錯誤分類,yiGm(xi)=−1yiGm(xi)=−1。而從第二步到第三步,則能夠理解爲正確分類的樣本所佔比例爲1−em1−em,錯誤分類的樣本佔比emem。

樣本權值

經過上面的推導,獲得αα以後,根據(1)(1)式,又能夠化簡獲得正確分類時的e−αme−αm 和錯誤分類時的eαmeαm ,公式以下:

 

e−αm=e−12ln(1−emem)=em1−em−−−−−−√ (8)(8)e−αm=e−12ln(1−emem)=em1−em 

 

eαm=e12ln(1−emem)=1−emem−−−−−−√(9)(9)eαm=e12ln(1−emem)=1−emem

而對於歸一化因子ZmZm,又能夠經過αα推導其與錯誤率ee的關係,推導過程以下:

 

Zm=∑i=1NDm,i⋅exp{−αyiGm(xi)}=∑Gm(xi)=yiDm,i⋅e−αm+∑Gm(xi)≠yiDm,i⋅eαm=(1−em)⋅e−αm+em⋅eαm=(8)(9)(1−em)⋅em1−em−−−−−−√+em⋅1−emem−−−−−−√=2em(1−em)−−−−−−−−−√(10)(10)Zm=∑i=1NDm,i⋅exp{−αyiGm(xi)}=∑Gm(xi)=yiDm,i⋅e−αm+∑Gm(xi)≠yiDm,i⋅eαm=(1−em)⋅e−αm+em⋅eαm=(8)(9)(1−em)⋅em1−em+em⋅1−emem=2em(1−em)

所以,根據(10)(10)式的推導結果,能夠進一步獲得,當樣本被正確分類時,yiGm(xi)=1yiGm(xi)=1,權值公式可更新爲:

 

exp{−αmyiGm(xi)}Zm=e−αmZm=(9)(10)em1−em−−−−−−√⋅12em(1−em)−−−−−−−−−√=12(1−em)(11)(11)exp{−αmyiGm(xi)}Zm=e−αmZm=(9)(10)em1−em⋅12em(1−em)=12(1−em)

當樣本被錯誤分類時,yiGm(xi)=−1yiGm(xi)=−1,權值公式可更新爲:

 

exp{−αmyiGm(xi)}Zm=eαmZm=(9)(10)1−emem−−−−−−√⋅12em(1−em)−−−−−−−−−√=12em(12)(12)exp{−αmyiGm(xi)}Zm=eαmZm=(9)(10)1−emem⋅12em(1−em)=12em

公式(11)(11)與公式(12)(12)就是最終的權值更新系數,只需將其帶入到公式(3)(3)便可求得新的樣本權值。

Summary

本文主要側重於權值的推導,而編寫這篇博文的目的主要是爲了彌補先前學習過程當中的疏忽與不足,進而達到學習的目的。關於文章的實現,可去博主的github下載源碼csuldw-Adaboost (各位同窗,記得給個star噢^_^),另外,也可參考先前的博文Machine Learning algorithm - Adaboost。關於機器學習的其它文章,本博客將會持續更新。

References

  • Y Freund,R Schapire, A decision-theoretic generalization of on-line learning algorithms and an application to boosting, Journal of Popular Culture, 1997
  • 統計學習方法》 by 李航
  • Wikipedia-Adaboost
  • 《機器學習 Machine Learning》 by 周志華

#Machine Learning #Adaboost #權值 #boosting