AdaBoost算法

对于使用提升(Boosting)方法,需要解决两个问题:

  1. 如何改变每一轮训练数据的权重或者概率分布;
  2. 如何将各个弱分类器(弱学习器)组合成一个强分类器(强学习器)。

AdaBoost算法的做法是:

  • 提高那些前一轮被弱分类器错误分类样本的权重,降低那些被正确分类样本的权重;
  • 对于弱分类器的组合,AdaBoost采取的是加权多数表决的方法。具体做法是:加大分类误差率小的弱分类器的权重,使其在表决中起较大作用;减小分类误差率大的弱分类器的权重,使其在分类中表决中起较小的作用。

AdaBoost算法过程:
假设有训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)}
其中xiXRn,i=1,2,...,n
类标yiY={1,+1},i=1,2,...,n
最终训练出一个强分类器G(x)

1、初始化训练数据的权值分布,确保每份训练数据的权重一致:

D=(w1,...,wi,...,wN)
其中
wi=1N,i=1,2,...,N
2、用训练数据集T训练M个弱分类器Gm(x),则可以得到M个的权值分布,即有:
Gm(x):XY
Dm=(wm1,wm2,...,wmi,wmN)
其中m=1,2,...,M

3、计算Gm(x)在训练数据集上的分类误差率

em=P(Gm(xi)yi)=i=1NI(Gm(xi)yi)N
4、计算Gm(x)系数
αm=12ln1emem
αm的图像如下
AdaBoost算法
由图像可知,随着分类误差率em越大,Gm(x)系数αm会越小。

4、更新训练数据的权值分布:

Dm+1=(wm+1,1,wm+1,2,...,wm+1,i,wm+1,N)
Zm=i=1Nwmi·exp(αmyiGm(xi))
wm+1,i=wmi·exp(αmyiGm(xi))Zm
5、构建弱分类器的线性组合:
f(x)=m=1MαmGm(x)
6、最终经过M轮迭代,构建出来的强分类器为:
G(x)=sign(f(x))=sign(m=1MαmGm(x))
其中sign(x)是一个符号函数,它符合:
sign(x)={1,x>00,x=01,x<0

AdaBoost算法