文章目录
1.模型融合(aggregation models)
假如我们有多个模型,要怎么灵活运用将这些模型的结果呢?可以使用模型融合(aggregation models) 的方式,将n个模型的输出进一步融合成为一个输出,得到我们想要的结果,那么怎么融合多个模型呢?常见的方法有以下几种:
1.1 uniform blending
核心思想:少数服从多数,民主投票
如果知道n个模型的输出,每个模型有一票,则最终的输出:
H
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
h
t
(
x
)
)
H(x)=sign(\sum_{t=1}^T h_{t}(x))
H(x)=sign(t=1∑Tht(x))
如果是多分类,则最终输出得票数最多的分类即可。
如果是预测数值型输出,则最终的输出:
H
(
x
)
=
1
T
∑
t
=
1
T
h
t
(
x
)
H(x)=\frac{1}{T}\sum_{t=1}^Th_{t}(x)
H(x)=T1t=1∑Tht(x)
可以证明融合之后的模型要比原先的效果好(更稳定):
a
v
g
(
(
h
t
(
x
)
−
f
(
x
)
)
2
)
=
a
v
g
(
h
t
2
−
2
h
t
f
+
f
2
)
=
a
v
g
(
h
t
2
)
−
2
H
f
+
f
2
=
a
v
g
(
h
t
2
)
−
H
2
+
(
H
−
f
)
2
=
a
v
g
(
h
t
2
)
−
2
H
2
+
H
2
+
(
H
−
f
)
2
=
a
v
g
(
h
t
2
−
2
h
t
H
+
H
2
)
+
(
H
−
f
)
2
=
a
v
g
(
(
h
t
−
H
)
2
)
+
(
H
−
f
)
2
\begin{aligned} avg((h_t(x)-f(x))^2) &= avg(h_t^2-2h_tf+f^2) \\ &= avg(h_t^2)-2Hf+f^2 \\ &= avg(h_t^2)-H^2+(H-f)^2 \\ &= avg(h_t^2)-2H^2+H^2 +(H-f)^2 \\ &= avg(h_t^2-2h_tH+H^2)+(H-f)^2 \\ &= avg((h_t-H)^2)+(H-f)^2 \end{aligned}
avg((ht(x)−f(x))2)=avg(ht2−2htf+f2)=avg(ht2)−2Hf+f2=avg(ht2)−H2+(H−f)2=avg(ht2)−2H2+H2+(H−f)2=avg(ht2−2htH+H2)+(H−f)2=avg((ht−H)2)+(H−f)2
其中,
a
v
g
(
(
h
t
(
x
)
−
f
(
x
)
)
2
)
avg((h_t(x)-f(x))^2)
avg((ht(x)−f(x))2)代表原始模型的均方误差,
(
H
−
f
)
2
(H-f)^2
(H−f)2表示融合模型的军方误差,它们之间相差了一个
a
v
g
(
(
h
t
−
H
)
2
)
avg((h_t-H)^2)
avg((ht−H)2),因此有
a
v
g
(
(
h
t
(
x
)
−
f
(
x
)
)
2
)
≥
(
H
−
f
)
2
avg((h_t(x)-f(x))^2) \ge (H-f)^2
avg((ht(x)−f(x))2)≥(H−f)2
对于uniform blending,每个模型的输出要有所不同,这样融合之后的效果才有可能比单一的模型效果要好,否则平均下来得到的还是一样的结果。
1.2 Linear Bleading
核心思想 :让每个模型投票,但是给不同模型不同的票数,即给予它们不同的权重。最终的输出为:
H
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
⋅
h
t
(
x
)
)
H(x)=sign(\sum_{t=1}^T \alpha_t·h_{t}(x))
H(x)=sign(t=1∑Tαt⋅ht(x))
此时要求解的目标为:
min
a
t
≥
0
1
N
(
y
n
−
∑
t
=
1
T
a
t
h
t
(
x
n
)
)
2
\min_{a_t\ge 0}\frac{1}{N}\left(y_n-\sum_{t=1}^Ta_th_t(x_n)\right )^2
at≥0minN1(yn−t=1∑Tatht(xn))2
1.3 Stacking (condition blending)
核心思想 :让每个模型投票,但是在不同的条件下给不同模型不同的的权重,采用非线性的方式将模型的输出融合。这种方式比较强大,有过拟合的风险。
stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为训练集进行再训练,从而得到完整的stacking模型。
通常使用K-fold来实现Stacking,假设我们使用5折交叉验证,有10000行训练集,2500行验证集,对于一个模型来说,5次交叉验证会将10000个训练集分成5份,每份2000个数据,每次以其中一份作为测试集,这样10000个数据都会被测试一次,最终我们可以得到
10000
×
1
10000 \times 1
10000×1的矩阵
A
1
A_1
A1,同时每次交叉验证的时候都会对验证集进行预测,每次都可以得到一个
2500
×
1
2500 \times 1
2500×1的矩阵,共得到5个。对于同一个样本的预测,我们使用平均的方式,最终5个矩阵合并为1个
2500
×
1
2500 \times 1
2500×1的矩阵
B
1
B_1
B1。由于我们是在融合多个模型,自然不止一个模型。假如我们还有模型
M
o
d
e
l
2
,
M
o
d
e
l
3
,
.
.
.
,
M
o
d
e
l
n
Model_2,Model_3,...,Model_n
Model2,Model3,...,Modeln,对于每一个模型重复上述步骤,我们可以得到
A
2
,
B
2
,
A
3
,
B
3
,
.
.
.
A
n
,
B
n
A_2,B_2,A_3,B_3,...A_n,B_n
A2,B2,A3,B3,...An,Bn。将所有的A,B矩阵按列合并起来,得到
A
t
o
t
a
l
,
B
t
o
t
a
l
A_{total},B_{total}
Atotal,Btotal。以上步骤是Stacking第一层所完成的事情。
将得到的
A
t
o
t
a
l
A_{total}
Atotal作为第二层的训练集,
B
t
o
t
a
l
B_{total}
Btotal作为第二层的测试集,使用Liner Regression来总结所有模型的效果,得到最终的预测效果。
2. Bagging
如果说,我们一开始并没有很多个模型,也就无法运用上面的技巧了。因此我们需要通过学习的方式来得到多个模型,一边决定怎么把它们合起来。其中,Bagging是一种通过Bootstraping学习得到多个模型并利用uniform blending来融合模型的方法。
Bootstraping:从已有的样本中有放回地随机取n份样本。即同一个样本可能被取到多次。假如有10000个样本,可以迭代三千次,每次都取出一份bootstrap sample,每份bootstrap sample可以看做是新的数据,从而我们得到了3000个模型
h
t
h_t
ht。这是Bagging套袋法中一个重要的步骤。
Bagging的算法过程如下:
- 从原始样本集中按照Bootstraping方法抽取n个样本,共进行k次,得到k组训练集。
- 使用k组训练集得到k个模型。
- 对于分类问题使用投票的方式得到分类结果,对于回归问题使用均值作为最后的结果。
如果我们的模型对数据的随机性比较敏感的话,采用BAGging的方式得到的融合模型往往很有效果。
3. AdaBoost(Adaptive Boosting)
在Bagging的过程中,每次Boostraping取到的样本都是独立随机的。而在模型融合的算法中,我们认为每个基分类器如果越不一样的,则融合得到的效果是最好的。考虑这样一种情况,在当前一轮取到的样本得到的模型
h
t
1
h_{t1}
ht1,如果让他在
h
t
2
h_{t2}
ht2的表现变得和抛硬币的情况一样,那么在
h
t
2
h_{t2}
ht2的样本就会使得
h
t
2
h_{t2}
ht2跟
h
t
1
h_{t1}
ht1的差别变大,也就是说两个分类器会得到很不一样的决策边界。
而boostraping的过程其实就是在给样本赋予不同权重的过程,比如说,我们取到了3个样本1,,0个样本2,1个样本3,那么他们的权重就分别是3,0,1。要改变下一个模型的表现,其实只要修改它们的权重即可。令
ϵ
\epsilon
ϵ表示当前模型下分类错误的比例。则我们的权重优化操作为:
- 将正确分类的样本权重乘上 ϵ \epsilon ϵ
- 将错误分类的样本权重乘上 1 − ϵ 1-\epsilon 1−ϵ
或者我们进一步定义放缩因子 t = 1 − ϵ ϵ t=\sqrt{\frac{1-\epsilon}{\epsilon}} t=ϵ1−ϵ,则权重优化操作变为:
- 将正确分类的样本权重除以 t t t
- 将错误分类的样本权重乘上 t t t
在通常
ϵ
\epsilon
ϵ都要小于
1
2
\frac{1}{2}
21,否则我们的基学习器就比抛硬币的概率还低了。此时
t
≥
1
t\ge 1
t≥1,则上面的式子表现为增大错误分类的权重,缩小正确分类的权重。经过上面的修正,当前模型的表现就会变成五五开的情况。
通常一开始的权重u初始化为
1
N
\frac{1}{N}
N1,即每个样本都取一次。
那我们最终要怎么确定每个模型
h
t
h_t
ht在最终模型h中占用的权重呢?考虑模型有的可能变现较差,有的表现较好,那么给予不同的权重是一个合理的选择。对于一个表现良好的模型
h
t
h_t
ht,它的缩放因子t会更大,因此可以考虑使用
ln
t
\ln t
lnt。当t越大时,错误率
ϵ
\epsilon
ϵ越低,得到的权重越大,当t=1时,错误率
ϵ
\epsilon
ϵ为
1
2
\frac{1}{2}
21,
ln
t
\ln t
lnt=0,即这样的模型不予考虑,因为他跟抛硬币没什么区别。
对于权重更新的式子可以合并为
u
m
+
1
,
i
=
u
m
,
i
Z
m
⋅
e
x
p
(
−
α
m
y
i
G
m
(
x
i
)
)
,
i
=
1
,
2...
,
N
Z
m
=
∑
i
=
1
N
u
m
,
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
u_{m+1,i}=\frac{u_{m,i}}{Z_m}·exp\left(-\alpha_my_iG_m(x_i)\right) ,i=1,2...,N\\ Z_m=\sum_{i=1}^Nu_{m,i}\exp (-\alpha_my_iG_m(x_i))
um+1,i=Zmum,i⋅exp(−αmyiGm(xi)),i=1,2...,NZm=i=1∑Num,iexp(−αmyiGm(xi))
其中
Z
m
Z_m
Zm为规范化因子。构建基本分类器的线性组合
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^M\alpha_mG_m(x)
f(x)=m=1∑MαmGm(x)
得到最终分类器
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
=
s
i
g
n
(
∑
m
=
1
M
α
m
G
m
(
x
)
)
G(x)=sign(f(x))=sign\left(\sum_{m=1}^M\alpha_mG_m(x)\right)
G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
最终我们得到Adaptive Boosting的算法流程如下:
- 初始化权重 u 1 = [ 1 N , 1 N , . . . , 1 N ] u_1=[\frac{1}{N},\frac{1}{N},...,\frac{1}{N}] u1=[N1,N1,...,N1]
- 根据当前权重 u u u学习基本分类器 G m ( x ) G_m(x) Gm(x)
- 获得当前错误率 ϵ m = P ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m , i \epsilon_m=P(G_m(x_i)\ne y_i)=\sum\limits_{G_m(x_i)\ne y_i}w_{m,i} ϵm=P(Gm(xi)̸=yi)=Gm(xi)̸=yi∑wm,i
- 计算当前模型在融合模型中的权重 α m = 1 2 ln 1 − ϵ m ϵ m \alpha_m=\frac{1}{2}\ln\frac{1-\epsilon_m}{\epsilon_m} αm=21lnϵm1−ϵm
- 计算缩放因子 t = 1 − ϵ m ϵ m t=\sqrt{\frac{1-\epsilon_m}{\epsilon_m}} t=ϵm1−ϵm
- 更新 u m + 1 , i = { u m , i Z m e − α m G m ( x i ) = y i u m , i Z m e α m G m ( x i ) ≠ y i u_{m+1,i}=\begin{cases}\frac{u_{m,i}}{Z_m}e^{-\alpha_m} & G_m(x_i)=y_i \\ \frac{u_{m,i}}{Z_m}e^{\alpha_m} & G_m(x_i)\ne y_i \end{cases} um+1,i={Zmum,ie−αmZmum,ieαmGm(xi)=yiGm(xi)̸=yi,即将正确分类样本的权重降低,将错误分类样本的权重提高。
- 重复步骤2-6 M次。
- 得到最终模型 G ( x ) G(x) G(x)。
4.AdaBoost误差分析
当
G
(
x
i
)
≠
y
i
G(x_i) \ne y_i
G(xi)̸=yi时,
y
i
f
(
x
i
)
<
0
y_if(x_i) \lt 0
yif(xi)<0,因而
exp
(
−
y
i
f
(
x
i
)
)
≥
1
\exp (-y_if(x_i))\ge 1
exp(−yif(xi))≥1。则有
1
N
∑
i
=
1
N
I
(
G
(
x
i
)
≠
y
i
)
≤
1
N
∑
i
exp
(
−
y
i
f
(
x
i
)
)
\frac{1}{N}\sum\limits_{i=1}^NI(G(x_i)\ne y_i)\le \frac{1}{N}\sum\limits_i\exp(-y_if(x_i))
N1i=1∑NI(G(xi)̸=yi)≤N1i∑exp(−yif(xi))
又
1
N
∑
i
exp
(
−
y
i
f
(
x
i
)
)
=
1
N
∑
i
exp
(
−
∑
m
=
1
M
α
m
y
i
G
m
(
x
i
)
)
=
∑
i
u
1
,
i
∏
m
=
1
M
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
=
Z
1
∑
i
u
2
,
i
∏
m
=
2
M
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
=
Z
1
Z
2
∑
i
u
3
,
i
∏
m
=
3
M
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
=
.
.
.
=
Z
1
Z
2
.
.
.
Z
M
−
1
∑
i
u
M
,
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
=
∏
m
=
1
M
Z
m
\begin{aligned} &\frac{1}{N}\sum\limits_i\exp(-y_if(x_i))\\ &=\frac{1}{N}\sum\limits_i\exp\left(-\sum_{m=1}^M\alpha_my_iG_m(x_i)\right)\\ &=\sum_iu_{1,i}\prod_{m=1}^M\exp(-\alpha_my_iG_m(x_i))\\ &=Z_1\sum_iu_{2,i}\prod_{m=2}^M\exp(-\alpha_my_iG_m(x_i))\\ &=Z_1Z_2\sum_iu_{3,i}\prod_{m=3}^M\exp(-\alpha_my_iG_m(x_i))\\ &=...\\ &=Z_1Z_2...Z_{M-1}\sum_iu_{M,i}\exp(-\alpha_my_iG_m(x_i))\\ &=\prod_{m=1}^MZ_m\\ \end{aligned}
N1i∑exp(−yif(xi))=N1i∑exp(−m=1∑MαmyiGm(xi))=i∑u1,im=1∏Mexp(−αmyiGm(xi))=Z1i∑u2,im=2∏Mexp(−αmyiGm(xi))=Z1Z2i∑u3,im=3∏Mexp(−αmyiGm(xi))=...=Z1Z2...ZM−1i∑uM,iexp(−αmyiGm(xi))=m=1∏MZm
因此AdaBoost最终分类器的训练误差界为
1
N
∑
i
=
1
N
I
(
G
(
x
i
)
≠
y
i
)
≤
1
N
∑
i
exp
(
−
y
i
f
(
x
i
)
)
=
∏
m
Z
m
\frac{1}{N}\sum_{i=1}^NI(G(x_i)\ne y_i)\le \frac{1}{N}\sum_i\exp(-y_if(x_i))=\prod_mZ_m
N1i=1∑NI(G(xi)̸=yi)≤N1i∑exp(−yif(xi))=m∏Zm
结论:每一轮可以选取适当的
G
m
G_m
Gm使得
Z
m
Z_m
Zm最小,从而使得训练误差下降最快。
在二分类问题里,令
γ
m
=
1
2
−
ϵ
m
\gamma_m=\frac{1}{2}-\epsilon_m
γm=21−ϵm,有
Z
m
=
∑
i
=
1
N
u
m
,
i
exp
(
−
α
m
y
i
G
m
(
x
i
)
)
=
∑
y
i
=
G
m
(
x
i
)
u
m
,
i
e
−
a
m
+
∑
y
i
≠
G
m
(
x
i
)
u
m
,
i
e
a
m
=
(
1
−
ϵ
m
)
e
−
a
m
+
ϵ
m
e
a
m
=
2
ϵ
m
(
1
−
ϵ
m
)
=
1
−
4
γ
m
2
\begin{aligned} Z_m &=\sum_{i=1}^Nu_{m,i}\exp(-\alpha_my_iG_m(x_i))\\ &=\sum_{y_i=G_m(x_i)}u_{m,i}e^{-a_m}+\sum_{y_i \ne G_m(x_i)}u_{m,i}e^{a_m}\\ &=(1-\epsilon_m)e^{-a_m}+\epsilon_me^{a_m}\\ &=2\sqrt{\epsilon_m(1-\epsilon_m)}\\ &=\sqrt{1-4\gamma_m^2} \end{aligned}
Zm=i=1∑Num,iexp(−αmyiGm(xi))=yi=Gm(xi)∑um,ie−am+yi̸=Gm(xi)∑um,ieam=(1−ϵm)e−am+ϵmeam=2ϵm(1−ϵm)=1−4γm2
再由
e
x
e^x
ex和
1
−
x
\sqrt{1-x}
1−x在点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),从而有
∏
m
=
1
M
(
1
−
4
γ
m
2
)
≤
exp
(
−
2
∑
m
=
1
M
γ
m
2
)
\prod_{m=1}^M\sqrt{(1-4\gamma_m^2)} \le \exp(-2\sum_{m=1}^M\gamma_m^2)
m=1∏M(1−4γm2)≤exp(−2m=1∑Mγm2)
则二分类的训练误差界为
∏
m
=
1
M
Z
m
=
∏
m
=
1
M
1
−
4
γ
m
2
≤
exp
(
−
2
∑
m
=
1
M
γ
m
2
)
\prod_{m=1}^MZ_m=\prod_{m=1}^M\sqrt{1-4\gamma_m^2} \le \exp(-2\sum_{m=1}^M\gamma_m^2)
m=1∏MZm=m=1∏M1−4γm2≤exp(−2m=1∑Mγm2)
如果存在
γ
>
0
\gamma \gt 0
γ>0,对所有m有
γ
m
≥
γ
\gamma_m \ge \gamma
γm≥γ,则
1
N
∑
i
=
1
N
I
(
G
(
x
i
)
≠
y
i
)
≤
exp
(
−
2
M
γ
2
)
\frac{1}{N}\sum_{i=1}^NI(G(x_i)\ne y_i)\le \exp(-2M\gamma^2)
N1i=1∑NI(G(xi)̸=yi)≤exp(−2Mγ2)
这表明在此条件下Adaboost的训练误差是以指数速率下降的!
5.AdaBoost与前向分步算法
其实AdaBoost是当前向分步算法损失函数为指数损失时的特例。 前向分步算法如下:
- 初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0
- 对m=1,2,…,M,极小化损失函数 ( β m , γ m ) = arg min β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; y ) ) (\beta_m,\gamma_m)=\arg \min_{\beta,\gamma}\sum_{i=1}^NL(y_i,f_{m-1}(x_i)+\beta b(x_i;y)) (βm,γm)=argβ,γmini=1∑NL(yi,fm−1(xi)+βb(xi;y))得到参数 β m , γ m \beta_m,\gamma_m βm,γm。然后更新 f m ( x ) = f m − 1 ( x ) + β m b ( x ; y m ) f_m(x)=f_{m-1}(x)+\beta_mb(x;y_m) fm(x)=fm−1(x)+βmb(x;ym)
- 得到加法模型 f ( x ) = ∑ m = 1 M β m b ( x ; y m ) f(x)=\sum_{m=1}^M\beta_m b(x;y_m) f(x)=m=1∑Mβmb(x;ym)
前向分步算法将同时求解M个模型的参数
β
m
,
γ
m
\beta_m,\gamma_m
βm,γm的优化问题简化为逐次求解各个
β
m
,
γ
m
\beta_m,\gamma_m
βm,γm。这与AdaBoost的步骤一致。
当前向分步算法的损失函数是
L
(
y
,
f
(
x
)
)
=
exp
[
−
y
f
(
x
)
]
L(y,f(x))=\exp [-yf(x)]
L(y,f(x))=exp[−yf(x)]
时,等价于AdaBoost算法学习的具体步骤。
假设经过m-1轮迭代后已经得到
f
m
−
1
(
x
)
f_{m-1}(x)
fm−1(x),在第m轮时,需要迭代得到
a
m
,
G
m
(
x
)
和
f
m
(
x
)
a_m,G_m(x)和f_m(x)
am,Gm(x)和fm(x),有
f
m
(
x
)
=
f
m
−
1
(
x
)
+
a
m
G
m
(
x
)
f_m(x)=f_{m-1}(x)+a_mG_m(x)
fm(x)=fm−1(x)+amGm(x)
目标是让前向分步算法中得到的
a
m
a_m
am和
G
m
(
x
)
G_m(x)
Gm(x)使
f
m
(
x
)
f_m(x)
fm(x)在训练集T上的指数损失最小,即
(
a
m
,
G
m
(
x
)
)
=
arg
min
a
,
G
∑
i
=
1
N
exp
[
−
y
i
(
f
m
−
1
(
x
i
)
+
a
G
(
x
i
)
)
]
=
arg
min
a
,
G
∑
i
=
1
N
u
ˉ
m
,
i
exp
[
−
y
i
a
G
(
x
i
)
]
.
.
.
.
.
.
.
.
.
.
(
1
)
(a_m,G_m(x))=\arg \min_{a,G}\sum_{i=1}^N\exp [-y_i(f_{m-1}(x_i)+aG(x_i))] \\ =\arg \min_{a,G}\sum_{i=1}^N\bar u_{m,i}\exp [-y_iaG(x_i)] ..........(1)
(am,Gm(x))=arga,Gmini=1∑Nexp[−yi(fm−1(xi)+aG(xi))]=arga,Gmini=1∑Nuˉm,iexp[−yiaG(xi)]..........(1)
其中
u
ˉ
m
,
i
=
exp
[
−
y
i
f
m
−
1
(
x
i
)
]
\bar u_{m,i}=\exp[-y_if_{m-1}(x_i)]
uˉm,i=exp[−yifm−1(xi)],为当前已知量,与最小化无关。
使式子1最小的G(x)为
G
m
∗
(
x
)
=
arg
min
G
∑
i
=
1
N
u
ˉ
m
,
i
I
(
y
i
≠
G
(
x
i
)
)
G^*_m(x)=\arg \min_G\sum_{i=1}^N\bar u_{m,i}I(y_i \ne G(x_i))
Gm∗(x)=argGmini=1∑Nuˉm,iI(yi̸=G(xi))
此分类器即为AdaBoost算法学习的基本分类器
G
m
(
x
)
G_m(x)
Gm(x),它是使第m轮数据分类误差率最小的分类器。
∑
i
=
1
N
u
ˉ
m
,
i
exp
[
−
y
i
a
G
(
x
i
)
]
=
∑
y
i
=
G
m
(
x
i
)
u
ˉ
m
,
i
e
−
a
+
∑
y
i
≠
G
m
(
x
i
)
u
ˉ
m
,
i
e
a
=
∑
y
i
=
G
m
(
x
i
)
u
ˉ
m
,
i
e
−
a
+
∑
y
i
≠
G
m
(
x
i
)
u
ˉ
m
,
i
e
a
+
∑
y
i
≠
G
m
(
x
i
)
u
ˉ
m
,
i
e
−
a
−
∑
y
i
≠
G
m
(
x
i
)
u
ˉ
m
,
i
e
−
a
=
(
e
a
−
e
−
a
)
∑
i
=
1
N
u
ˉ
m
,
i
I
(
y
i
≠
G
(
x
i
)
)
+
e
−
a
∑
i
=
1
N
u
ˉ
m
,
i
\begin{aligned} &\sum_{i=1}^N\bar u_{m,i}\exp [-y_iaG(x_i)]\\ &=\sum_{y_i=G_m(x_i)}\bar u_{m,i}e^{-a}+\sum_{y_i \ne G_m(x_i)}\bar u_{m,i}e^a \\ &=\sum_{y_i=G_m(x_i)}\bar u_{m,i}e^{-a}+\sum_{y_i \ne G_m(x_i)}\bar u_{m,i}e^a +\sum_{y_i \ne G_m(x_i)}\bar u_{m,i}e^{-a} -\sum_{y_i \ne G_m(x_i)}\bar u_{m,i}e^{-a} \\ &=(e^a-e^{-a})\sum_{i=1}^N\bar u_{m,i}I(y_i \ne G(x_i))+e^{-a}\sum_{i=1}^N\bar u_{m,i} \end{aligned}
i=1∑Nuˉm,iexp[−yiaG(xi)]=yi=Gm(xi)∑uˉm,ie−a+yi̸=Gm(xi)∑uˉm,iea=yi=Gm(xi)∑uˉm,ie−a+yi̸=Gm(xi)∑uˉm,iea+yi̸=Gm(xi)∑uˉm,ie−a−yi̸=Gm(xi)∑uˉm,ie−a=(ea−e−a)i=1∑Nuˉm,iI(yi̸=G(xi))+e−ai=1∑Nuˉm,i
由于已经求出
G
m
(
x
)
G_m(x)
Gm(x),我们将其带入,对a求导并使其导数为0,得到
a
m
∗
=
1
2
log
1
−
ϵ
m
ϵ
m
a_m^*=\frac{1}{2}\log \frac{1-\epsilon_m}{\epsilon_m}
am∗=21logϵm1−ϵm
其中
ϵ
m
=
∑
i
=
1
N
u
ˉ
m
,
i
I
(
y
i
≠
G
m
(
x
i
)
)
∑
i
=
1
N
u
ˉ
m
,
i
\epsilon_m=\frac{\sum_{i=1}^N\bar u_{m,i}I(y_i \ne G_m(x_i))}{\sum_{i=1}^N\bar u_{m,i}}
ϵm=∑i=1Nuˉm,i∑i=1Nuˉm,iI(yi̸=Gm(xi))
跟AdaBoost中的
a
m
a_m
am完全一致。
而权重的更新由
f
m
=
f
m
−
1
+
a
m
G
m
(
x
)
f_m=f_{m-1}+a_mG_m(x)
fm=fm−1+amGm(x)以及
u
ˉ
m
,
i
=
exp
[
−
y
i
f
m
−
1
(
x
i
)
]
\bar u_{m,i}=\exp[-y_if_{m-1}(x_i)]
uˉm,i=exp[−yifm−1(xi)]得
u
ˉ
m
+
1
,
i
=
u
ˉ
m
,
i
exp
[
−
y
i
a
m
G
m
(
x
)
]
\bar u_{m+1,i}=\bar u_{m,i}\exp [-y_ia_mG_m(x)]
uˉm+1,i=uˉm,iexp[−yiamGm(x)]
添上规范化因子
Z
m
Z_m
Zm就与AdaBoost中的权值更新公式等价。