提升方法需要回答两个问题:
- 一是在每一轮如何改变训练数据的权值和概率分布
- 二是如何将弱分类器组合成一个强分类器。
先对上述问题做简单的回答:
- 提高那些被前一轮弱分类器错误分类样本的权值(因为它们的数量少。需要在下一轮训练的时候给予他们更大的关注)。
- 加权多数表决,误差率小的分类器权值比较大。
Adaboost
输入: 训练集
T=(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
(
x
3
,
y
3
)
,
.
.
.
,
(
x
N
,
y
N
)
, 其中
x∈XRn,yi∈Y={+1,−1}
x
∈
X
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
; 弱学习算法
输出:最终分类器G(x)
- 初始化权值分布 D1=(w1,1,...,w1,i,...,w1,N) D 1 = ( w 1 , 1 , . . . , w 1 , i , . . . , w 1 , N )
对 m = 1, … , M
1) 训练弱分类器 Gi G i
2) 计算当前弱学习器的误差率 em e m :em=P(Gm(xi)≠yi)=∑Gm(xi≠yi)wmi e m = P ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ≠ y i ) w m iem e m 的本质是被 Gm(x) G m ( x ) 误分类样本分类器的G_i(x).
3) 计算权值 αm α m ,αm=12log1−emem α m = 1 2 l o g 1 − e m e m可以看出, em e m 越大,则 αm α m 越小(误差大的权重小)。
4) 更新数据集的权值分布
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N) D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , i , . . . , w m + 1 , N )wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,3,...N w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) , i = 1 , 2 , 3 , . . . NZm=∑j=1Nwmjexp(−αmyjGm(xj)) Z m = ∑ j = 1 N w m j e x p ( − α m y j G m ( x j ) )
Zm Z m 是归一化因子,它使 Dm+1 D m + 1 成为一个概率分布
wm+1,i w m + 1 , i 还可以写成:
wm+1,i=wmiZmexp(−αm),Gm(xi)=yi w m + 1 , i = w m i Z m e x p ( − α m ) , G m ( x i ) = y i
wm+1,i=wmiZmexp(αm),Gm(xi)≠yi w m + 1 , i = w m i Z m e x p ( α m ) , G m ( x i ) ≠ y i
所以,我们可以再次看出,误分类的样本的权值比正确分类的样本权值高。误分类样本的权值被放大 e2αm=em1−em e 2 α m = e m 1 − e m- 构建弱分类器的组合
f(x)=∑mMαmGm(x) f ( x ) = ∑ m M α m G m ( x )
αm α m 将决定不同分类器的权重 - 4.