集成學習(Ensembling Learning)
標簽(空格分隔): 機器學習
Adabost
對於一些弱分類器來說,如何通過組合方法構成一個強分類器。一般的思路是:改變訓練數據的概率分布(權值分布),針對不同的訓練數據分布調用弱學習算法學習一系列的弱分類器,然后將他們組合起來,形成強分類器。
需要解決的問題有:
- 在每一輪如何改變訓練數據的權值或概率分布?
- 如何將若分類器組合成一個強分類器。
已知數據集\(T = \{(x_{1},y_{1}),(x_{2},y_{2}),..., (x_{n},y_{n}) \}\)
- 初始化訓練數據集\(T\)的權值分布:\(D_{1} = \{w_{11}, w_{12},..., w_{1n} \}\),則預測的損失函數為:\(J = \sum_{i=1}^{n}w_{1i}L(\hat{y}_{i} - y_{i})\);
- 使用帶有權值分布的數據集\(D_{1}\)學習,得到一個基本分類器:\(G_{1}(x)\);
- 計算分類器\(G_{1}(x)\)在訓練數據集上的分類誤差率:\(\epsilon_{1} = \sum_{i=1}^{n}w_{1i}I(G_{1}(x_{i}) \neq y_{i})\);(該分類錯誤率 為)
- 計算每個分類器的系數:\(\alpha_{1} = \frac{1}{2}ln\frac{1-\epsilon_{1}}{\epsilon_{1}}\).
- 根據下式更新數據集分布\(D_{m}\): (\(w_{mi}\)為第m個分類器中每個數據i的權重)
(通過上式計算,可以使被基本分類器\(G_{m}\)正確分類的樣本的權值減小,而錯誤分類的樣本權值增大)
6. 最終分類器為:\(G(x) = sign(\sum_{m=1}^{M}\alpha_{m}G_{m}(x))\)
梯度提升(Gradient Boosting)
與Adaboost不同的是,每一步的弱預測模型生成都是依據損失函數的梯度方向,則稱之為梯度提升。
梯度提升算法首先給定一個目標損失函數,它的定義域是所有可行的弱函數集合(基函數);
提升算法通過迭代的選擇一個扶梯度方向上的基函數來逐漸逼近局部極小值。
首先,給定輸入向量x和輸出變量y組成的若干訓練樣本\(\{(x_{1}, y_{1}), (x_{2}, y_{2}),...,(x_{n}, y_{n}) \}\),目標是找到近似函數\(\hat{F}(x)\),使得損失函數\(L(y,F(x))\)的損失值最小。
-
給定常函數\(F_{0}(x):\) \(F_{0}(x) = argmin_{\gamma}\sum_{i=1}^{n}L(y_{i}, \gamma)\)
-
對於m=1 到 M
a. 計算偽殘差\(r_{im} = [\frac{\partial L(y_{i}, F(x_{i}))}{\partial F(x_{i})}]_{F(x) = F_{m-1}(x)}\);
b. 使用數據\(\{(x_{i},r_{im})\}_{i=1}^{n}\)計算擬合殘差的基函數\(f_{m}(x)\);
c. 計算步長\(\gamma_{m} = argmin_{\gamma}\sum_{i=1}^{n}L(y_{i},F_{m-1}(x_{i}) - \gamma * f_{m}(x_{i}))\); -
更新模型\(F_{m}(x) = F_{m-1}(x) - \gamma_{m}f_{m}(x_{i})\).
