ML:基礎技法學習
Package:scikit-learn
課程:機器學習技法
簡介:第七講 Blending and Bagging
(meta algorithm 意指建立在其他 base algorithm \(A\) 之上的演算法)
實際 Pocket 情況
每個 Pocket 跑一千輪,共有 25 條 Pocket
可看見產生出一條非線性的 model,分得比原本的好
若演算法對不同的資料越敏感,那麼合併起來可能會更好
sklearn.ensemble.VotingClassifier
sklearn.ensemble.BaggingClassifier
fukatani/stacked_generalization
Package:scikit-learn
課程:機器學習技法
簡介:第七講 Blending and Bagging
Aggregation
- select
- 挑出最好的
- \(G(\mathbf{x})=g_{t_*}(\mathbf{x})\ with\ t_*=argmin_{t \in \{1,2,\cdots ,T\}}E_{val}(g_t^-)\)
- 採用 \(E_{val}(g_t^-)\) 而不使用 \(E_{in}(g_t)\) 在於會提高複雜度,也就是 \(d_{vc}\),可參考此篇
- 只採用一個,可能並不符合 aggregation 的期望
因為若在一堆廢渣中挑選,怎麼挑還是廢渣
但 aggregation 希望的是集合廢渣的能力,造出一個還可以接受的 model - mix uniformly
- 採用所有人的意見,皆給於一票
- \(G(\mathbf{x})=sign(\sum_{t=1}^{T}1\cdot g_t(\mathbf{x}))\)
- \(G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}1\cdot g_t(\mathbf{x})\)
- mix non-uniformly
- 採用所有人的意見,依其專業給於適當票數
- \(G(\mathbf{x})=sign(\sum_{t=1}^{T}\alpha_t\cdot g_t(\mathbf{x}))\ with\ \alpha \ge 0\)
- \(G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}\alpha_t\cdot g_t(\mathbf{x})\ with\ \alpha \ge 0\)
- 事實上,此 model 包含著
- select \(\alpha_t=\left [E_{val}(g_t^-)\ smallest \right ]\)
- mix uniformly \(\alpha_t=1\)
- combine
- 採用所有人的意見,依不同條件及其專業給於適當票數
- \(G(\mathbf{x})=sign(\sum_{t=1}^{T}q_t(\mathbf{x})\cdot g_t(\mathbf{x}))\ with\ q_t(\mathbf{x}) \ge 0\)
- \(G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}q_t(\mathbf{x})\cdot g_t(\mathbf{x})\ with\ q_t(\mathbf{x}) \ge 0\)
- 事實上,此 model 包含著
- mix non-uniformly \( q_t(\mathbf{x})=\alpha_t\)
- 可能具備的效果
- 類似 feature transform,三個 \(g_t(\mathbf{x})\) 組合出更好的解
- 類似 regularization,不同的 PLA 解合併出更中庸的解
Uniform Blending
- blending (voting)
- 適用於已知 \(g_t\) 的情況
- Uniform
- 每個 \(g_t\) 只給予一票
- \(G(\mathbf{x})=sign(\sum_{t=1}^{T}1\cdot g_t(\mathbf{x}))\)
- \(G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}1\cdot g_t(\mathbf{x})\)
- 適用情況
- 若 \(g_t\) 皆一樣,合併後只會跟原本的 \(g_t\) 表現一樣
- \(g_t\) 需具備多樣性,才可能得到更好的 model
- classifier
借由多數 model 的正確性修正少數 mode 的錯誤性 - Regression
有的高估,有的低估,合併可回到平均值,更加的中庸$$ G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}1\cdot g_t(\mathbf{x})\\ \mathrm{avg}(E_{out}(g_t)) =\mathrm{avg}(\mathop{\mathbb{E}} (g_t-G)^2)+E_{out}(G) \ge E_{out}(G) $$ - 考慮一虛擬的過程 for \(t=1,2,\cdots ,T\)
- 從某個分佈 \(P^N\)(i.i.d.) 挑出 \(N\) 筆資料 \(D_t\)
- 從 \(A(D_t)\) 得到 \(g_t\)
-
$$ \mathrm{avg}(E_{out}(g_t))=\mathrm{avg}(\mathop{\mathbb{E}} (g_t-\bar{g})^2)+E_{out}(\bar{g}) $$ 物理意義 bias variance decomposition
演算法的期望表現 = 共識的變異量 + 共識的表現 - 實際上平均的過程,就是在消除變異量
- 如何得到多樣性
- 來自不同的 hypothesises:\(g_1\in H_1,g_2\in H_2,\cdots ,g_T\in H_T\)
- 來自不同的參數: GD with \(\eta =0.001,0.01,\cdots,10\)
- 來自本身演算法的隨機性:PLA 不同的初始值,會有不同的結果
- 來自不同的 data:不同的 data 訓練出不同的 \(g_v^-\)
Linear and Any Blending
- blending (voting)
- 適用於已知 \(g_t\) 的情況
- Linear
- 每個 \(g_t\) 只給予一票
- \(G(\mathbf{x})=sign(\sum_{t=1}^{T}\alpha_t\cdot g_t(\mathbf{x}))\ with\ \alpha \ge 0\)
- \(G(\mathbf{x})=\frac{1}{T}\sum_{t=1}^{T}\alpha_t\cdot g_t(\mathbf{x})\ with\ \alpha \ge 0\)
- 如何求解
-
linear blending = LinModel + hypotheses as transform + constraints
$$ \underset{\alpha\ge0}{min}\ \frac{1}{N}\sum_{n=1}^{N}err\left ( y_n,\sum_{t=1}^{T}\alpha_tg_t(\mathbf{x}_n) \right ) $$ - 實務運用
- 實務上求解,會忽略 constraints \(\alpha\ge0\),因為即使小於 0,也只是把 \(g_t\) 反過來用
就像一個有 99% 錯誤性的 \(g_t\),但反過來用時就變成 99% 正確性的 \(g_t\) - 不可用 \(E_{in}\),會大大提高複雜度,甚至大過 best of best \(\ge d_{VC}(\bigcup_{t=1}^{T} H_t)\)
可參考此篇 - 實務上 \(g_t\) 其實是 \(g_t^-\),選擇最小 \(E_{train}\) 的 \(g_t^-\),再利用 \(E_{val}\) 挑選 \(\boldsymbol\alpha\)
- 演算法
- 從 \(D_{train}\) 得到 \(g^-_1,g^-_2,\cdots ,g^-_T\)
- 將 \(D_{val}\) 的 \(((\mathbf{x}_n,y_n)\) 轉換為 \((\mathbf{z}_n=\Phi ^-(\mathbf{x}_n),y_n)\),\(\Phi ^-(\mathbf{x})=(g^-_1(\mathbf{x}),\cdots,g^-_T(\mathbf{x}) )\)
- 依不同需求
- Linear Blending
- 使用 Linear Model\((\mathbf{z}_n,y_n)\),得到 \(\boldsymbol\alpha\)
- 重新用所有資料 \(D\),得到 \(\Phi (\mathbf{x})=(g_1(\mathbf{x}),\cdots,g_T(\mathbf{x}) )\)
- \(G_{LINB}(\mathbf{x})=\underset{\mathbf{w}=\boldsymbol\alpha}{LinearModel}(\Phi (\mathbf{x}))\)
- Any Blending (Stacking)
- 使用 Any Model\((\mathbf{z}_n,y_n)\) 計算,得到 \(\tilde{g}\)
- 重新用所有資料 \(D\),得到 \(\Phi (\mathbf{x})=(g_1(\mathbf{x}),\cdots,g_T(\mathbf{x}) )\)
- \(G_{ANYB}(\mathbf{x})=\tilde{g}(\Phi (\mathbf{x}))\)
- 可達到 conditional blending
- 非常強大,務必小心 overfitting
Bagging
在 Uniform Blending 中,有個虛擬的過程,若想實現並得到 \(\bar{g}\) 該如何做呢?- 使用有限但很大的 T 數量
- \(g_t=A(\tilde{D}_t)\ from\ \tilde{D}_t\sim P^N\) 的 \(\tilde{D}_t\) 只用 \(D\) 產生
- bootstrapping
- 從現有資料,取任意 N 筆,每取一次就放回去,可得 \(\tilde{D}_t\)
- 假設 N 筆資料,抽 N 次,抽到完全相同的機率為 \(\frac{N!}{N^N}\)
(meta algorithm 意指建立在其他 base algorithm \(A\) 之上的演算法)
實際 Pocket 情況
每個 Pocket 跑一千輪,共有 25 條 Pocket
可看見產生出一條非線性的 model,分得比原本的好
若演算法對不同的資料越敏感,那麼合併起來可能會更好
程式碼
參考
Ensemble methodssklearn.ensemble.VotingClassifier
sklearn.ensemble.BaggingClassifier
fukatani/stacked_generalization
留言
張貼留言