一、算法思想
对于分类问题而言,给定一个训练数据集,求比较粗糙的分类规则要比求精确的分类规则容易得多。集成学习就是从弱学习算法出发,反复学习,得到一系列弱分类器,若后组合这些弱分类器,构成一个强分类器。大多数的集成学习方法都是改变训练数据集的概率分布,针对不同的训练数据分布调用弱学习算法学习一系列分类器。
对于集成学习方法有两个问题需要回答:1. 在每一轮如何改变训练数据的权值或概率分布;2. 若何将弱分类器组合成强分类器。
对于第一个问题,AdaBoost的做法是,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于权值的加大而受到后一轮弱分类器的更大关注。至于第二个问题,AdaBoost采取加权多数表决的方法,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用。减小分类误差率较大的弱分类器的权值,使其在表决中起较小的作用。
AdaBoost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。
二、AdaBoost算法
输入:训练数据集T=(x1,y1),⋯,(xn,yn),其中 xi∈Rn,yi∈{+1,−1} ;弱学习算法
输出:最终分类器G(x)
(1)初始化训练数据的权值分布
D1=(w11,⋯, w1N),w1i=1N,i=1,2,⋯,N
(2)对 M=1,2,⋯,m (M表示第几轮)
(a)使用具有权值分布Dm的训练数据集学习,得到基本分类器
Gm(x):X→{−1,+1}
(b)计算Gm(x)在训练数据集的上的分类误差率
em=P(Gm(xi)!=yi)=∑i=1NwmiI(Gm(xi)!=yi)
(c)计算Gm(x)的系数
am=12ln1−emem
(d)更新训练数据集的权值分布
Dm+1={wm+1,1,⋯,wm+1,N}wm+1,i=wmiZme−amyiGm(xi)
这里Zm是规范化因子
Zm=∑i=1Nwmie−amyiGm(xi)
使得Dm+1成为一个概率分布
(3)构建基本法分类器的线性组合
G(x)=sign(∑m=1MamGm(x))