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