提升方法需要解决两个问题:一是在每一轮如何改变训练数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。对于第一个问题,AdaBoost算法是提高那些前一轮弱分类器错误分类样本的权重,而降低那些被正确分类样本的权重,这使得那些没有被正确分类的样本由于其权重的加大而受到后一轮的弱分类器的更大关注。对于第二个问题,AdaBoost采取加权多数表决的方法,即加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的若分类器的权值,使其在表决中起较小的作用。
一、AdaBoost算法
输入:训练数据集
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
,其中
xi∈Rn,yi∈{+1,−1}
。
输出:最终分类器
G(x)
(1)初始化训练数据的权值分布
D1=(w11,⋯,w1i,⋯,w1N),w1i=1N,i=1,2,⋯,N
这里初始情况假设训练数据集具有均匀的权值分布。
(2)对 m=1,2,⋯,M (按照以下步骤逐个训练出M个分类器,循环以下操作 Gm(x)→em→αm→Dm+1 )
(a)使用具有权值分布 Dm 的训练数据集学习,得到基本分类器
Gm(x):xi→{+1,−1}
(b)计算 Gm(x) 在训练数据集上的分类误差率
em=P(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)
wmi 表示第m个分类器训练时用到的的第i个样本的权重,分类误差率是被 Gm(x) 误分类样本的权值之和。
(c)计算 Gm(x) 的系数
αm=12log1−emem
这里的对数是自然对数,当 em≤12 时, αm≥0 ,并且 αm 随着 em 的减小而增大,分类误差率小的基本分类器在最终分类器中的作用越大。
(d)更新训练数据集的权值分布
Dm+1=(wm+1,1,⋯,wm+1,i,⋯,wm+1,N)wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,⋯,N
这里, Zm 是规范化因子
Zm=∑i=1Nwmiexp(−αmyiGm(xi))
它使 Dm+1 成为一个概率分布。不改变训练集,不断改变训练数据权重的分布,使得训练数据作用不同。
(3)构建基本分类器的线性组合
f(x)=∑m=1MαmGm(x)
得到最终分类器
G(x)=sign(f(x))=sign(∑m=1MαmGm(x))
例子: