1、提升方法
提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合弱分类器,构成一个强分类器。大多数提升的方法都是改变训练数据的的概率分布(训练数据的权值分布)。
2、提升方法相关问题
(1)在每一轮如何改变训练数据的权值或者概率分布?
Adaboost的做法就是,提高那些前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
(2)如何将弱分类器组合成一个强分类器?
Adaboost采取加权多数表决的方法。加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小弱分类器误差率大的弱分类器的权值,使其在表决中起较小的作用。
3、AdaBoost算法
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
xx | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
步骤:
(1)初始化数据的权值D1={w1,...,wN}D1={w1,...,wN}
一共10个样本,所以
w1=w2=...=w10=1N=0.1w1=w2=...=w10=1N=0.1
(2)在权值分布为D1D1上构建基本分类器G1(x)G1(x)如下
G1(x)=⎧⎩⎨⎪⎪1,x<2.5−1,x>2.5(1)(1)G1(x)={1,x<2.5−1,x>2.5
因为2.5作为分界线使得分类的误差最低。
注意,基本分类器Gm(x)Gm(x)的分类误差的计算如下。即基本分类器对整个数据划分,划分不正确的样本的权值之和。
em=P(Gm(xi)≠yi)=∑Gm(xi)≠yiwmi(2)(2)em=P(Gm(xi)≠yi)=∑Gm(xi)≠yiwmi
(3)计算G1(x)G1(x)在数据集上的误差
因为G1(x)G1(x)分类器的划分界限是5.5,即序号为{7,8,9}{7,8,9}的3个样本被错误分类,他们的权值都是0.1,所以e1=0.3e1=0.3
(3)计算G1(x)G1(x)的系数,公式如下
αm=12log1−emem(3)(3)αm=12log1−emem
注意:公式(3)是个递减函数,意味着分类器的误差越大,其权重系数越小,在表决中作用越小。
所以,α1=12log1−e1e1=0.4236α1=12log1−e1e1=0.4236
(4)更新训练数据的权值分布,公式如下
wi=wie−αmyiGm(xi)∑Ni=1wie−αmyiGm(xi)(4)(4)wi=wie−αmyiGm(xi)∑i=1Nwie−αmyiGm(xi)
注意:公式(4)的−αmyiGm(xi)−αmyiGm(xi)项表明,在分类器正确分类的情况下,该项值<0,而错误分类时候,该项值>0,又exex是个递增函数,意味着错误的样本的权值被加大。
经过公式(4)变换,得到新的权值分布D2D2
D2=(0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)D2=(0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)
从中可以看到原来被错误分类序号为{4,5,6}{4,5,6}的3个样本的权值得到加强。
(5)构建基本分类器的线性组合fm(x)fm(x),公式如下:
fm(x)=∑m=1MαmGm(x)fm(x)=∑m=1MαmGm(x)
当前的线性组合为
所以f1(x)=α1G1(x)=0.4236∗G1(x)f1(x)=α1G1(x)=0.4236∗G1(x)
分类器sign[f1(x)]sign[f1(x)]在训练集上有3个错分样本。
其中,sign(x)或者Sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负):当x>0,sign(x)=1;当x=0,sign(x)=0;当x<0, sign(x)=-1。
由于线性组合分类器还有错误样本。所以,继续上面的步骤(2)-(5).
(6)在权值分布为D2D2上构建基本分类器G2(x)G2(x)如下
G2(x)=⎧⎩⎨⎪⎪1,x<8.5−1,x>8.5(5)(5)G2(x)={1,x<8.5−1,x>8.5
因为新的权值分布如下,取分界限8.5时候序号为{4,5,6}{4,5,6}的3个样本被错误分类,他们的权值都是0.07143,使得误差最小,为e2=0.07143∗3=0.21429e2=0.07143∗3=0.21429。(注意,前一轮错误分类的序号为{7,8,9}{7,8,9},在本轮中被正确分类了,因为其权值变大,使得不能再错误分类他们,如果继续错误分类他们,根据误差的计算原理,计算得出的误差将比较大)
D2=(0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)D2=(0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)
(7)计算α2,D3等α2,D3等
得到f2=α1G1(x)+α2G2(x)f2=α1G1(x)+α2G2(x)
判断sign[f2(x)]sign[f2(x)]是否还有错误分类的点
。。。
最终得到分类器
G(x)=sign[fm(x)]G(x)=sign[fm(x)]