Adaboost原理

2018-10-28  本文已影响0人  阿童89

AdaBoost的基本步骤是调整每次分错样本的权值
训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去
一、算法步骤
1、初始化训练数据的权值分布
设训练数据集T={(x_{1},y_{1}),(x_{2},y_{2})...(x_{N},y_{N})}
c初始化权值分布D_{1}:
D_{1}=(w_{11},w_{12}...w_{1i}...,w_{1N}),w_{1i}=1/N

2、使用具有权值分布D_{m}的训练数据集进行学习,得到基分类器
G_{m}(x), 例如得到如下基分类器:
G_{m}(x)=\left\{\begin{matrix} 1 & x>2.5\\ -1& x<=2.5 \end{matrix}\right.

3、计算G_{m}(x)在训练数据集上的分类误差率:
e_{m}=P(G_{m}(x_{i})\neq y_{i} )=\sum_{i=1}^{N}I(G_{m}(x_{i})\neq y_{i})
其中:I(G_{m}(x_{i})\neq y_{i})=\left\{\begin{matrix} 1 & G_{m}(x_{i})\neq y_{i}\\ 0& G_{m}(x_{i})= y_{i} \end{matrix}\right.

4、计算G_{m}(x)的系数:
\alpha_{m}=\frac{1}{2}log\frac{1-e_{m}}{e_{m}}

5、更新训练数据集的权值分布
D_{m+1}=(w_{m+1,1},w_{m+1,2}...w_{m+1,i}...,w_{m+1,N})
w_{m+1,i}=\frac{w_{mi}}{Z_{m}}exp(-\alpha_{m}y_{i}G_{m}(x_{i}))
注:
分类器之所以会存在,e_{m}大多数情况都小于0.5,即\frac{1-e_{m}}{e_{m}}>1,则α_{m}>0,如果分类错了,y_{i}G_{m}<0,则-\alpha_{m}y_{i}G_{m}(x_{i})>0,则exp(-\alpha_{m}y_{i}G_{m}(x_{i}))>1,最终的结果是w_{m+1,i}>w_{mi},这样保证了分错的样本权重变大,分对的样本权重变小
其中:
Z_{m}=\sum_{i=1}^{N}w_{mi}exp(-\alpha_{m}y_{i}G_{m}(x_{i}))
他的目的是是使得\sum_{i=1}^{N}w_{m+1,i}=1,也使得D_{m+1}成为一个概率分布

6、利用更新权值后的训练样本训练新的基分类器,重复以上步骤

7、构建基本分类器线性组合:
f(x)=\sum_{m=1}^{M}\alpha_{m}G_{m}(x)

8、

上一篇 下一篇

猜你喜欢

热点阅读