adaboost

boosting

Boosting算法是將很多個弱的分類器(weak classifier)進行合成變成一個強分類器(Strong classifier),和Bagging不同的地方是分類器之間是有關聯性的,是透過將舊分類器的錯誤資料權重提高,然後再訓練新的分類器,這樣新的分類器就會學習到錯誤分類資料(misclassified data)的特性,進而提升分類結果。

如果再用全部的data下去訓練,錯的資料永遠都會判錯,因此我們會輸入錯的資料,需要針對錯誤的資料去學習(將錯誤的資料權重加大),那這樣新訓練出來的分類器才能針對這些錯誤判讀的資料得到好的結果。

adaboost

AdaBoost : 讓判斷錯誤的train data提高權重,讓產生新的權重的training set讓舊的分類器 fail掉,但在新的分類器上就去加強學這些權重較大的training set。

最後我們會得到 f1(x),…,fL(x)個分類器。我們需要把 L個分類器的結果做加權總合
$$
H(x) = sign(\sum^{L}_{k=}a_kf_k)和training data的權重不太一樣,錯誤率越低的分類器在最後結果的合成上要佔\較大的權重,下面假設錯誤率分別為0.1, 0.2, 0.4下的權重變化:\
εk=0.1, αk=0.5ln⁡(((1–0.1))/0.1)=1.0986\
εk=0.2, αk=0.5
ln⁡(((1–0.2))/0.2)=0.6931\
εk=0.4, αk=0.5*ln⁡(((1–0.4))/0.4)=0.2027\
$$
和training data的權重不太一樣,錯誤率越低的分類器在最後結果的合成上要佔較大的權重,下面假設錯誤率分別為0.1, 0.2, 0.4下的權重變化:

εk=0.1, αk=0.5 ln⁡(((1–0.1))/0.1)=1.0986
εk=0.2, αk=0.5
ln⁡(((1–0.2))/0.2)=0.6931
εk=0.4, αk=0.5 * ln⁡(((1–0.4))/0.4)=0.2021