本文部分转载
1、来源于统计学习方法的提升算法
提升算法是一种常用的统计学习算法,应用十分广泛且有效。在实际应用中,通过改变训练样本的权重来学习多个分类器,并将这些分类器进行线性组合来提高分类器的性能。提升算法的基本思想是:对一个复杂的任务来说,将多个分类器(弱分类器)进行适当的组合来得到最后的输出(强分类器),这个输入要比其中任何一个单独的输出都要好。就是我们所说的“三个臭皮匠顶个诸葛亮”。
也就是说,在学习中,我们已经得到了弱分类器,接下来就是要把它提升为强分类器。但是弱分类器算法通常比强分类器容易的多,如何具体实现提升的呢?最具代表性的便是Adaboost算法。
2、Adaboost算法
AdaBoost算法的具体做法是:
(1)提高那些被前一轮弱分类器错误分类样本的权值。
(2)采用加权多数表决的方法。
输入:训练数据集T={(x1,y1),(x2,y2),…(xN,yN)},其中xi∈X⊆Rn,yi∈Y={−1,+1};弱学习算法。
输出:最终分类器G(x)。
(1)初始化训练数据的权值分布
D1=(w11,…,w1i,…,w1N),w1i=1N,i=1,2,…,N
注:第一次训练弱分类器时各个样本的权值是相等的。
(2)对m=1,2,…,M 注:这里是个循环
(a)使用具有权值分布Dm的训练数据集学习,得到基本分类器
Gm:X→{−1,+1}
(b)计算Gm(x)在训练集上的分类误差率
em=P(Gm(xi)≠yi)=∑i=1nwmiI(Gm(xi)≠yi)
注:I(Gm(xi)≠yi):不等函数I值为1.相等函数值为0。
(c)计算Gm(x)的系数
αm=12log1−emem
这里的对数是自然对数。注:显然α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成为一个概率分布。
注:自已比较Zm与wm+1,i的表达式,会发现这里的Zm就是在对wm+1,i进行归一化工作。
(3)构建基本分类器的线性组合
f(x)=∑m=1MαmGm(x)
得到最终分类器
G(x)=sign(f(x))=sign(∑m=1MαmGm(x))
注:对于增大分类错误数据的权值和分类误差计算的说明:
1、Gm(x)的系数
αm=12log1−emem
αm表示Gm(x)在最终分类器中的重要性。由αm的表达式可知,当em⩽12时,αm⩾0 ,并且αm随着em的减小而增大,所以分类误差越小的基本分类器在最终分类器中的作用越大。
2、计算基本分类器Gm(x)在加权训练数据集上的分类误差率:
em=P(Gm(xi)≠yi)=∑Gm(xi)≠yiwmi
,这里,wmi表示第m轮中第i个实例的权值,∑Ni=1=1(因为权值利用Zm进行了归一化)。这表明,Gm(x)在加权的训练数据集上的分类误差是被Gm(x)误分类杨蓓的权值之和,由此可以看出数据权值分布Dm与基本分类器Gm(x)的分类误差率的关系。