1. 程式人生 > >【機器學習】AdaBoost 原理詳解 數學推導

【機器學習】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】