【機器學習】AdaBoost 原理詳解 數學推導
AdaBoost 自適應 增強 Boosting系列代表演算法,對同一訓練集訓練出不同的(弱)分類器,然後集合這些弱分類器構成一個更優效能的(強)分類器 傳統Boosting方法存在兩個問題: 1. 如何調整訓練集的權重分佈以訓練出不同的弱分類器 2. 如何將各個弱分類器聯合起來組成一個強分類器
AdaBoost解決方案: 1.從均勻權重分佈開始,後一輪弱分類器的輸入權重分佈將 ·提高前一輪弱分類器分類錯誤樣本的權重 ·降低前一輪弱分類器分類正確樣本的權重 2.計算各個弱分類器 在訓練集上的分類誤差率,根據誤差率計算各個弱分類器的 加權係數 ·對新樣本進行分類時,將各個弱分類器的計算結果加權求和,求得最終的分類結果
假設訓練一個含有m個弱分類器Gi(i=1,2,...,m)的AdaBoost模型,n個訓練樣本xj,yj(j=1,2,...n),m個弱分類器輸入權重分佈 分別為 第一個分類器:D1(w11, w12, ..., w1j, ..., w1n) 第一個分類器:D2(w21, w22, ..., w2j, ..., w2n) .... :... 第一個分類器:Dm(wm1,wm2,...,wmj,...,wmn) 【注意:任何情況下權重之和都為1,即對Di有 ∑n_j{wij} = 1】
1.初始化 D1中 w1j = 1/n, 按樣本集以D1的權重分佈 來訓練 分類器 G1,得到分類模型 G1(x) ·計算 G1(x) 在訓練集上的 分類誤差率 e: (被G(x)誤分類樣本的權值之和) e1 = P( G1(xj)≠yi ) = ∑n_j{ w1j* I(G1(xj)≠yi)} 【2.19】 其中 I(條件表示式) = 滿足條件時值為1,不滿足條件時為0 ·計算 G1(x) 的加權係數 α: (多分類器整合時使用的權值) α1 = 1/2 * ln( (1-e1)/e1 ) 【2.20】 ·計算 G1(x) 的泛化因子 Z1: Z1 = ∑n_j{ w1j*exp( -α1*yj*G1(xj) ) } 【2.21】
2.更新第二個分類器的權值分佈 D2(w21, w22, ..., w2j, ..., w2n) w2j = (w1j / Z1) * exp( -α1*yj*G1(xj) ) 【2.22】 ·按樣本集以D2的權重分佈 來訓練 分類器 G2,得到分類模型 G2(x) ·計算 G2(x) 在訓練集上的 分類誤差率 e2 ·計算 G2(x) 的加權係數 α2 ·計算 G1(x) 的泛化因子 Z2
3.同步驟2,依次迭代到 第m個分類器 為止 至此,得到m個分類器的 分類模型 G1,G2,...,GM 及其加權係數 α1,α2,...,αm
4.構建m個弱分類器的 線性組合模型 f(x): f(x) = ∑m_i{ αi * Gi(x) } 【2.23】
=》得到最終的AdaBoost分類模型 Cls(x) = sign(f(x)) = sign( ∑m_i{ αi * Gi(x) } ) 【2.24】