在集成学习方法之Bagging,Boosting,Stacking 篇章中,我们谈论boosting框架的原理,在boosting系列算法中,AdaBoost是著名的算法之一。AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。 今天我们就来探讨下AdaBoost分类算法的原理,本篇我们先介绍AdaBoost算法;然后通过误差分析探讨AdaBoost为什么能提升模型的学习精度;并且从前向分步加法模型角度解释AdaBoost;最后对AdaBoost的算法优缺点进行一个总结。
1)从boosting到AdaBoost算法
集成原理中,我们提到的boosting框架的思想是选择同质的基分类器,让基分类器之间按照顺序进行训练,并让每个基分类器都尝试去修正前面的分类。既然这样,怎样才能让同质的基分类器能够修正前面的分类?或者说怎样才能让同质的基分类器之间保持“互助”呢? AdaBoost的做法是,让前一个基分类器
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 在当前基分类器
f
t
(
x
)
f_t(x)
f t ( x ) 的训练集上的效果很差(和我们随机瞎猜一样),这样
f
t
(
x
)
f_t(x)
f t ( x ) 就能修正
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 的分类误差,
f
t
(
x
)
f_t(x)
f t ( x ) 和
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 之间也就产生了“互助”。 AdaBoost的具体做法是,通过提高被前一轮基分类器
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 分类错误的样本的权值,降低被正确分类样本的权值,使得上一个基分类器
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 在更新权值后的训练集上的错误率
ϵ
t
−
1
\epsilon_{t-1}
ϵ t − 1 增大到0.5。(再在更新权值后的训练集上训练基分类器
f
t
(
x
)
f_t(x)
f t ( x ) ,那
f
t
(
x
)
f_t(x)
f t ( x ) 必能和
f
t
−
1
(
x
)
f_{t-1}(x)
f t − 1 ( x ) 产生互助。)
2)AdaBoost算法
下面我们在二分类问题上介绍AdaBoost算法。假如给定训练数据集
T
=
{
(
x
i
,
y
i
)
}
i
=
1
n
T=\left\{ (x^i,y^i) \right\}^n_{i=1}
T = { ( x i , y i ) } i = 1 n ,
x
i
∈
R
d
x^i\in R^d
x i ∈ R d ,
y
i
∈
{
−
1
,
1
}
y^i\in\left\{ -1,1\right\}
y i ∈ { − 1 , 1 } 样本权值为
w
i
n
w_i^n
w i n ,误差率
ϵ
i
\epsilon_i
ϵ i 。在训练数据集
T
T
T 上训练第一个基分类器
f
1
(
x
)
f_1(x)
f 1 ( x ) ,其错误率为
ϵ
1
,
ϵ
1
<
0.5
\epsilon_1,\epsilon_1 < 0.5
ϵ 1 , ϵ 1 < 0 . 5 (起码比瞎猜要好一些)
ϵ
1
=
∑
n
w
1
n
δ
(
(
f
1
(
x
n
)
≠
y
^
n
)
Z
1
Z
1
=
∑
n
w
1
n
\epsilon_1=\frac{\sum_nw_1^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_1} \qquad Z_1 = \sum_nw_1^n
ϵ 1 = Z 1 ∑ n w 1 n δ ( ( f 1 ( x n ) = y ^ n ) Z 1 = n ∑ w 1 n 更新样本的权值(权值为
w
2
n
w_2^n
w 2 n )后的训练集为
T
′
{T}'
T ′ ,使得
f
1
(
x
)
f_1(x)
f 1 ( x ) 在
T
′
{T}'
T ′ 分类效果等同于随机瞎猜(
ϵ
=
0.5
\epsilon=0.5
ϵ = 0 . 5 )。用数学语言表示即为
∑
n
w
2
n
δ
(
(
f
1
(
x
n
)
≠
y
^
n
)
Z
2
=
0.5
Z
2
=
∑
n
w
2
n
\frac{\sum_nw_2^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_2}=0.5 \qquad Z_2 = \sum_nw_2^n
Z 2 ∑ n w 2 n δ ( ( f 1 ( x n ) = y ^ n ) = 0 . 5 Z 2 = n ∑ w 2 n 那么样本权重如何更新呢?AdaBoost具体做法是,减小
f
1
(
x
)
f_1(x)
f 1 ( x ) 分类正确的样本的权值,权值除以一个常数
d
d
d ,即
w
1
n
d
1
\frac{w_1^n}{d_1}
d 1 w 1 n ;增大
f
1
(
x
)
f_1(x)
f 1 ( x ) 分类错误的样本的权值,权值乘以一个常数
d
d
d ,即
w
1
n
d
1
w_1^nd_1
w 1 n d 1 。用数学语言表示即为
{
w
2
n
=
w
1
n
d
1
i
f
f
1
(
x
n
)
≠
y
^
n
)
w
2
n
=
w
1
n
d
1
i
f
f
1
(
x
n
)
=
y
^
n
)
\begin{cases} w_2^n = w_1^nd_1 \qquad if \ f_1(x^n)\neq {\hat y}^n)\\ w_2^n = \frac{w_1^n}{d_1} \qquad if \ f_1(x^n)= {\hat y}^n)\\ \end{cases}
{ w 2 n = w 1 n d 1 i f f 1 ( x n ) = y ^ n ) w 2 n = d 1 w 1 n i f f 1 ( x n ) = y ^ n ) 下面我们再回到下式中来,
∑
n
w
2
n
δ
(
(
f
1
(
x
n
)
≠
y
^
n
)
Z
2
=
0.5
\frac{\sum_nw_2^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_2}=0.5
Z 2 ∑ n w 2 n δ ( ( f 1 ( x n ) = y ^ n ) = 0 . 5
其中,
Z
2
=
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
d
1
+
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
d
1
Z_2=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1+\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}
Z 2 = ∑ f 1 ( x n ) = y ^ n w 1 n d 1 + ∑ f 1 ( x n ) = y ^ n d 1 w 1 n ;当
f
1
(
x
n
)
≠
y
^
n
f_1(x^n)\neq {\hat y}^n
f 1 ( x n ) = y ^ n 时,
w
2
n
=
w
1
n
d
1
w_2^n = w_1^nd_1
w 2 n = w 1 n d 1 。 将上面两式带入得:
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
d
1
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
d
1
+
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
d
1
=
0.5
\frac{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1}{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1+\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}}=0.5
∑ f 1 ( x n ) = y ^ n w 1 n d 1 + ∑ f 1 ( x n ) = y ^ n d 1 w 1 n ∑ f 1 ( x n ) = y ^ n w 1 n d 1 = 0 . 5
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
d
1
=
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
d
1
\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1
f 1 ( x n ) = y ^ n ∑ d 1 w 1 n = f 1 ( x n ) = y ^ n ∑ w 1 n d 1
又因为
ϵ
1
=
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
Z
1
⇒
ϵ
1
Z
1
=
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
\epsilon_1=\frac{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n}{Z_1}\Rightarrow \epsilon_1Z_1=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n
ϵ 1 = Z 1 ∑ f 1 ( x n ) = y ^ n w 1 n ⇒ ϵ 1 Z 1 = f 1 ( x n ) = y ^ n ∑ w 1 n
1
−
ϵ
1
=
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
Z
1
⇒
(
1
−
ϵ
1
)
Z
1
=
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
1-\epsilon_1=\frac{\sum_{f_1(x^n)= {\hat y}^n} w_1^n}{Z_1}\Rightarrow (1-\epsilon_1)Z_1=\sum_{f_1(x^n)= {\hat y}^n} w_1^n
1 − ϵ 1 = Z 1 ∑ f 1 ( x n ) = y ^ n w 1 n ⇒ ( 1 − ϵ 1 ) Z 1 = f 1 ( x n ) = y ^ n ∑ w 1 n 因此,
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
d
1
=
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
d
1
\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1
f 1 ( x n ) = y ^ n ∑ d 1 w 1 n = f 1 ( x n ) = y ^ n ∑ w 1 n d 1
1
d
1
∑
f
1
(
x
n
)
=
y
^
n
w
1
n
=
d
1
∑
f
1
(
x
n
)
≠
y
^
n
w
1
n
\frac{1}{d_1}\sum_{f_1(x^n)= {\hat y}^n} {w_1^n}=d_1\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n
d 1 1 f 1 ( x n ) = y ^ n ∑ w 1 n = d 1 f 1 ( x n ) = y ^ n ∑ w 1 n
1
d
1
(
1
−
ϵ
1
)
Z
1
=
d
1
ϵ
1
Z
1
\frac{1}{d_1}(1-\epsilon_1)Z_1=d_1\epsilon_1Z_1
d 1 1 ( 1 − ϵ 1 ) Z 1 = d 1 ϵ 1 Z 1
d
1
=
1
−
ϵ
1
ϵ
1
d_1=\sqrt{\frac{1-\epsilon_1 }{\epsilon_1}}
d 1 = ϵ 1 1 − ϵ 1
其中
d
1
>
1
d_1>1
d 1 > 1 (因为
ϵ
1
<
0.5
\epsilon_1<0.5
ϵ 1 < 0 . 5 )。 因此AdaBoost每次更新权值表达式为:
{
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
L
n
(
1
−
ϵ
t
ϵ
t
)
)
i
f
f
t
(
x
n
)
≠
y
^
n
)
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
−
L
n
(
1
−
ϵ
t
ϵ
t
)
)
i
f
f
t
(
x
n
)
=
y
^
n
)
\begin{cases} w_{t+1}^n = w_t^n\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}=w_t^nexp(Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})) \qquad if \ f_t(x^n)\neq {\hat y}^n)\\ w_{t+1}^n = \frac{w_t^n}{\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}}=w_t^nexp(-Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})) \qquad if \ f_t(x^n)= {\hat y}^n)\\ \end{cases}
⎩ ⎪ ⎨ ⎪ ⎧ w t + 1 n = w t n ϵ t 1 − ϵ t
= w t n e x p ( L n ( ϵ t 1 − ϵ t
) ) i f f t ( x n ) = y ^ n ) w t + 1 n = ϵ t 1 − ϵ t
w t n = w t n e x p ( − L n ( ϵ t 1 − ϵ t
) ) i f f t ( x n ) = y ^ n ) 令
α
t
=
L
n
(
1
−
ϵ
t
ϵ
t
)
\alpha_t= Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})
α t = L n ( ϵ t 1 − ϵ t
) ,
α
t
\alpha_t
α t 即为基分类器
f
t
(
x
)
f_t(x)
f t ( x ) 的权重系数。当
ϵ
t
=
0.1
\epsilon_t =0.1
ϵ t = 0 . 1 时,
α
t
=
1.1
\alpha_t=1.1
α t = 1 . 1 ,当
ϵ
t
=
0.4
\epsilon_t =0.4
ϵ t = 0 . 4 时,
α
t
=
0.2
\alpha_t=0.2
α t = 0 . 2 。这表明,当基分类器分类误差率越小时,基分类器的权重越大,在最终表决时起的作用也越大;当基分类器分类误差率越大时,基分类器的权重越小,在最终表决时起的作用也越小。将
α
t
\alpha_t
α t 带入上式,样本权值更新表达式变成:
{
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
α
t
)
i
f
f
t
(
x
n
)
≠
y
^
n
)
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
−
α
t
)
i
f
f
t
(
x
n
)
=
y
^
n
)
\begin{cases} w_{t+1}^n = w_t^n\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}=w_t^nexp(\alpha_t) \qquad if \ f_t(x^n)\neq {\hat y}^n)\\ w_{t+1}^n = \frac{w_t^n}{\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}}=w_t^nexp(-\alpha_t) \qquad if \ f_t(x^n)= {\hat y}^n)\\ \end{cases}
⎩ ⎨ ⎧ w t + 1 n = w t n ϵ t 1 − ϵ t
= w t n e x p ( α t ) i f f t ( x n ) = y ^ n ) w t + 1 n = ϵ t 1 − ϵ t
w t n = w t n e x p ( − α t ) i f f t ( x n ) = y ^ n ) 为了方便表示,将上式两项合并成一项得,权值更新的表达式为:
w
t
+
1
n
=
w
t
n
e
x
p
(
−
y
^
n
f
t
(
x
n
)
α
t
)
w_{t+1}^n =w_t^nexp(-{\hat y}^nf_t(x^n)\alpha_t)
w t + 1 n = w t n e x p ( − y ^ n f t ( x n ) α t ) 当
f
t
(
x
n
)
=
y
^
n
f_t(x^n)= {\hat y}^n
f t ( x n ) = y ^ n 时,
y
^
n
f
t
(
x
n
)
{\hat y}^nf_t(x^n)
y ^ n f t ( x n ) 为+1,当
f
t
(
x
n
)
≠
y
^
n
\ f_t(x^n)\neq {\hat y}^n
f t ( x n ) = y ^ n 时,
y
^
n
f
t
(
x
n
)
{\hat y}^nf_t(x^n)
y ^ n f t ( x n ) 为-1,以上两式为等价变换。 以上就是AdaBoost算法如何做样本权值更新的整个推导过程。
下面对二元分类AdaBoost算法流程进行总结 : 输入:训练数据集
T
=
{
(
x
i
,
y
i
)
}
i
=
1
N
T=\left\{ (x^i,y^i) \right\}^N_{i=1}
T = { ( x i , y i ) } i = 1 N ,
x
i
∈
R
d
x^i\in R^d
x i ∈ R d ,
y
i
∈
{
−
1
,
1
}
y^i\in\left\{ -1,1\right\}
y i ∈ { − 1 , 1 } 输出:最终的分类器
H
(
x
)
H(x)
H ( x ) ①初始化训练数据的权值(权值相等)
w
1
n
=
1
w_1^n=1
w 1 n = 1 ②
f
o
r
t
=
1...
T
:
for \ t=1...T:
f o r t = 1 . . . T :
在权值为
{
w
t
1
,
w
t
2
.
.
.
w
t
N
}
\left\{ w_t^1,w_t^2...w_t^N\right\}
{ w t 1 , w t 2 . . . w t N } 的训练机上训练基分类器
f
t
(
x
)
f_t(x)
f t ( x )
计算
f
t
(
x
)
f_t(x)
f t ( x ) 在训练数据集上的分类误差率
ϵ
t
\epsilon_t
ϵ t
ϵ
t
=
P
(
f
t
(
x
n
≠
y
^
n
)
)
=
∑
n
w
t
n
δ
(
f
t
(
x
n
≠
y
^
n
)
)
\epsilon_t=P(f_t(x^n\neq {\hat y}^n))=\sum_nw_t^n\delta (f_t(x^n\neq {\hat y}^n))
ϵ t = P ( f t ( x n = y ^ n ) ) = n ∑ w t n δ ( f t ( x n = y ^ n ) )
计算
f
t
(
x
)
f_t(x)
f t ( x ) 的权值系数
α
t
=
L
n
(
1
−
ϵ
t
ϵ
t
)
\alpha_t= Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})
α t = L n ( ϵ t 1 − ϵ t
)
f
o
r
n
=
1
,
2....
N
:
for \ n=1,2....N:
f o r n = 1 , 2 . . . . N :
i
f
x
n
被
f
t
(
x
)
分
类
错
误
:
if \ x^n 被f_t(x)分类错误:
i f x n 被 f t ( x ) 分 类 错 误 :
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
α
t
)
w_{t+1}^n= w_t^n\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}=w_t^nexp(\alpha_t)
w t + 1 n = w t n ϵ t 1 − ϵ t
= w t n e x p ( α t )
e
l
s
e
x
n
else \ x^n
e l s e x n 被
f
t
(
x
)
f_t(x)
f t ( x ) 分类正确:
w
t
+
1
n
=
w
t
n
1
−
ϵ
t
ϵ
t
=
w
t
n
e
x
p
(
−
α
t
)
w_{t+1}^n = \frac{w_t^n}{\sqrt{\frac{1-\epsilon_t }{\epsilon_t}}}=w_t^nexp(-\alpha_t)
w t + 1 n = ϵ t 1 − ϵ t
w t n = w t n e x p ( − α t ) ③构建基分类器线性组合
f
(
x
)
=
∑
T
α
t
f
t
(
x
)
f(x)=\sum_T\alpha_tf_t(x)
f ( x ) = T ∑ α t f t ( x ) 得到最终的分类器
H
(
x
)
H(x)
H ( x )
H
(
x
)
=
s
i
g
n
(
∑
T
α
t
f
t
(
x
)
)
H(x)=sign(\sum_T\alpha_tf_t(x))
H ( x ) = s i g n ( T ∑ α t f t ( x ) )
3)AdaBoost的训练误差分析
AdaBoost最基本的性质是它能在学习的过程中不断减少训练误差,且训练误差以指数速率下降,且无限逼近于0。具体的数学表达式为:
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
g
(
x
)
<
0
)
≤
1
N
∑
n
e
x
p
(
−
y
^
n
g
(
x
)
)
=
1
N
Z
T
+
1
Error Rate=\frac{1}{N}\sum \delta (\hat y^n g(x)<0)\leq \frac{1}{N}\sum_nexp(-\hat y^n g(x))=\frac{1}{N}Z_{T+1}
E r r o r R a t e = N 1 ∑ δ ( y ^ n g ( x ) < 0 ) ≤ N 1 n ∑ e x p ( − y ^ n g ( x ) ) = N 1 Z T + 1
1
N
Z
T
+
1
=
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
=
∏
t
=
1
T
(
1
−
4
γ
t
2
)
≤
e
x
p
(
−
2
∑
t
=
1
T
γ
t
2
)
\frac{1}{N}Z_{T+1}=\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}=\prod _{t=1}^T\sqrt{(1-4\gamma _t^2)}\leq exp(-2\sum _{t=1}^T\gamma _t^2)
N 1 Z T + 1 = t = 1 ∏ T 2 ϵ t ( 1 − ϵ t )
= t = 1 ∏ T ( 1 − 4 γ t 2 )
≤ e x p ( − 2 t = 1 ∑ T γ t 2 ) 其中,
γ
t
=
1
2
−
ϵ
t
\gamma_t=\frac{1}{2}-\epsilon _t
γ t = 2 1 − ϵ t 。
下面我们就AdaBoost做二元分类的情况,对这一结论分步进行证明。证明过程会涉及较多的数学公式的推导,对证明不感兴趣的小伙伴可以直接跳到第5部分AdaBoost算法总结。 首先我们证明:
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
g
(
x
)
<
0
)
≤
1
N
e
x
p
(
−
y
^
n
g
(
x
)
)
Error Rate=\frac{1}{N}\sum \delta (\hat y^n g(x)<0)\leq \frac{1}{N}exp(-\hat y^n g(x))
E r r o r R a t e = N 1 ∑ δ ( y ^ n g ( x ) < 0 ) ≤ N 1 e x p ( − y ^ n g ( x ) )
从上一部分内容可知,训练数据集
T
=
{
(
x
i
,
y
i
)
}
i
=
1
n
T=\left\{ (x^i,y^i) \right\}^n_{i=1}
T = { ( x i , y i ) } i = 1 n ,
x
i
∈
R
d
x^i\in R^d
x i ∈ R d ,
y
i
∈
{
−
1
,
1
}
y^i\in\left\{ -1,1\right\}
y i ∈ { − 1 , 1 } ,最终的分类器
H
(
x
)
,
α
t
H(x),\alpha_t
H ( x ) , α t 的表达式为
H
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
f
t
(
x
)
)
α
t
=
L
n
(
1
−
ϵ
t
ϵ
t
)
H(x)=sign(\sum_{t=1}^T\alpha_tf_t(x)) \qquad \alpha_t = Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})
H ( x ) = s i g n ( t = 1 ∑ T α t f t ( x ) ) α t = L n ( ϵ t 1 − ϵ t
) 分类器
H
(
x
)
H(x)
H ( x ) 的分类误差率为
E
r
r
o
r
R
a
t
e
Error Rate
E r r o r R a t e 等于分类错误的样本所占总样本的比例,用数学语言表达即为,
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
H
(
x
n
)
≠
(
y
^
)
n
)
Error Rate=\frac{1}{N}\sum \delta (H(x^n)\neq (\hat y)^n)
E r r o r R a t e = N 1 ∑ δ ( H ( x n ) = ( y ^ ) n ) 其中,
H
(
x
n
)
≠
(
y
^
)
n
H(x^n)\neq (\hat y)^n
H ( x n ) = ( y ^ ) n 表示模型的预测值和真实值异号,因此,
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
∑
t
=
1
T
α
t
f
t
(
x
)
<
0
)
Error Rate=\frac{1}{N}\sum \delta (\hat y^n \sum_{t=1}^T\alpha_tf_t(x)<0)
E r r o r R a t e = N 1 ∑ δ ( y ^ n t = 1 ∑ T α t f t ( x ) < 0 ) 令
g
(
x
)
=
∑
t
=
1
T
α
t
f
t
(
x
)
g(x)=\sum_{t=1}^T\alpha_tf_t(x)
g ( x ) = ∑ t = 1 T α t f t ( x ) ,因此,
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
g
(
x
)
<
0
)
Error Rate=\frac{1}{N}\sum \delta (\hat y^n g(x)<0)
E r r o r R a t e = N 1 ∑ δ ( y ^ n g ( x ) < 0 ) 下面我们开始证明:
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
g
(
x
)
<
0
)
≤
1
N
e
x
p
(
−
y
^
n
g
(
x
)
)
Error Rate =\frac{1}{N}\sum \delta (\hat y^n g(x)<0)\leq \frac{1}{N}exp(-\hat y^n g(x))
E r r o r R a t e = N 1 ∑ δ ( y ^ n g ( x ) < 0 ) ≤ N 1 e x p ( − y ^ n g ( x ) ) 其中
δ
(
y
^
n
g
(
x
)
<
0
)
\delta (\hat y^n g(x)<0)
δ ( y ^ n g ( x ) < 0 ) 为01损失函数,
e
x
p
(
−
y
^
n
g
(
x
)
)
exp(-\hat y^n g(x))
e x p ( − y ^ n g ( x ) ) 为指数损失函数。画出函数图像很容易发现上式不等式成立: 下面我们证明
E
r
r
o
r
R
a
t
e
≤
1
N
∑
n
e
x
p
(
−
y
^
n
g
(
x
)
)
=
1
N
Z
T
+
1
Error Rate\leq \frac{1}{N}\sum_nexp(-\hat y^n g(x))=\frac{1}{N}Z_{T+1}
E r r o r R a t e ≤ N 1 n ∑ e x p ( − y ^ n g ( x ) ) = N 1 Z T + 1 已知
g
(
x
)
=
∑
t
=
1
T
α
t
f
t
(
x
)
g(x)=\sum_{t=1}^T\alpha_tf_t(x)
g ( x ) = ∑ t = 1 T α t f t ( x ) (上面我们定义的等式)。且
Z
t
+
1
Z_{t+1}
Z t + 1 为基分类器
f
t
+
1
(
x
)
f_{t+1}(x)
f t + 1 ( x ) 所有训练样本的权重之和,用数学语言表示,
Z
t
+
1
=
∑
n
w
T
+
1
n
Z_{t+1}=\sum _nw_{T+1}^n
Z t + 1 = ∑ n w T + 1 n
=
∑
n
w
T
n
e
x
p
(
−
y
^
n
f
t
(
x
n
)
α
t
)
=\sum _nw_{T}^nexp(-\hat y^nf_t(x^n)\alpha_t)
= ∑ n w T n e x p ( − y ^ n f t ( x n ) α t ) (权值更新公式)
=
∑
n
∏
t
=
1
T
e
x
p
(
−
y
^
n
f
t
(
x
n
)
α
t
)
=\sum _n\prod _{t=1}^Texp(-\hat y^nf_t(x^n)\alpha_t)
= ∑ n ∏ t = 1 T e x p ( − y ^ n f t ( x n ) α t )
=
∑
n
e
x
p
(
−
y
^
n
∑
t
=
1
T
f
t
(
x
n
)
α
t
)
=\sum _nexp(-\hat y^n\sum _{t=1}^Tf_t(x^n)\alpha_t)
= ∑ n e x p ( − y ^ n ∑ t = 1 T f t ( x n ) α t ) (连乘符号
∏
\prod
∏ ,放到指数
e
x
p
exp
e x p 中变成求和
∑
\sum
∑ )
=
∑
n
e
x
p
(
−
y
^
n
g
(
x
n
)
)
=\sum _nexp(-\hat y^ng(x^n))
= ∑ n e x p ( − y ^ n g ( x n ) ) 因此,
E
r
r
o
r
R
a
t
e
≤
1
N
∑
n
e
x
p
(
−
y
^
n
g
(
x
)
)
=
1
N
Z
T
+
1
Error Rate\leq \frac{1}{N}\sum_nexp(-\hat y^n g(x))=\frac{1}{N}Z_{T+1}
E r r o r R a t e ≤ N 1 n ∑ e x p ( − y ^ n g ( x ) ) = N 1 Z T + 1 已知
α
t
=
L
n
(
1
−
ϵ
t
ϵ
t
)
\alpha_t = Ln(\sqrt{\frac{1-\epsilon_t }{\epsilon_t}})
α t = L n ( ϵ t 1 − ϵ t
) ,下面我们证明
E
r
r
o
r
R
a
t
e
≤
1
N
Z
T
+
1
=
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
Error Rate\leq \frac{1}{N}Z_{T+1}=\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}
E r r o r R a t e ≤ N 1 Z T + 1 = t = 1 ∏ T 2 ϵ t ( 1 − ϵ t )
Z
t
+
1
Z_{t+1}
Z t + 1 为基分类器
f
t
+
1
(
x
)
f_{t+1}(x)
f t + 1 ( x ) 所有训练样本的权重之和,它是由上一轮权值
Z
t
Z_{t}
Z t 更新而来的,被分类错误的样本权值增大,被分类正确的样本权值减小。 且
Z
1
=
N
Z_1=N
Z 1 = N ,因此,
Z
T
+
1
=
Z
t
ϵ
t
e
x
p
(
α
t
)
+
Z
t
(
1
−
ϵ
t
)
e
x
p
(
−
α
t
)
Z_{T+1}=Z_t \epsilon _{t}exp(\alpha _{t})+Z_t(1-\epsilon _{t})exp(-\alpha _{t})
Z T + 1 = Z t ϵ t e x p ( α t ) + Z t ( 1 − ϵ t ) e x p ( − α t )
=
Z
t
ϵ
t
1
−
ϵ
t
ϵ
t
+
Z
t
(
1
−
ϵ
t
)
ϵ
t
1
−
ϵ
t
=Z_t \epsilon _{t}\sqrt{\frac{1-\epsilon _{t}}{\epsilon _{t}}}+Z_t(1-\epsilon _{t})\sqrt{\frac{\epsilon _{t}}{1-\epsilon _{t}}}
= Z t ϵ t ϵ t 1 − ϵ t
+ Z t ( 1 − ϵ t ) 1 − ϵ t ϵ t
=
2
Z
t
ϵ
t
(
1
−
ϵ
t
)
=2Z_t\sqrt{\epsilon _{t}(1-\epsilon _{t})}
= 2 Z t ϵ t ( 1 − ϵ t )
=
N
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
=N\prod _{t=1}^T2\sqrt{\epsilon _{t}(1-\epsilon _{t})}
= N ∏ t = 1 T 2 ϵ t ( 1 − ϵ t )
因此,
E
r
r
o
r
R
a
t
e
≤
1
N
Z
T
+
1
=
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
Error Rate\leq \frac{1}{N}Z_{T+1}=\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}
E r r o r R a t e ≤ N 1 Z T + 1 = t = 1 ∏ T 2 ϵ t ( 1 − ϵ t )
由于
ϵ
t
<
0.5
\epsilon _t<0.5
ϵ t < 0 . 5 ,因此
2
ϵ
t
(
1
−
ϵ
t
)
≤
1
2\sqrt{\epsilon _t(1-\epsilon _t)}\leq 1
2 ϵ t ( 1 − ϵ t )
≤ 1 ,所以AdaBoost的分类误差率是不断的再减小的。 下面我们证明
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
=
∏
t
=
1
T
(
1
−
4
γ
t
2
)
≤
e
x
p
(
−
2
∑
t
=
1
T
γ
t
2
)
\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}=\prod _{t=1}^T\sqrt{(1-4\gamma _t^2)}\leq exp(-2\sum _{t=1}^T\gamma _t^2)
t = 1 ∏ T 2 ϵ t ( 1 − ϵ t )
= t = 1 ∏ T ( 1 − 4 γ t 2 )
≤ e x p ( − 2 t = 1 ∑ T γ t 2 )
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}
∏ t = 1 T 2 ϵ t ( 1 − ϵ t )
=
∏
t
=
1
T
2
(
1
2
−
(
1
2
−
ϵ
t
)
)
(
1
2
+
1
2
−
ϵ
t
)
=\prod _{t=1}^T2\sqrt{(\frac{1}{2}-(\frac{1}{2}-\epsilon _t))(\frac{1}{2}+\frac{1}{2}-\epsilon _t)}
= ∏ t = 1 T 2 ( 2 1 − ( 2 1 − ϵ t ) ) ( 2 1 + 2 1 − ϵ t )
令
γ
t
=
1
2
−
ϵ
t
\gamma_t=\frac{1}{2}-\epsilon _t
γ t = 2 1 − ϵ t ,
γ
t
>
0
\gamma_t >0
γ t > 0 得,
∏
t
=
1
T
2
ϵ
t
(
1
−
ϵ
t
)
\prod _{t=1}^T2\sqrt{\epsilon _t(1-\epsilon _t)}
∏ t = 1 T 2 ϵ t ( 1 − ϵ t )
=
∏
t
=
1
T
2
(
1
2
−
(
1
2
−
ϵ
t
)
)
(
1
2
+
1
2
−
ϵ
t
)
=\prod _{t=1}^T2\sqrt{(\frac{1}{2}-(\frac{1}{2}-\epsilon _t))(\frac{1}{2}+\frac{1}{2}-\epsilon _t)}
= ∏ t = 1 T 2 ( 2 1 − ( 2 1 − ϵ t ) ) ( 2 1 + 2 1 − ϵ t )
=
∏
t
=
1
T
2
1
4
−
γ
t
2
=\prod _{t=1}^T2\sqrt{\frac{1}{4}-\gamma _t^2}
= ∏ t = 1 T 2 4 1 − γ t 2
=
∏
t
=
1
T
1
−
4
γ
t
2
=\prod _{t=1}^T\sqrt{1-4\gamma _t^2}
= ∏ t = 1 T 1 − 4 γ t 2
最后我们证明,
∏
t
=
1
T
(
1
−
4
γ
t
2
)
≤
e
x
p
(
−
2
∑
t
=
1
T
γ
t
2
)
\prod _{t=1}^T\sqrt{(1-4\gamma _t^2)}\leq exp(-2\sum _{t=1}^T\gamma _t^2)
t = 1 ∏ T ( 1 − 4 γ t 2 )
≤ e x p ( − 2 t = 1 ∑ T γ t 2 ) 首先我们构造一个函数
f
(
x
)
=
e
−
x
+
x
−
1
f(x)=e^{-x}+x-1
f ( x ) = e − x + x − 1 ,由于
f
′
′
(
x
)
=
e
−
x
>
0
f''(x)=e^{-x}>0
f ′ ′ ( x ) = e − x > 0 ,因此
f
(
x
)
f(x)
f ( x ) 为凸函数,且
m
i
n
f
(
x
)
=
f
(
0
)
=
0
minf(x)=f(0)=0
m i n f ( x ) = f ( 0 ) = 0 ,所以
f
(
x
)
≥
0
f(x) \geq 0
f ( x ) ≥ 0 。下面我们进入正式证明:
f
(
x
)
=
e
−
x
+
x
−
1
≥
0
f(x)=e^{-x}+x-1 \geq 0
f ( x ) = e − x + x − 1 ≥ 0
⇒
e
−
x
≥
1
−
x
\Rightarrow e^{-x}\geq 1-x
⇒ e − x ≥ 1 − x ,令
x
=
4
γ
2
x=4\gamma^2
x = 4 γ 2 ,得
⇒
e
−
4
γ
2
≥
1
−
4
γ
2
\Rightarrow e^{-4\gamma^2}\geq 1-4\gamma^2
⇒ e − 4 γ 2 ≥ 1 − 4 γ 2
⇒
e
−
2
γ
2
≥
1
−
4
γ
2
\Rightarrow e^{-2\gamma^2}\geq \sqrt{1-4\gamma^2}
⇒ e − 2 γ 2 ≥ 1 − 4 γ 2
因此对于
t
=
1
,
2...
T
t=1,2...T
t = 1 , 2 . . . T ,都有
{
e
−
2
γ
1
2
≥
1
−
4
γ
1
2
e
−
2
γ
2
2
≥
1
−
4
γ
2
2
.
.
.
e
−
2
γ
t
2
≥
1
−
4
γ
t
2
\begin{cases} e^{-2\gamma_1^2}\geq \sqrt{1-4\gamma_1^2}\\ e^{-2\gamma_2^2}\geq \sqrt{1-4\gamma_2^2}\\ ...\\ e^{-2\gamma_t^2}\geq \sqrt{1-4\gamma_t^2}\\ \end{cases}
⎩ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎧ e − 2 γ 1 2 ≥ 1 − 4 γ 1 2
e − 2 γ 2 2 ≥ 1 − 4 γ 2 2
. . . e − 2 γ t 2 ≥ 1 − 4 γ t 2
将上式连乘得:
⇒
∏
t
=
1
T
e
x
p
(
−
2
γ
t
2
)
≥
∏
t
=
1
T
1
−
4
γ
t
2
\Rightarrow\prod _{t=1}^Texp(-2\gamma_t^2) \geq \prod _{t=1}^T \sqrt{1-4\gamma_t^2}
⇒ t = 1 ∏ T e x p ( − 2 γ t 2 ) ≥ t = 1 ∏ T 1 − 4 γ t 2
⇒
∏
t
=
1
T
1
−
4
γ
t
2
≤
∏
t
=
1
T
e
x
p
(
−
2
γ
t
2
)
\Rightarrow\prod _{t=1}^T \sqrt{1-4\gamma_t^2}\leq \prod _{t=1}^Texp(-2\gamma_t^2)
⇒ t = 1 ∏ T 1 − 4 γ t 2
≤ t = 1 ∏ T e x p ( − 2 γ t 2 )
⇒
∏
t
=
1
T
1
−
4
γ
t
2
≤
e
x
p
(
−
2
∑
t
=
1
T
γ
t
2
)
\Rightarrow \prod _{t=1}^T \sqrt{1-4\gamma_t^2}\leq exp(-2\sum _{t=1}^T\gamma_t^2)
⇒ t = 1 ∏ T 1 − 4 γ t 2
≤ e x p ( − 2 t = 1 ∑ T γ t 2 )
因此,证明得到下式成立:
E
r
r
o
r
R
a
t
e
=
1
N
∑
δ
(
y
^
n
g
(
x
)
<
0
)
≤
e
x
p
(
−
2
∑
t
=
1
T
γ
t
2
)
Error Rate=\frac{1}{N}\sum \delta (\hat y^n g(x)<0)\leq exp(-2\sum _{t=1}^T\gamma_t^2)
E r r o r R a t e = N 1 ∑ δ ( y ^ n g ( x ) < 0 ) ≤ e x p ( − 2 t = 1 ∑ T γ t 2 ) 上不等式表明,AdaBoost的训练误差是以指数速率下降且无限逼近于0。(
γ
>
0
,
−
2
∑
t
=
1
T
γ
t
2
<
0
\gamma >0,-2\sum _{t=1}^T\gamma_t^2<0
γ > 0 , − 2 ∑ t = 1 T γ t 2 < 0 ,小于0的数求指数小于1,小于1的数无限连乘,将无限逼近与0)
4)前向分步加法模型解释AdaBoost
AdaBoost的另外一种解释,认为AdaBoost是加法模型、损失函数为指数函数、学习算法为前向分步算法的分类学习算法。 加法模型比较好理解,最终的分类器是有若干个基分类器加权平均得到。即
H
(
x
)
=
∑
T
α
t
f
t
(
x
)
H(x)=\sum_T\alpha_tf_t(x)
H ( x ) = T ∑ α t f t ( x ) 其中,
f
t
(
x
)
f_t(x)
f t ( x ) 为基分类器,
α
t
\alpha_t
α t 为基分类器的权值。 前向分步学习算法,即利用前一个基分类器的结果更新后一个基分类器的训练权重。 假定第
t
−
1
t-1
t − 1 轮后分类器为:
g
t
−
1
(
x
)
=
∑
t
=
1
t
−
1
α
t
f
t
(
x
)
g_{t-1}(x)= \sum_{t=1}^{t-1}\alpha_tf_t(x)
g t − 1 ( x ) = t = 1 ∑ t − 1 α t f t ( x ) 而第
t
t
t 轮后分类器为为:
g
t
(
x
)
=
∑
t
=
1
t
α
t
f
t
(
x
)
g_{t}(x)= \sum_{t=1}^{t}\alpha_tf_t(x)
g t ( x ) = t = 1 ∑ t α t f t ( x ) 有上两式可以得:
g
t
(
x
)
=
g
t
−
1
(
x
)
+
α
t
f
t
(
x
)
g_t(x)=g_{t-1}(x)+\alpha_tf_t(x)
g t ( x ) = g t − 1 ( x ) + α t f t ( x ) 因此,最终的分类器是通过前向学习算法得到的。 AdaBoost的损失函数为,
a
r
g
m
i
n
⏟
α
,
f
∑
n
e
x
p
(
−
y
^
n
g
t
(
x
)
)
\underbrace{argmin}_{\alpha,f}\sum_nexp(-\hat y^n g_t(x))
α , f
a r g m i n n ∑ e x p ( − y ^ n g t ( x ) ) 利用前向分步学习算法可以得到损失函数为:
(
α
t
,
f
t
(
x
)
)
=
a
r
g
m
i
n
⏟
α
,
f
∑
n
e
x
p
(
−
y
^
n
(
g
t
−
1
(
x
)
+
α
t
f
t
(
x
)
)
(\alpha_t,f_t(x))= \underbrace{argmin}_{\alpha,f}\sum_nexp(-\hat y^n (g_{t-1}(x)+\alpha_tf_t(x))
( α t , f t ( x ) ) = α , f
a r g m i n n ∑ e x p ( − y ^ n ( g n ∑ e x p ( − y ^ n ( g t − 1 ( x ) + α t f t ( x ) ) 令
w
t
′
n
=
e
x
p
(
−
y
^
n
g
t
−
1
(
x
)
)
w'^n_t=exp(-\hat y^n g_{t-1}(x))
w t ′ n = e x p ( − y ^ n g t − 1 ( x ) ) ,它的值不依赖
α
t
,
f
t
(
x
)
\alpha_t,f_t(x)
α t , f t ( x ) ,因此与最小化无关,仅仅依赖于
g
t
−
1
(
x
)
g_{t-1}(x)
g t − 1 ( x ) ,随着每一轮迭代而改变。将上式子代入损失函数,得
(
α
t
,
f
t
(
x
)
)
=
a
r
g
m
i
n
⏟
α
,
f
∑
n
w
t
′
n
e
x
p
(
−
y
^
α
t
f
t
(
x
)
)
(\alpha_t,f_t(x))= \underbrace{argmin}_{\alpha,f}\sum_n w'^n_texp(-\hat y \alpha_tf_t(x))
( α t , f ,
f
t
(
x
)
)
=
a
r
g
m
i
n
⏟
α
,
f
∑
n
w
t
′
n
e
x
p
(
−
y
^
α
t
f
t
(
x
)
)
(\alpha_t,f_t(x))= \underbrace{argmin}_{\alpha,f}\sum_n w'^n_texp(-\hat y \alpha_tf_t(x))
( α t , f t ( x ) ) = α , f
a r g m i n n ∑ w t ′ n e x p ( − y ^ α t f t ( x ) ) 我们先求
f
t
∗
(
x
)
f^*_t(x)
f t ∗ ( x ) ,对于任意的
α
t
>
0
\alpha_t>0
α t (
x
)
f^*_t(x)
f t