对于使用提升(Boosting)方法,需要解决两个问题:
- 如何改变每一轮训练数据的权重或者概率分布;
- 如何将各个弱分类器(弱学习器)组合成一个强分类器(强学习器)。
AdaBoost算法的做法是:
- 提高那些前一轮被弱分类器错误分类样本的权重,降低那些被正确分类样本的权重;
- 对于弱分类器的组合,AdaBoost采取的是加权多数表决的方法。具体做法是:加大分类误差率小的弱分类器的权重,使其在表决中起较大作用;减小分类误差率大的弱分类器的权重,使其在分类中表决中起较小的作用。
AdaBoost算法过程:
假设有训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)},
其中xi∈X⊆Rn,i=1,2,...,n;
类标yi∈Y={−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):X→Y
Dm=(wm1,wm2,...,wmi,wmN)
其中
m=1,2,...,M
3、计算Gm(x)在训练数据集上的分类误差率
em=P(Gm(xi)≠yi)=∑Ni=1I(Gm(xi)≠yi)N
4、计算
Gm(x)系数
αm=12ln1−emem
αm的图像如下
由图像可知,随着分类误差率
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,0,−1,x>0x=0x<0