本博客內容摘自李航老師的《統計學習方法》,加以一些整理。
相關概念
提升(boosting)方法是一種常用的統計學習方法,應用廣泛且有效。在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提高分類的性能。
對於分類問題而言,給定一個訓練集,求比較粗糙的分類規則(弱分類器)要比求精確的分類規則(強分類器)容易得多。提升(booting)方法就是從弱學習算法出發,反覆學習,得到一系列弱分類器(又稱爲基本分類器),然後組合這些弱分類器,構成一個強分類器。大多數的提升方法都是改變訓練數據的概率分佈(訓練數據的權值分佈),針對不同的訓練數據分佈調用弱學習算法學習一系列弱分類器。
所以對於提升方法而言,有兩個問題需要解決:一是在每一輪如何改變訓練數據的權值或者概率分佈;二是如何將弱分類器組合成一個強分類器。
對於第一個問題,AdaBoost的做法是,提高那些被前一輪弱分類器錯誤分類樣本的權值,而降低那些被正確分類樣本的權值。這樣一來,那些沒有得到正確分類的數據,由於其權值的加大而受到後一輪的弱分類器的更大關注。於是,分類問題被一系列的弱分類器」分而治之」。
對於第二個問題,即弱分類器的組合,AdaBoost採取加權多數表決的方法。具體地,加大分類錯誤率小的弱分類器的權重,使其在表決中起較大的作用,減少分類誤差率大的弱分類器的權值,使其在表決中起較小的作用。
AdaBoost算法
假定給定一個二分類的訓練數據集:
T={(x1,y1),(x2,y2),...,(xN,yN)}
其中,每個樣本點由實力和標記組成。實例
xi∈X⊆Rn
(表示實數),標記
yi∈Y={−1,+1}
,即有兩種標籤的數據,用
{−1,+1}
來表示這兩種類別;
X
是實例空間,
Y
是標記集合。AdaBoost算法利用以下算法,從訓練數據中學習一系列弱分類器或基本分類器,並將這些弱分類器線性組合成一個強分類器。
AdaBoost描述:
輸入:訓練數據集
T={(x1,y1),(x2,y2),...,(xN,yN)}
,其中
xi∈X⊆Rn,yi∈Y={−1,+1}
;得到弱學習算法;
輸出:最終分類器
G(x)
算法步驟:
(1)初始化訓練數據的權值分佈
D1=(w11,...,w1i,...,w1N),w1i=1N,i=1,2,...,N(2.1)
D是用來描述各樣本的權值分佈的。
(2)對
m=1,2,...,M
,
m
表示迭代的次數
(a)使用具有權值分佈
Dm
的訓練數據集學習,得到基本分類器:
Gm(x):X⟶{−1,+1}
(b)計算
Gm
在訓練數據集上的分類誤差率
em=P(Gm(xi)≠yi)=∑i=1NwmiI(Gm≠yi)(2.2)
其中
I(Gm≠yi)={0,1}
,當分類正確時,等於0;分類錯誤時,等於1;
Gm(xi)
表示第
m
輪得到的弱分類器
Gm
對第
i
個樣本
xi
的分類結果,
yi
表示第
i
個樣本的真實類別。
注意計算誤差率是用到了權重分佈
D
中的
wm
。
(c) 計算
Gm(x)
的係數
αm=12log1−emem(2.3)
這裏的對數是自然對數。可以發現,當錯誤率
em
越大時,
am
越小。這個參數將會用在集成階段。
(d)更新訓練數據集的權值分佈
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)(2.4)
wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,...,N(2.5)
這裏,
Zm
是規範化因子,使得總的
wm+1
值和爲1.
Zm=∑i=1Nwmiexp(−αmyiGm(xi))(2.6)
它使得
Dm+1
成爲一個概率分佈。
(3)構建基本分類器的線性組合
f(x)=xi))(2.6)
它使得
Dm+1
成爲一個概率分佈。
(3)構建基本分類器的線性組合
f(x)=∑m=1MαmGm
成爲一個概率分佈。
(3)構建基本分類器的線性組合
f(x)=∑m=1MαmGm(x)(2.7)
錯誤率越低的弱分類器對應的
α
值越大,使其在表決中起較大的作用。
得到最終的分類器
(
x
)
=
∑