機器學習中一種讓多個弱分類器投票的演算法
Ensemble 手法的一種
使用多個弱分類器合成一個強分類器
Bootstrap aggregating
隨機取樣作為訓練資料,用於搭配複雜的演算法 (如 decision tree) 降低 overfit 的情況。多次隨機取樣訓練出多個模型,最後用 majority vote。
單個分類器可能會 overfit 取樣結果,但 bagging 將所有的分類器總和取平均,相對更於平滑
將多個弱分類器合成一個強分類器
分類器本身只需比隨機還要好一點就行
bagging 和 boosting 有點相反,前者是模型過於複雜,要降低 overfit,後者是模型過於簡單,要提升正確率。
Bagging | Boosting | |
---|---|---|
適用模型 | 複雜 (decision tree) |
簡單 (decision tree stump) |
處理問題 | overfit | underfit |
取樣方式 | 隨機 | 權重 |
合成方式 | majority vote | 權重 |
Adaptive Boosting
Why & How
令 \(h\) 是一個二元分類器,輸出是 \(-1\) 或 \(+1\)
$$ h: \{-1, +1\} $$
若 \(h\) 是弱分類器,我們希望集合多個不同的 \(h\) 形成一個強分類器
$$0$$
$$1$$
$$0.5$$
weak
strong
error
令 \(H\) 是合成的強分類器
$$ H(x) = sign(h^1(x) + h^2(x) + h^3(x)) $$
\(x\) 是 samples
rate
Input space
\(h^1\) wrong
\(h^2\) wrong
\(h^3\) wrong
投票後最差的可能情形是?
Input space
\(h^1\) wrong
\(h^2\) wrong
\(h^3\) wrong
DATA \(\rightarrow h^1\)
\(h^1\) 在原始資料中具有最小 error rate
DATA 在 \(h^1\) 錯誤經過加權 \(\rightarrow h^2\)
\(h^2\) 在加權資料中具有最小 error rate
DATA 在 \(h^2\) 錯誤經過加權 \(\rightarrow h^3\)
\(h^3\) 在加權資料中具有最小 error rate
可以是任何演算法,NN、decision tree
最簡單的例子:一層的 decision tree: decision tree stump
\(h^1\) 是在所有 \(h\) 中作用在原始資料上有最小 error rate
令 error rate \(\epsilon\) 定義為
$$ \epsilon = \sum_{\text{wrong}} \frac{1}{N}$$
\(N\) 是 sample 的數量
\(\epsilon\) 就是錯誤資料量 \(\times \frac{1}{N}\)
\(h\) 在加權資料中具有最小 error rate
$$ w^{t=1}_{i=1} $$
$$ w^{1}_{i=2} $$
$$ w^{1}_{i=3} $$
更正 \(\epsilon\) 定義為加權型式
$$ \epsilon = \sum_{\text{wrong}} w_i $$
$$ w^1_i = \frac{1}{N} $$
$$ \sum{w_i} = 1 $$
其中 \(w^1\) 代表第一輪資料的權重
$$ H(x) = sign( \qquad h^1(x) + \qquad h^2(x) + \qquad h^3(x) + \cdots) $$
$$\alpha^1$$
$$\alpha^2$$
$$\alpha^3$$
令 \(w^1_i = \frac{1}{N} \)
挑出 \(h^t\) 使得 \(\epsilon^t\) 最小
計算 \(w^{t+1}\)
計算 \(\alpha^{t}\)
error rate \( \epsilon \)
$$ \epsilon = \sum_{\text{wrong}} w_i $$
\(N\): sample 數量
\(w^t_i\): 第 t 輪第 i 個資料的權重
\(h^t\): 第 t 輪挑出來的分類器,它使得 \(\epsilon^t\) 最小
\(\alpha^t \): 給第 t 輪挑出的分類器 \(h^t\) 的權重
\(H\): 將每輪的弱分類器合併後得到的強分類器
$$\alpha^t = \frac{1}{2}ln\frac{1-\epsilon^t}{\epsilon^t}$$
$$ w^{t+1}_i = \frac{w^t_i}{Z} \times \begin{cases} \sqrt{\frac{\epsilon^t}{1-\epsilon^t}} \quad \text{correct} \\ \sqrt{\frac{1-\epsilon^t}{\epsilon^t}} \quad \text{incorrect} \end{cases}$$
\(Z\): normalize 總和為\(1\)
推導......略!
$$\sum_{\text{correct}}{w^{t+1}} = \frac{1}{2}$$
$$\sum_{\text{wrong}}{w^{t+1}} = \frac{1}{2}$$
$$w^{t+1}_{i} = \begin{cases}\frac{w^t}{2}\frac{1}{1-\epsilon} \quad \text{correct} \\ \frac{w^t}{2}\frac{1}{\epsilon} \qquad \text{wrong} \end{cases}$$
答對的 weight 經過總和再縮放會等於 \(\frac{1}{2}\)
答錯的 weight 也是