Sean talks

Attitude is everything

0%

[ML] Ensemble - Boosting, Stacking

Boosting (梯度提升)

相較對於 bagging 是以多個強分類器 (Strong Classifier) 組合不同,boosting 方法是藉由多個弱分類器 (Weak Classifier) 組合成為一個強分類器。

其中弱分類器的 error rate 需要略低於 50%,透過 ensemble 來使分類準確度逐步趨近於1。

其中訓練 boosting clf. 的方法是

  • 建構第一個分類器 $f_{1}(x)$
  • 建構第二個分類器 $f_{2}(x)$ 以幫助 $f_{1}(x)$ 預測分類
    • 若 $f_{2}(x)$ 相似於 $f_{1}(x)$ 會沒有效果
  • 建構第 N 個分類器 …
  • 因此 boosting clf. 是具時序性的。

其中, boosting 的模型特性能夠有效降低 bias

AdaBoost

如何建構不同的 Classifier

如果在訓練新的的分類器時,使用與舊有分類器相同的 datasets ,錯誤分類的資料還是容易做出錯誤分類,因此 AdaBoost 的作法是透過隊訓練資料做 re-weighting ,使得新的分類器能針對學習錯誤分類的資料以得到更好的效果。

AdaBoost 演算法如下:
note1
note2

由於 boosting 訓練時著重在分類錯誤的資料,因此對於資料的 noise 十分敏感,因此不適用在 noise 多的資料中進行分類。

使用 AdaBoost 弔詭的是當 training error 達到 0 時, testing error 卻仍持續下降。

$g(x)$ 表示 weak clf. 整合的輸出結果,而 Margin 代表分類器分類正確的情形, 大於 0 代表正確分類,小於 0 則表示錯誤分類。

note3

其中若使 Margin 愈大,則 penalty 則越小。

note4

Optimize

Minimize $L(g) = \sum_n l(\hat{y}^n, g(x^n)) $

Gradient Boosting

Gradient Descent 的計算如:
$y=F−∂L/∂F$

欲使 $g_{t-1}(x)$
之 weak clf. 更新使其欲接近 g(t),因此可這樣更新:
$g_t(x) = g_{t-1}(x)-η ∂L(g)/∂g(x)$

ppt.ensemble.page.36-39

Stacking (Stacked Generalization)

stacking

一般 ensemble(bagging/boosting) 的 aggregation 方法會使用 (voting/averaging) 來實現。

Stacking 又稱為 Stacked Generalization,是透過建構 meta-learner,將訓練好 n 個 base-learner 的輸出結果作為輸入,學習各 model 的權重,輸出預測結果。
而通常這個 meta-learner 會使用較為簡單的分類模型,如 Logistic regression。

其中 Stacking 可以來實現 Bagging方式, 也可以來實現Boosting方式。

References