天天看點

內建學習與Adaboost算法

 本文簡要介紹了內建學習,說明了Boosting和Bagging的主要特點。接着,基于周志華的《機器學習》中關于Adaboost算法,詳細推導了Adaboost算法,并給出了關鍵步驟的解釋,更友善初學者的了解。

內建學習

 內建學習通過建構并結合多個學習器來完成學習任務,有是也稱為多分類器系統,基于委員會的學習等。

內建學習與Adaboost算法

 上圖顯示出內建學習的一般結構:先産生一組“個體學習器”,再用某種政策将它們結合起來。個體學習器通常由一個現有的學習算法從訓練資料産生,例如BP神經網絡等。此時,內建中隻包含同種類型的個體學習器,這樣的內建是

同質

的,同質內建中的個體學習器也稱

基學習器

,相應的學習算法稱為

基學習算法

,內建也可包含不同類型的個體學習器,例如同時包含決策樹和神經網絡,這樣的內建是

異質

的。異質內建不再有基學習算法,相應的個體學習器不再稱為基學習器,常稱為

元件學習器

 以二分類問題 y∈{−1,+1} y ∈ { − 1 , + 1 } 和真實函數 f f ,假定基本分類器的錯誤率為ϵϵ,即對每個基分類器 hi h i ,有:

P(hi(x)≠f(x))=ϵ(1) (1) P ( h i ( x ) ≠ f ( x ) ) = ϵ

 假設內建通過簡單投票法結合 T T 個基分類器,若有超過半數的基分類器正确,則內建分類就正确:

H(x)=sign(∑i=1Thi(x))(2)(2)H(x)=sign(∑i=1Thi(x))

說明:

  • f f 是真實函數,産生的結果範圍是{−1,+1}{−1,+1},分類結果是真實的,準确的。
  • hi(x) h i ( x ) 是基分類器,産生的結果範圍是 {−1,+1} { − 1 , + 1 } ,可能與真實結果有偏差。
  • H(x) H ( x ) 是內建分類器,舉例來說,如果超過一半的基分類器的分類結果是+1,則內建分類器的結果是+1。
  • 對于式 (2) ( 2 ) ,設 A=∑i=1T(hi(x)) A = ∑ i = 1 T ( h i ( x ) ) ,分析如下,如果 A>0 A > 0 表明 T T 個基分類器分類結果為+1+1的較多,結果是內建分類器分類結果是 +1 + 1 ;如果 A=0 A = 0 ,表明 T T 個基分類器中,分類結果為+1+1的 −1 − 1 的一樣多。如果 A<0 A < 0 ,表明 T T 個基分類器中,分類結果為−1−1的基分類器數量較多,內建分類器的結果為 −1 − 1 。函數是符号函數,在 ⋅<0,⋅=0,⋅>0 · < 0 , · = 0 , · > 0 時分别取值為 −1,0,1 − 1 , 0 , 1 。

 假設基分類器的錯誤率互相獨立,則由

hoeffding

不等式可知,內建的錯誤率為:

P(H(x)≠f(x))=∑k=0T/2CkT(1−ϵ)kϵT−k≤e−12T(1−2ϵ)2(3) (3) P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 T / 2 C T k ( 1 − ϵ ) k ϵ T − k ≤ e − 1 2 T ( 1 − 2 ϵ ) 2

 上式可以看出,随着內建中個體分類器數目 T​ T ​ 的增大,內建的錯誤率将成指數級下降,最終趨于零。

hoeffding

不等式為:

随機變量xi,xi∈{0,1},x¯¯¯=1n(x1+x2+⋯+xn)則有P(|x¯¯¯−E(x¯¯¯)|≥t) ≤e−2nt2 随 機 變 量 x i , x i ∈ { 0 , 1 } , x ¯ = 1 n ( x 1 + x 2 + ⋯ + x n ) 則 有 P ( | x ¯ − E ( x ¯ ) | ≥ t )   ≤ e − 2 n t 2

 式 (3) ( 3 ) 中, t=12−ϵ t = 1 2 − ϵ , n=T n = T

P(H(x)≠f(x))=P(|H(x)−f(x)|≥t)≤e−2nt2=e−2T(12−ϵ)2=e−12T(1−2ϵ)2 P ( H ( x ) ≠ f ( x ) ) = P ( | H ( x ) − f ( x ) | ≥ t ) ≤ e − 2 n t 2 = e − 2 T ( 1 2 − ϵ ) 2 = e − 1 2 T ( 1 − 2 ϵ ) 2

 根據個體學習器的生産方式,目前的內建學習方法大緻可以分為兩大類,即個體學習器間存在強依賴關系,必須串行生成的序列化方法,以及個體學習器間不存在依賴關系,可同時生成的并行化方法;前者的代表是Boosting,後者代表的是Bagging和随機森林。

Boosting

 Boosting是一族可将弱學習器提升為強學習器的方法,這族算法的工作機制類似:先從初始訓練集訓練處一個基學習器,再根據基學習器的表現對訓練樣本分布進行調整,使得先前基學習器做錯的樣本在後續受到更多關注,然後基于調整後的樣本分布來訓練下一個基學習器;如此重複進行,直至基學習器數目達到事先指定的值T,最終将這T個基學習器進行權重結合。

 Boosting族算法最著名的代表是Adaboost。

 Adaboost算法有多種推導方式,比較容易了解的是基于“加性模型”,即基學習器的線性組合:

H(x)=∑t=1Tαtht(x)(4) (4) H ( x ) = ∑ t = 1 T α t h t ( x )

 Adaboost的推導主要有三個方面的内容:損失函數的定義, αt α t 的求解和 ht(x) h t ( x ) 的求解。

損失函數:

 這裡選用指數損失函數來替換0/1損失函數來作為優化目标,理由如下:

 指數損失函數的形式為:

lexp(H|D)=Ex∼D[e−f(x)H(x)](5) (5) l e x p ( H | D ) = E x ∼ D [ e − f ( x ) H ( x ) ]

 上式中:

  • f(x) f ( x ) 是真實函數,函數值範圍是 {−1,+1} { − 1 , + 1 } ;
  • H(x) H ( x ) 是基學習器,函數值範圍是 {−1,+1} { − 1 , + 1 } ,結果可能存在誤差
  • D D 指某種分布;
  • x∼Dx∼D 的意思是, x x 服從DD分布;
  • lexp(H|D) l e x p ( H | D ) 的含義是在分布為 D D 的前提下,以HH為自變量的損失函數。

 自然的,我們希望獲得公式 (5) ( 5 ) 的最小化,考慮公式 (5) ( 5 ) 對 H(x) H ( x ) 求一階偏導:

∂lexp(H|D)∂H(x)=∂Ex∼D[e−f(x)H(x)]∂H(x)=−e−H(x)Ex∼Df(x)=−e−H(x)[1⋅P(f(x)=1|x)+(−1)P(f(x)=−1|x)]=−e−H(x)P(f(x)=1|x)+e−H(x)P(f(x)=−1|x)(6) (6) ∂ l e x p ( H | D ) ∂ H ( x ) = ∂ E x ∼ D [ e − f ( x ) H ( x ) ] ∂ H ( x ) = − e − H ( x ) E x ∼ D f ( x ) = − e − H ( x ) [ 1 ⋅ P ( f ( x ) = 1 | x ) + ( − 1 ) P ( f ( x ) = − 1 | x ) ] = − e − H ( x ) P ( f ( x ) = 1 | x ) + e − H ( x ) P ( f ( x ) = − 1 | x )

 令式 (4) ( 4 ) 等于0 ,則有:

∂lexp(H|D)∂H(x)e−H(x)P(f(x)=1|x)(eH(x))2H(x)=−e−H(x)P(f(x)=1|x)+eH(x)P(f(x)=−1|x)=0=eH(x)P(f(x)=−1|x)=P(f(x)=1|x)P(f(x)=−1|x)=12lnP(f(x)=1|x)P(f(x)=−1|x)⇒⇒⇒(6) (6) ∂ l e x p ( H | D ) ∂ H ( x ) = − e − H ( x ) P ( f ( x ) = 1 | x ) + e H ( x ) P ( f ( x ) = − 1 | x ) = 0 ⇒ e − H ( x ) P ( f ( x ) = 1 | x ) = e H ( x ) P ( f ( x ) = − 1 | x ) ⇒ ( e H ( x ) ) 2 = P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 | x ) ⇒ H ( x ) = 1 2 l n P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 | x )

是以,有:

sign(H(x))=sign(12lnP(f(x)=1|x)P(f(x)=−1|x))={1,P(f(x)=1|x)>P(f(x)=−1|x)−1,P(f(x)=1|x)<P(f(x)=−1|x)=argminy∈−1,1P(f(x)=y|x)(7) (7) s i g n ( H ( x ) ) = s i g n ( 1 2 l n P ( f ( x ) = 1 | x ) P ( f ( x ) = − 1 | x ) ) = { 1 , P ( f ( x ) = 1 | x ) > P ( f ( x ) = − 1 | x ) − 1 , P ( f ( x ) = 1 | x ) < P ( f ( x ) = − 1 | x ) = arg ⁡ min y ∈ − 1 , 1 ⁡ P ( f ( x ) = y | x )

 這意味着, sign(H(x)) s i g n ( H ( x ) ) 達到了貝葉斯最優錯誤率,換言之,若指數損失函數最小化,則分類錯誤率也将最小化,這說明指數損失函數是分類任務原本0/1損失函數的一緻性的替代損失函數,由于這個替代函數有更好的數學性質,如連續可微,是以替代0/1損失函數。

αt α t 的求解

 在adaboost算法中,第一個基分類器 h1 h 1 是通過直接将基學習算法用于初始資料分布而得,此後疊代地生成 ht h t 和 αt α t 當基分類器 ht h t 基于分布 D D 産生後,該分類器的權重αtαt應是的 αtht α t h t 最小化指數損失函數。

lexp(αtht|Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtI(f(x)=ht(x)+eαtI(f(x)≠ht(x))]=e−αtPx∼Dt(f(x)=ht(x))+eαtPx∼Dt(f(x)≠ht(x))=e−αt(1−ϵt)+eαtϵt(8) (8) l e x p ( α t h t | D t ) = E x ∼ D t [ e − f ( x ) α t h t ( x ) ] = E x ∼ D t [ e − α t I ( f ( x ) = h t ( x ) + e α t I ( f ( x ) ≠ h t ( x ) ) ] = e − α t P x ∼ D t ( f ( x ) = h t ( x ) ) + e α t P x ∼ D t ( f ( x ) ≠ h t ( x ) ) = e − α t ( 1 − ϵ t ) + e α t ϵ t

 上式中, I(⋅) I ( ⋅ ) 是訓示函數,在 ⋅ ⋅ 為真和假時分别取值為1,0, ϵt=Px∼Dt(ht(x)≠f(x)) ϵ t = P x ∼ D t ( h t ( x ) ≠ f ( x ) ) ,考慮指數損失函數的導數:

∂lexp(αtht|Dt)∂αt=−e−αt(1−ϵt)+eαtϵt(9) (9) ∂ l e x p ( α t h t | D t ) ∂ α t = − e − α t ( 1 − ϵ t ) + e α t ϵ t

 使上式為零,可解得:

αt=12ln(1−ϵtϵt)(10) (10) α t = 1 2 l n ( 1 − ϵ t ϵ t )

 式 (10) ( 10 ) 即為 αt α t 的求解結果。

ht(x) h t ( x ) 的求解:

 adaboost算法在獲得 Ht−1 H t − 1 之後樣本分布将進行調整,使下一輪的基學習器 ht h t 能糾正 Ht−1 H t − 1 的一些錯誤,理想的 ht h t 能糾正 Ht−1 H t − 1 的全部錯誤,即最小化為:

lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)+ht(x))]=Ex∼Dt[e−f(x)(Ht−1(x)e−f(x)ht(x)](11) (11) l e x p ( H t − 1 + h t | D t ) = E x ∼ D t [ e − f ( x ) ( H t − 1 ( x ) + h t ( x ) ) ] = E x ∼ D t [ e − f ( x ) ( H t − 1 ( x ) e − f ( x ) h t ( x ) ]

 注意到 f2(x)=h2t(x)=1 f 2 ( x ) = h t 2 ( x ) = 1 ,因為 f(x)∈{−1,+1},ht(x)∈{−1,+1} f ( x ) ∈ { − 1 , + 1 } , h t ( x ) ∈ { − 1 , + 1 } ,上式使用 e−f(x)ht(x) e − f ( x ) h t ( x ) 的泰勒展開式近似為:

lexp(Ht−1+ht|Dt)=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+f2(x)h2t(x)2)]=Ex∼Dt[e−f(x)(Ht−1(x)(1−f(x)ht(x)+12)](12) (12) l e x p ( H t − 1 + h t | D t ) = E x ∼ D t [ e − f ( x ) ( H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + f 2 ( x ) h t 2 ( x ) 2 ) ] = E x ∼ D t [ e − f ( x ) ( H t − 1 ( x ) ( 1 − f ( x ) h t ( x ) + 1 2 ) ]

 上式中 ex e x 的泰勒展開式為: ex=1+x+x22!+⋯+xnn!+o(xn) e x = 1 + x + x 2 2 ! + ⋯ + x n n ! + o ( x n )

 于是,理想的基學習器:

ht(x)=argminhlexp(Ht−1+h|D)=argminhEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+12)]=argmaxhEx∼D[e−f(x)Ht−1(x)f(x)h(x)]=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)](13) (13) h t ( x ) = arg ⁡ min h ⁡ l e x p ( H t − 1 + h | D ) = arg ⁡ min h ⁡ E x ∼ D [ e − f ( x ) H t − 1 ( x ) ( 1 − f ( x ) h ( x ) + 1 2 ) ] = arg ⁡ max h ⁡ E x ∼ D [ e − f ( x ) H t − 1 ( x ) f ( x ) h ( x ) ] = arg ⁡ max h ⁡ E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ]

 上式中, Ex∼D[e−f(x)Ht−1(x)] E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] 是一個常數,令 Dt D t 為一個分布:

Dt(x)=D(x)e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)](14) (14) D t ( x ) = D ( x ) e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ]

 則根據數學期望的定義,這等價于:

ht(x)=argmaxhEx∼D[e−f(x)Ht−1(x)Ex∼D[e−f(x)Ht−1(x)]f(x)h(x)]=argmaxhEx∼Dt[f(x)h(x)](15) (15) h t ( x ) = arg ⁡ max h ⁡ E x ∼ D [ e − f ( x ) H t − 1 ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] f ( x ) h ( x ) ] = arg ⁡ max h ⁡ E x ∼ D t [ f ( x ) h ( x ) ]

 因為, f(x),h(x)∈{−1,+1} f ( x ) , h ( x ) ∈ { − 1 , + 1 } ,有:

f(x)h(x)=1−2I(f(x)≠h(x))(16) (16) f ( x ) h ( x ) = 1 − 2 I ( f ( x ) ≠ h ( x ) )

 這是因為:

f(x) f ( x ) h(x) h ( x ) f(x)h(x) f ( x ) h ( x ) I(f(x)≠h(x)) I ( f ( x ) ≠ h ( x ) )
-1 -1 1
-1 +1 -1 1
+1 +1 1
+1 -1 -1 1

 是以有, f(x)h(x)=1−2I(f(x)≠h(x)) f ( x ) h ( x ) = 1 − 2 I ( f ( x ) ≠ h ( x ) )

 則理想的基學習器為:

ht(x)=argmaxhEx∼Dt[f(x)h(x)]=argminhEx∼Dt[I(f(x)≠h(x))](17) (17) h t ( x ) = arg ⁡ max h ⁡ E x ∼ D t [ f ( x ) h ( x ) ] = arg ⁡ min h ⁡ E x ∼ D t [ I ( f ( x ) ≠ h ( x ) ) ]

 由此可見,理想的 ht h t 将在分布 Dt D t 下最小化分類誤差。是以,弱分類器将基于分布 Dt D t 來訓練,且針對 Dt D t 的分類誤差應小于0.5,這在一定程度上類似”殘差逼近”的思想,考慮到 Dt D t 和 Dt+1 D t + 1 的關系,有:

Dt+1(x)=D(x)e−f(x)Ht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]=D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)]=Dt(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht−1(x)]Ex∼D[e−f(x)Ht(x)](18) (18) D t + 1 ( x ) = D ( x ) e − f ( x ) H t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] = D ( x ) e − f ( x ) H t − 1 ( x ) e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t ( x ) ] = D ( x ) e − f ( x ) H t − 1 ( x ) e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ] = D t ( x ) e − f ( x ) α t h t ( x ) E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ]

 至此, ht(x) h t ( x ) 的表達式推導完畢。

繼續閱讀