一.算法思想
\quad\quad AdaBoost是一种特殊的Boosting族算法,它与众多的Boosting一族的算法的工作机制一致:先从初始训练样本中训练一个基学习器(也称弱学习器),再根据基学习器的表现对训练样本的分布进行调整,使得先前基学习器分类错误的样本在后续中受到更多的关注(即加大权重),然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直至基学习器的数量达到事先指定的值T,最终将这T个基学习器进行加权结合。
二.算法过程
给定训练集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}
D={(x1,y1),(x2,y2),...,(xm,ym)}
其中
x
i
∈
X
,
y
i
∈
{
−
1
,
+
1
}
x_i\in{X},y_i\in{\{-1,+1\}}
xi∈X,yi∈{−1,+1}
初始化训练样本权重
D
1
(
i
)
=
1
m
(
i
=
1
,
2
,
.
.
.
,
m
)
D_1(i)=\frac{1}{m}(i=1,2,...,m)
D1(i)=m1(i=1,2,...,m)
for t = 1,2,…,T:
\quad
训练弱分类器
h
t
=
ζ
(
D
,
D
t
)
h_t=\zeta(D,D_t)
ht=ζ(D,Dt)
\quad
计算错误率
ϵ
t
=
P
r
i
∼
D
t
(
h
t
(
x
i
)
≠
y
i
)
\epsilon_t=P_{r_i\sim{D_t}}(h_t(x_i)\neq{y_i})
ϵt=Pri∼Dt(ht(xi)=yi)
\quad
计算弱分类器的权重
α
t
=
1
2
l
n
(
1
−
ϵ
t
ϵ
t
)
\alpha_t=\frac{1}{2}ln(\frac{1-\epsilon_t}{\epsilon_t})
αt=21ln(ϵt1−ϵt)
\quad
更新训练样本的权重:
D
t
+
1
=
D
t
(
i
)
Z
t
×
{
e
−
α
t
,
h
t
(
x
i
)
=
y
i
e
α
t
,
h
t
(
x
i
)
≠
y
i
=
D
t
(
i
)
Z
t
e
−
α
t
y
i
h
t
(
x
i
)
D_{t+1}=\frac{D_t(i)}{Z_t}\times\left\{ \begin{aligned} e^{-\alpha t},\quad h_t(x_i)=y_i\\ e^{\alpha t},\quad h_t(x_i)\neq{y_i} \end{aligned} \quad =\frac{D_t(i)}{Z_t}e^{-\alpha t y_i h_t(x_i)} \right.
Dt+1=ZtDt(i)×{e−αt,ht(xi)=yieαt,ht(xi)=yi=ZtDt(i)e−αtyiht(xi)
输出结果
H
f
i
n
a
l
(
x
i
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
h
t
(
x
i
)
)
H_{final}(x_i)=sign(\sum_{t=1}^{T}\alpha_th_t(x_i))
Hfinal(xi)=sign(∑t=1Tαtht(xi))