1. 程式人生 > >整合演算法(AdaBoost基本原理)

整合演算法(AdaBoost基本原理)

版權宣告:本文為博主原創文章,轉載請帶上我的部落格連結:

文章目錄

1. 引言

提升演算法大多都是基於這樣的一個思想;對於一個複雜的任務來說,將多個專家的判斷進行適當的綜合所得出的判斷,要比其中任何一個專家單獨判斷的好。實際上就是 三個臭皮匠,頂個諸葛亮的道理。
AdaBoost演算法是提升演算法中具有代表性的一種,它通過改變樣本的權重,學習多個分類器,並將這些分類器線性組合,提高分類器的效能。

2. 演算法

輸入:訓練資料集 T

= { ( x 1 , y 1 )
, ( x 2 , y 2 ) .
. . ( x 3 , y 3 ) } T=\{(x_1,y_1),(x_2,y_2)...(x_3,y_3)\} ,其中 x 1 ϵ X ϵ R n x_1\epsilon X\epsilon R_n , y i ϵ Y = { 1 , + 1 } y_i\epsilon Y=\{-1,+1\} ,弱學習方法;
輸出:最終分類器 G ( x ) G(x)
(1)初始化訓練資料的權值分佈 D 1 = ( w l l , . . . , w l i , . . . , w l N ) , w l i = 1 n , i = 1 , 2 , . . . , N D_1=(w_{ll}, ... ,w_li,...,w_{lN}),w_{li}= \frac{1}{n},i=1,2,...,N
(2)對 m = 1 , 2 , . . . , M m=1,2,...,M
(a)使用具有權值分佈 D m D_m 的訓練資料集學習,得到基分類器 G m ( x ) : x { 1 , + 1 } G_m(x):x \overrightarrow{}\{-1,+1\}
(b)計算 G m ( x ) G_m(x) 在訓練集資料上的分類誤差率 e m = P ( G m ( x i ) y i ) = i = 1 n w m i I ( G m ( x i ) y i ) e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^n w_{mi}I(G_m(x_i)\neq y_i)\quad
©計算 G m ( x ) G_m(x) 的係數 a m = 1 2 l o g ( 1 e m ) e m , a_m = \frac 12log\frac{(1-e_m)}{e_m}, 這裡的對數是自然對數
(d)更新訓練資料集權值分佈 D m + 1 = ( w m + l , l , . . . , w m + l , i . . . , w m + l , N ) D_{m+1}=(w_{m+l,l},...,w_{m+l,i}...,w_{m+l,N})
w m + l , i = w m i Z m e x p ( a m y i G m ( x i ) ) , i = 1 , 2... N w_{m+l,i}=\frac {w_mi}{Z_m}exp(-a_m y_iG_m(x_i)),i=1,2...N 這裡 Z m Z_m 是規範化因子
Z m = i =