AdaBoost原理说明
AdaBoost原理说明
文章目录
提升方法(Boosting)的基本思想
提升方法的思想是:对于一个复杂任务来说,多个专家的综合判断要好于其中任何一个专家的单独判断。
从算法角度来说,就是从弱学习器出发,反复学习,得到一系列弱分类器,然后组合这些弱分类器,构成一个强分类器。
弱学习器:分类正确率略高于随机猜测(0.5)的学习器;
弱学习器:分类正确率很高的学习器。
这个定义参照的是统计学习方法,查看了一些参考资料,都没有说具体多高才算强学习器。
对于提升方法,有两个关键问题需要回答:
- 在每一轮如何改变训练样本的权重?
- 如何将弱分类器组合成一个强分类器?
提升方法最具代表性的方法是AdaBoost,它的解决方式是:
-
AdaBoost的样本权重更新
提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值。这样,那些没有得到正确分类的数据由于其权值的加大而受到后一轮的弱分类器的更大关注。
-
AdaBoost的弱分类器组合
采取加权多数表决的方法,具体就是,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,时期在表决中起较小的作用。
AdaBoost的推导
很多书上一开始就告诉你AdaBoost的整个算法流程,然后再解释里面的关键步骤,我觉得这不符合初学者的认知过程,所以这里我想要从统计学习方法里说的前向分步算法的解释来一步步引导。
假设现在我们有一个二分类的训练数据集:
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
\text{T}=\{ (\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中,每个样本点由特征与标签组成,特征
x
i
\mathbf{x}_i
xi是n维向量,标签
y
i
∈
{
−
1
,
+
1
}
y_i \in \{-1,+1\}
yi∈{−1,+1}。
假如最终的组合模型是
f
M
(
x
)
=
∑
m
=
1
M
α
m
ϕ
m
(
x
)
f_M(\mathbf{x}) = \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x})
fM(x)=m=1∑Mαmϕm(x)
ϕ
m
(
x
)
\phi_m(\mathbf{x})
ϕm(x)和
α
m
\alpha_m
αm分别是AdaBoost的第
m
m
m个基分类器及其权值。
损失函数采用指数损失
L
(
y
,
f
(
x
)
)
=
exp
(
−
y
f
(
x
)
)
L(y, f(x)) = \exp \left( -yf(x) \right)
L(y,f(x))=exp(−yf(x))
为什么选取指数损失函数?
简单来说,最小化指数损失函数和最小化0-1损失函数是等价的,但是指数损失函数有很好的解析性质,方便求导。
组合模型最终的损失函数是
min
∑
i
=
1
N
L
(
y
i
,
f
M
(
x
)
)
⇒
min
α
,
ϕ
∑
i
=
1
N
L
(
y
i
,
∑
m
=
1
M
α
m
ϕ
m
(
x
i
)
)
\min \sum_{i=1}^N L\left(y_i, f_M(\mathbf{x}) \right) \\ \Rightarrow \quad\min_{\boldsymbol{\alpha},\boldsymbol{\phi}} \sum_{i=1}^N L\left(y_i, \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x}_i) \right)
mini=1∑NL(yi,fM(x))⇒α,ϕmini=1∑NL(yi,m=1∑Mαmϕm(xi))
目的是寻找使
L
L
L最小的
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
,
α
M
∗
)
,
ϕ
∗
=
(
ϕ
1
∗
,
ϕ
2
∗
,
⋯
,
ϕ
M
∗
)
\boldsymbol{\alpha}^* = (\alpha_1^*, \alpha_2^*, \cdots ,\alpha_M^*), \boldsymbol{\phi}^* = (\phi_1^*, \phi_2^*, \cdots ,\phi_M^*)
α∗=(α1∗,α2∗,⋯,αM∗),ϕ∗=(ϕ1∗,ϕ2∗,⋯,ϕM∗)。
这个优化问题的参数非常多,几乎不可能一次求解得到,怎么办呢?
一个想法是采用分步计算的方法:因为 f M ( x ) = ∑ m = 1 M α m ϕ m ( x ) f_M(\mathbf{x}) = \sum_{m=1}^M \alpha_m \phi_m(\mathbf{x}) fM(x)=∑m=1Mαmϕm(x)是加法模型,那么我们每次只学习一个基分类器及其系数,然后叠加到之前的模型中,从而逐步逼近优化目标函数。
这个思路就是前向分步算法,具体可参照统计学习方法第8章8.3.1节前向分步算法。
现在问题就变成了第
m
m
m次迭代求解最优的基学习器
ϕ
m
\phi_m
ϕm和参数
α
m
\alpha_m
αm:
(
α
m
,
ϕ
m
)
=
min
α
,
ϕ
∑
i
=
1
N
L
(
y
i
,
f
m
−
1
(
x
i
)
+
α
ϕ
(
x
i
)
)
(\alpha_m, \phi_m) = \min_{\alpha, \phi} \sum_{i=1}^N L\left(y_i, f_{m-1}(\mathbf{x}_i) + \alpha \phi (\mathbf{x}_i) \right)
(αm,ϕm)=α,ϕmini=1∑NL(yi,fm−1(xi)+αϕ(xi))
把
L
(
y
,
f
(
x
)
)
=
exp
(
−
y
f
(
x
)
)
L(y, f(x)) = \exp\left( -yf(x)\right)
L(y,f(x))=exp(−yf(x))代入,变为
(
α
m
,
ϕ
m
)
=
min
α
,
ϕ
∑
i
=
1
N
exp
[
−
y
i
(
f
m
−
1
(
x
i
)
+
α
ϕ
(
x
i
)
)
]
=
min
α
,
ϕ
∑
i
=
1
N
w
m
,
i
exp
[
−
α
y
i
ϕ
(
x
i
)
]
\begin{aligned} (\alpha_m, \phi_m) &= \min_{\alpha, \phi} \sum_{i=1}^N \exp \left[ -y_i \left( f_{m-1}(\mathbf{x}_i) + \alpha \phi (\mathbf{x}_i) \right) \right] \\ &= \min_{\alpha, \phi} \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi (\mathbf{x}_i) \right] \end{aligned}
(αm,ϕm)=α,ϕmini=1∑Nexp[−yi(fm−1(xi)+αϕ(xi))]=α,ϕmini=1∑Nwm,iexp[−αyiϕ(xi)]
其中,
w
m
,
i
=
exp
[
−
y
i
f
m
−
1
(
x
i
)
]
w_{m,i} = \exp \left[ -y_i f_{m-1} (\mathbf{x}_i) \right]
wm,i=exp[−yifm−1(xi)],其实它就是样本权重。
对于回归问题,损失函数是L2损失: L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x)) = (y-f(x))^2 L(y,f(x))=(y−f(x))2,所以问题变为:
ϕ m = min ϕ ∑ i = 1 N [ y i − ( f m − 1 ( x i ) + ϕ ( x i ) ) ] 2 = min ϕ ∑ i = 1 N ( y i − f m − 1 ( x i ) − ϕ ( x i ) ) 2 = min ϕ ∑ i = 1 N [ ( y i − f m − 1 ( x i ) ) − ϕ ( x i ) ] 2 = min ϕ ∑ i = 1 N ( r i − ϕ ( x i ) ) 2 \begin{aligned} \phi_m &= \min_{\phi} \sum_{i=1}^N \left[ y_i - \left( f_{m-1}(\mathbf{x}_i) + \phi (\mathbf{x}_i) \right) \right]^2 \\ &= \min_{\phi} \sum_{i=1}^N \left( y_i - f_{m-1}(\mathbf{x}_i) - \phi (\mathbf{x}_i) \right)^2 \\ &= \min_{\phi} \sum_{i=1}^N \left[ \left( y_i - f_{m-1}(\mathbf{x}_i)\right) - \phi (\mathbf{x}_i) \right] ^2 \\ &= \min_{\phi} \sum_{i=1}^N \left( r_i - \phi (\mathbf{x}_i) \right) ^2 \end{aligned} ϕm=ϕmini=1∑N[yi−(fm−1(xi)+ϕ(xi))]2=ϕmini=1∑N(yi−fm−1(xi)−ϕ(xi))2=ϕmini=1∑N[(yi−fm−1(xi))−ϕ(xi)]2=ϕmini=1∑N(ri−ϕ(xi))2
其中, r i = y i − f m − 1 ( x i ) r_i = y_i - f_{m-1}(\mathbf{x}_i) ri=yi−fm−1(xi),也就是残差
求解上式分两步:
-
先求基学习器 ϕ m \phi_m ϕm
对任意 α > 0 \alpha \gt 0 α>0,求最小的 ϕ m \phi_m ϕm由下式得到:
ϕ m = arg min ϕ ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \phi_m = \arg \min_\phi \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) ϕm=argϕmini=1∑Nwm,iI(yi=ϕ(xi))
以上的最小值问题相当于求使错分样本权值和最小的 ϕ m \phi_m ϕm。原来求指数损失最小为什么变成求 min ϕ ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \min_\phi \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) minϕ∑i=1Nwm,iI(yi=ϕ(xi))?
周志华的机器学习第8章集成学习里面有推导,这个细节先不深究。
但在实际操作中,我们并不知道什么样的基分类器是最好的,一般都是人工选择(决策树,logistic回归等),训练选定的基分类器,达到错分率最小就行。
-
再求权值 α m \alpha_m αm
知道了基分类器 ϕ m \phi_m ϕm,问题变成
α m = min α ∑ i = 1 N w m , i exp [ − α y i ϕ m ( x i ) ] \alpha_m = \min_{\alpha} \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] αm=αmini=1∑Nwm,iexp[−αyiϕm(xi)]
通常做法肯定是对 g ( α ) = ∑ i = 1 N w m , i exp [ − α y i ϕ m ( x i ) ] g(\alpha) = \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] g(α)=∑i=1Nwm,iexp[−αyiϕm(xi)]求导并使导数为0,我们先试试看。
∂ g ∂ α = − ∑ i = 1 N w m , i y i ϕ m ( x i ) exp [ − α y i ϕ m ( x i ) ] = 0 \frac{\partial g}{\partial \alpha} = - \sum_{i=1}^N w_{m,i} y_i \phi_m (\mathbf{x}_i) \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] = 0 ∂α∂g=−i=1∑Nwm,iyiϕm(xi)exp[−αyiϕm(xi)]=0
不好求解,因为 α \alpha α和 y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)一块作为自然常数e的指数,在累加 ∑ i = 1 N \sum_{i=1}^N ∑i=1N的情况下没法单独提取。那么现在的问题是如何把 α \alpha α单独提取出来,或者说有没有办法把 y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)给消去。
我们知道 y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)有以下的两种情况:
y i ϕ m ( x i ) = { 1 , y i = ϕ m ( x i ) − 1 , y i ≠ ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) = \left\{ \begin{aligned} 1,& \quad y_i = \phi_m (\mathbf{x}_i) \\ -1,& \quad y_i \ne \phi_m (\mathbf{x}_i) \end{aligned} \right. yiϕm(xi)={1,−1,yi=ϕm(xi)yi=ϕm(xi)
只要分成以上两种情况讨论, y i ϕ m ( x i ) y_i \phi_m (\mathbf{x}_i) yiϕm(xi)就可以变成常数。把上式代入 g ( α ) g(\alpha) g(α)有g ( α ) = ∑ i = 1 N w m , i exp [ − α y i ϕ m ( x i ) ] = ∑ y i = ϕ m ( x i ) w m , i e − α + ∑ y i ≠ ϕ m ( x i ) w m , i e α = e − α ∑ y i = ϕ m ( x i ) w m , i + e α ∑ y i ≠ ϕ m ( x i ) w m , i \begin{aligned} g(\alpha) =& \sum_{i=1}^N w_{m,i} \exp \left[ - \alpha y_i \phi_m (\mathbf{x}_i) \right] \\ =& \sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i} e^{-\alpha} + \sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i} e^{\alpha} \\ =& e^{-\alpha} \sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i} + e^{\alpha} \sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i} \end{aligned} g(α)===i=1∑Nwm,iexp[−αyiϕm(xi)]yi=ϕm(xi)∑wm,ie−α+yi=ϕm(xi)∑wm,ieαe−αyi=ϕm(xi)∑wm,i+eαyi=ϕm(xi)∑wm,i
这样, α \alpha α就可以单独提取出来了,接着对 g ( α ) g(\alpha) g(α)求导并使导数为0,就能得到:
α m = 1 2 ln ∑ y i = ϕ m ( x i ) w m , i ∑ y i ≠ ϕ m ( x i ) w m , i \alpha_m = \frac12 \ln \frac{\sum_{y_i = \phi_m(\mathbf{x}_i)} w_{m,i}}{\sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i}} αm=21ln∑yi=ϕm(xi)wm,i∑yi=ϕm(xi)wm,i
α m \alpha_m αm可以进一步化简,看下式
α m = 1 2 ln ∑ i = 1 N w m , i − ∑ y i ≠ ϕ m ( x i ) w m , i ∑ y i ≠ ϕ m ( x i ) w m , i = 1 2 ln ∑ i = 1 N w m , i − ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) = 1 2 ln ( 1 − ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) ∑ i = 1 N w m , i ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) ∑ i = 1 N w m , i ) = 1 2 ln ( 1 − e m e m ) \begin{aligned} \alpha_m =& \frac12 \ln \frac{\sum_{i=1}^N w_{m,i} - \sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i}}{\sum_{y_i \ne \phi_m(\mathbf{x}_i)} w_{m,i}} \\ =& \frac12 \ln \frac{\sum_{i=1}^N w_{m,i} - \sum_{i=1}^N w_{m,i} I(y_i \ne \phi_m (\mathbf{x}_i))}{\sum_{i=1}^N w_{m,i}I(y_i \ne \phi_m (\mathbf{x}_i))} \\ =& \frac12 \ln \left( \frac{1 - \frac{\sum_{i = 1}^N w_{m,i} I(y_i \ne \phi_m (\mathbf{x}_i))}{\sum_{i = 1}^N w_{m,i}}}{\frac{\sum_{i = 1}^N w_{m,i} I(y_i \ne \phi_m (\mathbf{x}_i))}{\sum_{i = 1}^N w_{m,i}}} \right) \\ =& \frac12 \ln \left( \frac{1 - e_m}{e_m} \right) \end{aligned} αm====21ln∑yi=ϕm(xi)wm,i∑i=1Nwm,i−∑yi=ϕm(xi)wm,i21ln∑i=1Nwm,iI(yi=ϕm(xi))∑i=1Nwm,i−∑i=1Nwm,iI(yi=ϕm(xi))21ln⎝⎛∑i=1Nwm,i∑i=1Nwm,iI(yi=ϕm(xi))1−∑i=1Nwm,i∑i=1Nwm,iI(yi=ϕm(xi))⎠⎞21ln(em1−em)
其中
e m = ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) ∑ i = 1 N w m , i e_m = \frac{\sum_{i = 1}^N w_{m,i} I(y_i \ne \phi_m(\mathbf{x}_i))}{\sum_{i = 1}^N w_{m,i}} em=∑i=1Nwm,i∑i=1Nwm,iI(yi=ϕm(xi))
e m e_m em是分类模型 ϕ m \phi_m ϕm的错误率,而 I ( x ) I(x) I(x)是指示函数,即 I ( x ) = { 1 , 满 足 x 0 , 不 满 足 x I(x) = \left\{ \begin{aligned} 1,& \quad 满足x \\0,& \quad 不满足x \end{aligned} \right. I(x)={1,0,满足x不满足x。
最后来看每一轮样本权值的更新。由
f
m
(
x
)
=
f
m
−
1
(
x
)
+
α
m
ϕ
m
(
x
)
f_m(\mathbf{x}) = f_{m-1}(\mathbf{x}) + \alpha_m \phi_m(\mathbf{x})
fm(x)=fm−1(x)+αmϕm(x)
以及
w
m
,
i
=
exp
[
−
y
i
f
m
−
1
(
x
i
)
]
w_{m,i} = \exp \left[ -y_i f_{m-1} (\mathbf{x}_i) \right]
wm,i=exp[−yifm−1(xi)],可得
w
m
+
1
,
i
=
w
m
,
i
exp
[
−
α
m
y
i
ϕ
m
(
x
i
)
]
w_{m+1,i} = w_{m,i} \exp[- \alpha_m y_i \phi_m(\mathbf{x}_i)]
wm+1,i=wm,iexp[−αmyiϕm(xi)]
这就是样本权重的更新公式,不过,在统计学习方法里样本权重是有做归一化操作的:
w
m
+
1
,
i
=
w
m
,
i
Z
m
exp
[
−
α
m
y
i
ϕ
m
(
x
i
)
]
w_{m+1,i} = \frac{w_{m,i}}{Z_m} \exp[- \alpha_m y_i \phi_m(\mathbf{x}_i)]
wm+1,i=Zmwm,iexp[−αmyiϕm(xi)]
其中
Z
m
=
∑
i
=
1
N
w
m
,
i
exp
[
−
α
m
y
i
ϕ
m
(
x
i
)
]
Z_m = \sum_{i=1}^N w_{m,i} \exp[- \alpha_m y_i \phi_m(\mathbf{x}_i)]
Zm=i=1∑Nwm,iexp[−αmyiϕm(xi)]
其实,做不做归一化并不影响每轮得到的模型
ϕ
\phi
ϕ和权值
α
\alpha
α,但将样本权重之和控制为1,有利于我们查看样本重要性的变化,所以还是采用归一化的方式。
为什么做不做归一化操作不影响每轮的结果?
首先看哪些地方要用到 w m , i w_{m,i} wm,i,主要是两个地方:
求解模型 ϕ m \phi_m ϕm
这是没有归一化的情况:
ϕ m = arg min ϕ ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \phi_m = \arg \min_\phi \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) ϕm=argϕmini=1∑Nwm,iI(yi=ϕ(xi))
这是有归一化的情况:
ϕ m = arg min ϕ 1 Z m ∑ i = 1 N w m , i I ( y i ≠ ϕ ( x i ) ) \phi_m = \arg \min_\phi \frac{1}{Z_m} \sum_{i=1}^N w_{m,i} I(y_i \ne \phi(\mathbf{x}_i)) ϕm=argϕminZm1i=1∑Nwm,iI(yi=ϕ(xi))
相当于多了个常数 1 Z m \frac{1}{Z_m} Zm1,对求解上式的最小值问题没有影响。计算错误率 e m e_m em
从计算公式
e m = ∑ i = 1 N w m , i I ( y i ≠ ϕ m ( x i ) ) ∑ i = 1 N w m , i e_m = \frac{\sum_{i = 1}^N w_{m,i} I(y_i \ne \phi_m(\mathbf{x}_i))}{\sum_{i = 1}^N w_{m,i}} em=∑i=1Nwm,i∑i=1Nwm,iI(yi=ϕm(xi))
可以看出来, e m e_m em本身就做了归一化操作,所以 w m , i w_{m,i} wm,i做没做归一化, e m e_m em都是一样的。综上, w m , i w_{m,i} wm,i做不做归一化操作并不影响每轮的最终结果。
AdaBoost的算法流程
AdaBoost训练算法就是求解上述优化问题的过程,结合之前的讲解,给出如下的AdaBoost算法流程:
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } \text{T}=\{ (\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中特征 x i \mathbf{x}_i xi是n维向量,标签 y i ∈ { − 1 , + 1 } y_i \in \{-1,+1\} yi∈{−1,+1}。
输出:最终分类器 G ( x ) G(\mathbf{x}) G(x)。
(1) 初始化训练数据的权重
D
1
=
(
w
11
,
w
12
,
⋯
,
w
1
N
)
=
(
1
N
,
1
N
,
⋯
,
1
N
)
D_1=(w_{11}, w_{12}, \cdots, w_{1N}) = (\frac{1}{N}, \frac{1}{N}, \cdots, \frac{1}{N})
D1=(w11,w12,⋯,w1N)=(N1,N1,⋯,N1)
这里也可以理解为:令 f 0 ( x ) = 0 f_0(\mathbf{x}) = 0 f0(x)=0,根据 w m , i = exp [ − y i f m − 1 ( x i ) ] w_{m,i} = \exp \left[ -y_i f_{m-1} (\mathbf{x}_i) \right] wm,i=exp[−yifm−1(xi)],并加上归一化操作而得到的。
(2) 对 m = 1 , 2 , ⋯ , M m=1,2,\cdots,M m=1,2,⋯,M
(a) 使用具有权重 D m D_m Dm的训练数据集学习,得到错分率最小的基本分类器 ϕ m ( x ) \phi_m(\mathbf{x}) ϕm(x);
(b) 计算
ϕ
m
(
x
)
\phi_m(\mathbf{x})
ϕm(x)在训练数据集上的误分率
e
m
=
∑
i
=
1
N
w
m
,
i
I
(
y
i
≠
ϕ
m
(
x
i
)
)
e_m = \sum \limits_{i=1}^N w_{m,i} I(y_i \ne \phi_m(\mathbf{x}_i))
em=i=1∑Nwm,iI(yi=ϕm(xi))
因为样本权重更新公式已经做了归一化,所以 e m e_m em就没有必要再做一次了。
© 计算
ϕ
m
(
x
)
\phi_m(\mathbf{x})
ϕm(x)的权值
α
m
=
1
2
log
1
−
e
m
e
m
\alpha_m = \frac{1}{2} \log \frac{1-e_m}{e_m}
αm=21logem1−em
更新训练数据集的权重
D
m
+
1
=
(
w
m
+
1
,
1
,
w
m
+
1
,
2
,
⋯
,
w
m
+
1
,
N
)
D_{m+1} = (w_{m+1,1},w_{m+1,2},\cdots,w_{m+1,N})
Dm+1=(wm+1,1,wm+1,2,⋯,wm+1,N)
w m + 1 , i = w m , i Z m exp ( − α m y i ϕ m ( x i ) ) , i = 1 , 2 , ⋯ , N w_{m+1,i} = \frac{w_{m,i}}{Z_m} \exp \left( -\alpha_m y_i \phi_m(\mathbf{x}_i) \right), \quad i=1,2,\cdots,N wm+1,i=Zmwm,iexp(−αmyiϕm(xi)),i=1,2,⋯,N
Z
m
Z_m
Zm是归一化因子
Z
m
=
∑
i
=
1
N
w
m
,
i
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
Z_m = \sum \limits_{i=1}^{N} w_{m,i} \exp \left( -\alpha_m y_i \phi_m(\mathbf{x}_i) \right)
Zm=i=1∑Nwm,iexp(−αmyiϕm(xi))
(3) 构建基分类器的线性组合
f
M
(
x
)
=
∑
m
=
1
M
α
m
ϕ
m
(
x
)
f_M(x) = \sum \limits_{m=1}^{M} \alpha_m \phi_m(\mathbf{x})
fM(x)=m=1∑Mαmϕm(x)
得到最终组合分类器
G
(
x
)
=
sign
(
f
M
(
x
)
)
=
sign
(
∑
m
=
1
M
α
m
ϕ
m
(
x
)
)
G(\mathbf{x}) = \text{sign} \left( f_M(\mathbf{x}) \right) = \text{sign} \left(\sum \limits_{m=1}^M \alpha_m \phi_m(\mathbf{x}) \right)
G(x)=sign(fM(x))=sign(m=1∑Mαmϕm(x))
sign
(
x
)
\text{sign}(x)
sign(x)是符号函数:
sign
(
x
)
=
{
1
,
x
>
0
0
,
x
=
0
−
1
,
x
<
0
\text{sign}(x) = \left\{ \begin{aligned} 1,& \quad x \gt 0 \\ 0,& \quad x = 0 \\ -1,& \quad x \lt 0 \end{aligned} \right.
sign(x)=⎩⎪⎨⎪⎧1,0,−1,x>0x=0x<0
AdaBoost的例子
该例子来源于统计学习方法第8章提升方法,有下表的训练数据,试用AdaBoost算法学习一个强分类器。
解:初始化数据权值
D
1
=
(
w
1
,
1
,
w
1
,
2
,
⋯
,
w
1
,
10
)
w
1
,
i
=
0.1
,
i
=
1
,
2
,
⋯
,
10
D_1 = (w_{1,1},w_{1,2},\cdots,w_{1,10}) \\ w_{1,i} = 0.1, \quad i=1,2,\cdots,10
D1=(w1,1,w1,2,⋯,w1,10)w1,i=0.1,i=1,2,⋯,10
对
m
=
1
m=1
m=1,
在权值为
D
1
D_1
D1的训练数据上,阈值取2.5时分类误差率最低,故基本分类器为
ϕ
1
(
x
)
=
{
1
,
x
<
2.5
−
1
,
x
>
2.5
\phi_1 (x) = \left\{ \begin{aligned} 1,&\quad x \lt 2.5 \\ -1,&\quad x \gt 2.5 \end{aligned} \right.
ϕ1(x)={1,−1,x<2.5x>2.5
ϕ
1
(
x
)
\phi_1(x)
ϕ1(x)在训练数据集上的误差率
e
1
=
0.3
e_1 = 0.3
e1=0.3
计算 ϕ 1 ( x ) \phi_1(x) ϕ1(x)的权值: α 1 = 1 2 ln 1 − e 1 e 1 = 0.4236 \alpha_1 = \frac12 \ln \frac{1-e_1}{e_1} = 0.4236 α1=21lne11−e1=0.4236
更新训练数据的权值分布:
D
2
=
(
w
2
,
1
,
w
2
,
2
,
⋯
,
w
2
,
10
)
w
2
,
i
=
w
1
,
i
Z
1
exp
(
−
α
1
y
i
ϕ
1
(
x
i
)
)
,
i
=
1
,
2
,
⋯
,
10
D
2
=
(
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.1666
,
0.1666
,
0.1666
,
0.0715
)
D_2 = (w_{2,1},w_{2,2},\cdots,w_{2,10}) \\ w_{2,i} = \frac{w_{1,i}}{Z_1} \exp(-\alpha_1 y_i \phi_1(\mathbf{x}_i)), \quad i=1,2,\cdots,10 \\ D_2 = (0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)
D2=(w2,1,w2,2,⋯,w2,10)w2,i=Z1w1,iexp(−α1yiϕ1(xi)),i=1,2,⋯,10D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)
从而
f
1
(
x
)
=
0.4236
ϕ
1
(
x
)
f_1(x) = 0.4236 \phi_1(x)
f1(x)=0.4236ϕ1(x)
分类器
sign
(
f
1
(
x
)
)
\text{sign}\left( f_1(x) \right)
sign(f1(x))在训练数据集上有3个误分类点。
对 m = 2 m=2 m=2,
在权值为
D
2
D_2
D2的训练数据上,阈值为8.5时分类误差率最低,基本分类器为
ϕ
2
(
x
)
=
{
1
,
x
<
8.5
−
1
,
x
>
8.5
\phi_2(x) = \left\{ \begin{aligned} 1,& \quad x \lt 8.5 \\ -1,& \quad x \gt 8.5 \end{aligned} \right.
ϕ2(x)={1,−1,x<8.5x>8.5
ϕ
2
(
x
)
\phi_2(x)
ϕ2(x)在训练数据集上的误差率
e
2
=
0.2143
e_2 = 0.2143
e2=0.2143
计算 α 2 = 0.6496 \alpha_2 = 0.6496 α2=0.6496
更新训练数据权值:
D
3
=
(
0.0455
,
0.0455
,
0.0455
,
0.1667
,
0.1667
,
0.1667
,
0.1060
,
0.1060
,
0.1060
,
0.0455
)
D_3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.1667, 0.1060, 0.1060, 0.1060, 0.0455)
D3=(0.0455,0.0455,0.0455,0.1667,0.1667,0.1667,0.1060,0.1060,0.1060,0.0455)
从而
f
2
(
x
)
=
0.4236
ϕ
1
(
x
)
+
0.6496
ϕ
2
(
x
)
f_2(x) = 0.4236 \phi_1(x) + 0.6496 \phi_2(x)
f2(x)=0.4236ϕ1(x)+0.6496ϕ2(x)
分类器
sign
(
f
2
(
x
)
)
\text{sign}\left( f_2(x) \right)
sign(f2(x))在训练数据集上有3个误分类点。
对 m = 3 m=3 m=3,
在权值为
D
3
D_3
D3的训练数据上,阈值为5.5时分类误差率最低,基本分类器为
ϕ
3
(
x
)
=
{
1
,
x
>
5.5
−
1
,
x
<
5.5
\phi_3(x) = \left\{ \begin{aligned} 1,& \quad x \gt 5.5 \\ -1,& \quad x \lt 5.5 \end{aligned} \right.
ϕ3(x)={1,−1,x>5.5x<5.5
ϕ
3
(
x
)
\phi_3(x)
ϕ3(x)在训练数据集上的误差率
e
3
=
0.1820
e_3 = 0.1820
e3=0.1820
计算 α 2 = 0.7514 \alpha_2 = 0.7514 α2=0.7514
更新训练数据权值:
D
4
=
(
0.125
,
0.125
,
0.125
,
0.102
,
0.102
,
0.102
,
0.065
,
0.065
,
0.065
,
0.125
)
D_4 = (0.125, 0.125, 0.125, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, 0.125)
D4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)
从而
f
3
(
x
)
=
0.4236
ϕ
1
(
x
)
+
0.6496
ϕ
2
(
x
)
+
0.7514
ϕ
3
(
x
)
f_3(x) = 0.4236 \phi_1(x) + 0.6496 \phi_2(x) + 0.7514 \phi_3(x)
f3(x)=0.4236ϕ1(x)+0.6496ϕ2(x)+0.7514ϕ3(x)
分类器
sign
(
f
3
(
x
)
)
\text{sign}\left( f_3(x) \right)
sign(f3(x))在训练数据集上误分类点个数为0。
于是最终分类器为
G
(
x
)
=
sign
(
f
3
(
x
)
)
=
sign
(
0.4236
ϕ
1
(
x
)
+
0.6496
ϕ
2
(
x
)
+
0.7514
ϕ
3
(
x
)
)
G(x) = \text{sign}\left( f_3(x) \right) = \text{sign}\left( 0.4236 \phi_1(x) + 0.6496 \phi_2(x) + 0.7514 \phi_3(x) \right)
G(x)=sign(f3(x))=sign(0.4236ϕ1(x)+0.6496ϕ2(x)+0.7514ϕ3(x))
AdaBoost算法的误差分析
算法误差分析一般就是找到一个误差的上界,看这个上界跟什么有关。
AdaBoost最关心的就是这个上界是不是随迭代次数的增大而减小,减小多快。
训练误差分析
先看AdaBoost最终分类器的训练误差
ε
=
1
N
∑
i
=
1
N
I
(
G
(
x
i
)
≠
y
i
)
=
1
N
∑
i
=
1
N
I
(
y
i
G
(
x
i
)
<
0
)
\varepsilon = \frac{1}{N} \sum \limits_{i=1}^{N} I\left( G(\mathbf{x}_i) \neq y_i \right) = \frac{1}{N} \sum \limits_{i=1}^{N} I \left( y_i G(\mathbf{x}_i) \lt 0 \right)
ε=N1i=1∑NI(G(xi)=yi)=N1i=1∑NI(yiG(xi)<0)
y i y_i yi和 G ( x i ) G(\mathbf{x}_i) G(xi)都属于 { − 1 , 1 } \{-1,1\} {−1,1}, y i G ( x i ) < 0 y_i G(\mathbf{x}_i) \lt 0 yiG(xi)<0就表示不同号,那么肯定$ G(\mathbf{x}_i) \neq y_i$。
指示函数
I
(
y
f
(
x
)
<
0
)
=
{
1
,
满
足
y
f
(
x
)
<
0
0
,
满
足
y
f
(
x
)
≥
0
I \left( y f(x) \lt 0 \right) = \left\{ \begin{aligned} 1,& \quad 满足 y f(x) \lt 0 \\0,& \quad 满足 y f(x) \ge 0 \end{aligned} \right.
I(yf(x)<0)={1,0,满足yf(x)<0满足yf(x)≥0,就是上图那条灰线。
指数损失函数 L ( y , f ( x ) ) = exp ( − y f ( x ) ) L \left( y, f(x) \right) = \exp \left( -yf(x) \right) L(y,f(x))=exp(−yf(x))就是上图那条蓝线。
易知,在任何一点,指数损失函数
L
(
y
,
f
(
x
)
)
L \left( y, f(x) \right)
L(y,f(x))总不小于指示函数
I
(
y
f
(
x
)
<
0
)
I \left( y f(x) \lt 0 \right)
I(yf(x)<0),所以
ε
=
1
N
∑
i
=
1
N
I
(
y
i
G
(
x
i
)
<
0
)
≤
1
N
∑
i
=
1
N
exp
(
−
y
i
G
(
x
i
)
)
=
1
N
∑
i
=
1
N
exp
(
−
y
i
f
M
(
x
i
)
)
\varepsilon = \frac{1}{N} \sum \limits_{i=1}^{N} I \left( y_i G(\mathbf{x}_i) \lt 0 \right) \le \frac{1}{N} \sum_{i=1}^N \exp \left( -y_i G(\mathbf{x}_i) \right) = \frac{1}{N} \sum_{i=1}^N \exp \left( -y_i f_M(\mathbf{x}_i) \right)
ε=N1i=1∑NI(yiG(xi)<0)≤N1i=1∑Nexp(−yiG(xi))=N1i=1∑Nexp(−yifM(xi))
这样就构造了训练误差 ε \varepsilon ε的一个上界——指数损失。
接着就是鼓捣这个上界,后面推导要用到样本权重更新公式
w
m
+
1
,
i
=
w
m
,
i
Z
m
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
⇒
w
m
,
i
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
Z
m
w
m
+
1
,
i
\begin{aligned} & w_{m+1,i} = \frac{w_{m,i}}{Z_m} \exp \left( -\alpha_m y_i \phi_m(\mathbf{x}_i) \right) \\ \Rightarrow \quad & w_{m,i} \exp \left( -\alpha_m y_i \phi_m(\mathbf{x}_i) \right) = Z_m w_{m+1,i} \end{aligned}
⇒wm+1,i=Zmwm,iexp(−αmyiϕm(xi))wm,iexp(−αmyiϕm(xi))=Zmwm+1,i
指数损失
1
N
∑
i
=
1
N
exp
(
−
y
i
f
M
(
x
i
)
)
=
1
N
∑
i
=
1
N
exp
(
−
∑
m
=
1
M
α
m
y
i
ϕ
m
(
x
i
)
)
=
∑
i
=
1
N
w
1
,
i
∏
m
=
1
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
(
解
释
:
w
1
,
i
=
1
N
)
=
∑
i
=
1
N
[
w
1
,
i
exp
(
−
α
1
y
i
ϕ
1
(
x
i
)
)
]
∏
m
=
2
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
∑
i
=
1
N
Z
1
w
2
,
i
∏
m
=
2
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
(
根
据
样
本
更
新
公
式
,
下
同
)
=
Z
1
∑
i
=
1
N
[
w
2
,
i
exp
(
−
α
2
y
i
ϕ
2
(
x
i
)
)
]
∏
m
=
3
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
Z
1
∑
i
=
1
N
Z
2
w
3
,
i
∏
m
=
3
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
Z
1
Z
2
∑
i
=
1
N
[
w
3
,
i
exp
(
−
α
3
y
i
ϕ
3
(
x
i
)
)
]
∏
m
=
4
M
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
⋯
=
Z
1
Z
2
⋯
Z
M
−
1
∑
i
=
1
N
[
w
M
,
i
exp
(
−
α
M
y
i
ϕ
M
(
x
i
)
)
]
=
∏
m
=
1
M
Z
m
\begin{aligned} &\frac{1}{N} \sum_{i=1}^N \exp \left( -y_i f_M(\mathbf{x}_i) \right) \\ = &\frac{1}{N} \sum_{i=1}^N \exp \left( - \sum_{m=1}^M \alpha_m y_i \phi_m(\mathbf{x}_i) \right) \\ = &\sum_{i=1}^N w_{1,i} \prod_{m=1}^M \exp \left( -\alpha_m y_i \phi_m(\mathbf{x}_i) \right) \quad \quad \quad \quad \quad \quad \quad (解释:w_{1,i} = \frac1N) \\ = &\sum_{i=1}^N \left[ w_{1,i} \exp \left( -\alpha_1 y_i \phi_1 (\mathbf{x}_i) \right) \right] \prod_{m=2}^M \exp \left( -\alpha_m y_i \phi_m (\mathbf{x}_i) \right) \\ = &\sum_{i=1}^N Z_1 w_{2,i} \prod_{m=2}^M \exp \left( -\alpha_m y_i \phi_m (\mathbf{x}_i) \right) \quad \quad \quad \quad \quad \quad \quad (根据样本更新公式,下同) \\ = &Z_1 \sum_{i=1}^N \left[ w_{2,i} \exp \left( -\alpha_2 y_i \phi_2 (\mathbf{x}_i) \right) \right] \prod_{m=3}^M \exp \left( -\alpha_m y_i \phi_m (\mathbf{x}_i) \right) \\ = &Z_1 \sum_{i=1}^N Z_2 w_{3,i} \prod_{m=3}^M \exp \left( -\alpha_m y_i \phi_m (\mathbf{x}_i) \right) \\ = &Z_1 Z_2 \sum_{i=1}^N \left[ w_{3,i} \exp \left( -\alpha_3 y_i \phi_3 (\mathbf{x}_i) \right) \right] \prod_{m=4}^M \exp \left( -\alpha_m y_i \phi_m (\mathbf{x}_i) \right) \\ = & \cdots \\ = &Z_1 Z_2 \cdots Z_{M-1} \sum_{i=1}^N \left[ w_{M,i} \exp \left( -\alpha_M y_i \phi_M (\mathbf{x}_i) \right) \right] \\ = & \prod_{m=1}^M Z_m \end{aligned}
==========N1i=1∑Nexp(−yifM(xi))N1i=1∑Nexp(−m=1∑Mαmyiϕm(xi))i=1∑Nw1,im=1∏Mexp(−αmyiϕm(xi))(解释:w1,i=N1)i=1∑N[w1,iexp(−α1yiϕ1(xi))]m=2∏Mexp(−αmyiϕm(xi))i=1∑NZ1w2,im=2∏Mexp(−αmyiϕm(xi))(根据样本更新公式,下同)Z1i=1∑N[w2,iexp(−α2yiϕ2(xi))]m=3∏Mexp(−αmyiϕm(xi))Z1i=1∑NZ2w3,im=3∏Mexp(−αmyiϕm(xi))Z1Z2i=1∑N[w3,iexp(−α3yiϕ3(xi))]m=4∏Mexp(−αmyiϕm(xi))⋯Z1Z2⋯ZM−1i=1∑N[wM,iexp(−αMyiϕM(xi))]m=1∏MZm
知道指数损失等于
∏
m
=
1
M
Z
m
\prod_{m=1}^M Z_m
∏m=1MZm有什么用?
先来看单个
Z
m
Z_m
Zm,根据定义:
Z
m
=
∑
i
=
1
N
w
m
,
i
exp
(
−
α
m
y
i
ϕ
m
(
x
i
)
)
=
∑
y
i
=
ϕ
m
(
x
i
)
w
m
,
i
e
−
α
m
+
∑
y
i
≠
ϕ
m
(
x
i
)
w
m
,
i
e
α
m
=
e
−
α
m
∑
i
=
1
N
w
m
,
i
I
(
y
i
=
ϕ
m
(
x
i
)
)
+
e
α
m
∑
i
=
1
N
w
m
,
i
I
(
y
i
≠
ϕ
m
(
x
i
)
)
\begin{aligned} Z_m &= \sum_{i=1}^N w_{m,i} \exp\left( - \alpha_m y_i \phi_m(\mathbf{x}_i) \right) \\ &= \sum_{y_i = \phi_m (\mathbf{x}_i)} w_{m,i} e^{-\alpha_m} + \sum_{y_i \ne \phi_m (\mathbf{x}_i)} w_{m,i} e^{\alpha_m} \\ &= e^{-\alpha_m} \sum_{i=1}^N w_{m,i} I(y_i = \phi_m(\mathbf{x}_i)) + e^{\alpha_m} \sum_{i=1}^N w_{m,i} I(y_i \ne \phi_m(\mathbf{x}_i)) \\ \end{aligned}
Zm=i=1∑Nwm,iexp(−αmyiϕm(xi))=yi=ϕm(xi)∑wm,ie−αm+yi=ϕm(xi)∑wm,ieαm=e−αmi=1∑Nwm,iI(yi=ϕm(xi))+eαmi=1∑Nwm,iI(yi=ϕm(xi))
根据误分率
e
m
=
∑
i
=
1
N
w
m
,
i
I
(
y
i
≠
ϕ
m
(
x
i
)
)
e_m = \sum \limits_{i=1}^N w_{m,i} I(y_i \ne \phi_m(\mathbf{x}_i))
em=i=1∑Nwm,iI(yi=ϕm(xi)),有
Z
m
=
e
−
α
m
(
1
−
e
m
)
+
e
α
m
e
m
\begin{aligned} Z_m &= e^{-\alpha_m} (1 - e_m) + e^{\alpha_m} e_m \end{aligned}
Zm=e−αm(1−em)+eαmem
再根据模型权重公式
α
m
=
1
2
log
1
−
e
m
e
m
=
log
1
−
e
m
e
m
\alpha_m = \frac{1}{2} \log \frac{1-e_m}{e_m} = \log \sqrt{\frac{1-e_m}{e_m}}
αm=21logem1−em=logem1−em
,有
Z m = e − α m ( 1 − e m ) + e α m e m = e − log 1 − e m e m ( 1 − e m ) + e log 1 − e m e m e m = e m 1 − e m ( 1 − e m ) + 1 − e m e m e m = 2 e m ( 1 − e m ) \begin{aligned} Z_m &= e^{ -\alpha_m } (1 - e_m) + e^{ \alpha_m } e_m \\ &= e^{-\log \sqrt{\frac{1-e_m}{e_m}}} (1 - e_m) + e^{\log \sqrt{\frac{1-e_m}{e_m}}} e_m \\ &= \sqrt{\frac{e_m}{1 - e_m}} (1 - e_m) + \sqrt{\frac{1-e_m}{e_m}} e_m \\ &= 2 \sqrt{e_m(1 - e_m)} \end{aligned} Zm=e−αm(1−em)+eαmem=e−logem1−em (1−em)+elogem1−em em=1−emem (1−em)+em1−em em=2em(1−em)
如果令
γ
m
=
1
2
−
e
m
\gamma_m = \frac12 - e_m
γm=21−em,有
e
m
=
1
2
−
γ
m
e_m = \frac12 - \gamma_m
em=21−γm,代入
Z
m
Z_m
Zm:
Z
m
=
2
(
1
2
−
γ
m
)
(
1
2
+
γ
m
)
=
2
1
4
−
γ
m
2
=
1
−
4
γ
m
2
\begin{aligned} Z_m &= 2 \sqrt{(\frac12 - \gamma_m) (\frac12 + \gamma_m)} \\ &= 2 \sqrt{\frac14 - \gamma_m^2} \\ &= \sqrt{1 - 4\gamma_m^2} \end{aligned}
Zm=2(21−γm)(21+γm)
=241−γm2
=1−4γm2
由
e
x
e^x
ex和
1
−
x
\sqrt{1-x}
1−x
在点
x
=
0
x=0
x=0的泰勒展开式可以推出(这里的推导先放着,后续再添加):
1
−
4
γ
m
2
≤
exp
(
−
2
γ
m
2
)
\sqrt{1 - 4\gamma_m^2} \le \exp{(-2 \gamma_m^2)}
1−4γm2
≤exp(−2γm2)
所以
Z
m
≤
exp
(
−
2
γ
m
2
)
⇒
∏
m
=
1
M
Z
m
≤
∏
m
=
1
M
exp
(
−
2
γ
m
2
)
\begin{aligned} & Z_m \le \exp{(-2 \gamma_m^2)} \\ \Rightarrow \quad & \prod_{m=1}^M Z_m \le \prod_{m=1}^M \exp{\left( -2 \gamma_m^2 \right)} \end{aligned}
⇒Zm≤exp(−2γm2)m=1∏MZm≤m=1∏Mexp(−2γm2)
取
γ
=
min
(
γ
1
,
γ
2
,
⋯
,
γ
M
)
\gamma = \min{\left( \gamma_1,\gamma_2,\cdots,\gamma_M \right)}
γ=min(γ1,γ2,⋯,γM),由于
0
<
e
m
<
1
2
0 \lt e_m \lt \frac12
0<em<21(弱学习器),那么
0
<
γ
m
=
1
2
−
e
m
<
1
2
0 \lt \gamma_m = \frac12 - e_m \lt \frac12
0<γm=21−em<21,所以
γ
>
0
\gamma \gt 0
γ>0,对所有
m
m
m有
γ
m
≥
γ
⇒
2
γ
m
2
≥
2
γ
2
⇒
−
2
γ
m
2
≤
−
2
γ
2
⇒
exp
(
−
2
γ
m
2
)
≤
exp
(
−
2
γ
2
)
⇒
∏
m
=
1
M
exp
(
−
2
γ
m
2
)
≤
∏
m
=
1
M
exp
(
−
2
γ
2
)
⇒
∏
m
=
1
M
exp
(
−
2
γ
m
2
)
≤
exp
(
−
2
M
γ
2
)
\begin{aligned} &\gamma_m \ge \gamma \\ \Rightarrow \quad & 2 \gamma_m^2 \ge 2 \gamma^2 \\ \Rightarrow \quad & - 2 \gamma_m^2 \le - 2 \gamma^2 \\ \Rightarrow \quad & \exp \left( - 2 \gamma_m^2 \right) \le \exp \left( - 2 \gamma^2 \right) \\ \Rightarrow \quad & \prod_{m=1}^M \exp \left( - 2 \gamma_m^2 \right) \le \prod_{m=1}^M \exp \left( - 2 \gamma^2 \right) \\ \Rightarrow \quad & \prod_{m=1}^M \exp \left( - 2 \gamma_m^2 \right) \le \exp \left( - 2 M\gamma^2 \right) \end{aligned}
⇒⇒⇒⇒⇒γm≥γ2γm2≥2γ2−2γm2≤−2γ2exp(−2γm2)≤exp(−2γ2)m=1∏Mexp(−2γm2)≤m=1∏Mexp(−2γ2)m=1∏Mexp(−2γm2)≤exp(−2Mγ2)
综上
ε
≤
∏
m
=
1
M
Z
m
≤
∏
m
=
1
M
exp
(
−
2
γ
m
2
)
≤
exp
(
−
2
M
γ
2
)
\begin{aligned} \varepsilon \le \prod_{m=1}^M Z_m \le \prod_{m=1}^M \exp \left( - 2 \gamma_m^2 \right) \le \exp \left( - 2 M\gamma^2 \right) \\ \end{aligned}
ε≤m=1∏MZm≤m=1∏Mexp(−2γm2)≤exp(−2Mγ2)
最终得到的上界是
exp
(
−
2
M
γ
2
)
\exp \left( - 2 M\gamma^2 \right)
exp(−2Mγ2),
M
M
M是迭代次数。
这个上界结果表明,AdaBoost的训练误差随着迭代次数的增加以指数速率下降。
测试误差分析
为什么测试误差随着迭代次数的增加而减小?
从目前查到的资料来看,这个问题在学术界还有争议,只是目前间隔(Margin)理论解释还算比较靠谱(参考文章:The Boosting Margin, or Why Boosting Doesn’t Overfit)。
AdaBoost里的间隔不是指SVM的几何间隔(下图是几何间隔),而是指函数间隔。
函数间隔的定义(参照统计学习方法第7章支持向量机):对于给定的训练数据集
T
T
T和超平面
(
w
,
b
)
(\mathbf{w},b)
(w,b),定义超平面
(
w
,
b
)
(\mathbf{w},b)
(w,b)关于样本点
(
x
i
,
y
i
)
(\mathbf{x}_i,y_i)
(xi,yi)的函数间隔为
γ
^
i
=
y
i
(
w
T
x
i
+
b
)
\hat{\gamma}_i = y_i (\mathbf{w}^T \mathbf{x}_i + b)
γ^i=yi(wTxi+b)
函数间隔表示分类预测的正确性及确信度,
γ
^
i
>
0
\hat{\gamma}_i \gt 0
γ^i>0表示分类正确,此时
γ
^
i
\hat{\gamma}_i
γ^i越大样本点
(
x
i
,
y
i
)
(\mathbf{x}_i,y_i)
(xi,yi)分类正确的可信度越高,反之亦然。
在AdaBoost中,对二分类模型 ϕ ( x ) \phi ( \mathbf{x} ) ϕ(x),函数间隔是 y ϕ ( x ) y \phi(\mathbf{x}) yϕ(x),AdaBoost集成模型是 f M ( x ) = ∑ m = 1 M α m ϕ m ( x ) f_M(\mathbf{x}) = \sum \limits_{m=1}^{M} \alpha_m \phi_m(\mathbf{x}) fM(x)=m=1∑Mαmϕm(x),集成模型的函数间隔就是 y f M ( x ) = ∑ m = 1 M α m y ϕ m ( x ) y f_M(\mathbf{x}) = \sum \limits_{m=1}^{M} \alpha_m y \phi_m(\mathbf{x}) yfM(x)=m=1∑Mαmyϕm(x)。
间隔理论就是求集成模型 f M ( x ) f_M(\mathbf{x}) fM(x)的错分概率 P ( y f M ( x ) ≤ 0 ) P \left( y f_M(\mathbf{x}) \le 0 \right) P(yfM(x)≤0)的上界,具体可以参考周志华的书Ensemble Methods Foundations and Algorithms,书上第3章Boosting给出的结论是:错分概率的上界随着迭代次数的增大而减小。
这块是个非常难的问题,如果不是要做AdaBoost方面学术研究的学员,只要了解到这个程度就可以了。
下面提供一些链接供对这块感兴趣的学员查看:
adaboost为什么不容易过拟合呢?俞扬的回答:https://www.zhihu.com/question/41047671
CCL2014_keynote-周志华:https://wenku.baidu.com/view/8efc9b880975f46527d3e1cb.html
The Boosting Margin, or Why Boosting Doesn’t Overfit:https://jeremykun.com/2015/09/21/the-boosting-margin-or-why-boosting-doesnt-overfit/
最后推荐一本书:The Elements of Statistical Learning:http://ddl.escience.cn/ff/emZH