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 演算法如下:
由於 boosting 訓練時著重在分類錯誤的資料,因此對於資料的 noise 十分敏感,因此不適用在 noise 多的資料中進行分類。
使用 AdaBoost 弔詭的是當 training error 達到 0 時, testing error 卻仍持續下降。
$g(x)$ 表示 weak clf. 整合的輸出結果,而 Margin 代表分類器分類正確的情形, 大於 0 代表正確分類,小於 0 則表示錯誤分類。
其中若使 Margin 愈大,則 penalty 則越小。
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)
一般 ensemble(bagging/boosting) 的 aggregation 方法會使用 (voting/averaging) 來實現。
Stacking 又稱為 Stacked Generalization,是透過建構 meta-learner,將訓練好 n 個 base-learner 的輸出結果作為輸入,學習各 model 的權重,輸出預測結果。
而通常這個 meta-learner 會使用較為簡單的分類模型,如 Logistic regression。
其中 Stacking 可以來實現 Bagging方式, 也可以來實現Boosting方式。