前言
Adaboost算法的模型是加法模型,损失函数为指数函数,学习算法为前向分布算法的二类学习方法。这里仅介绍模型。
模型建立
设训练样本为
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
(
x
N
,
y
N
)
}
\mathrm{T}=\left\{ \left( \mathrm{x}_1,\mathrm{y}_1 \right) ,\left( \mathrm{x}_2,\mathrm{y}_2 \right) ...\left( \mathrm{x}_{\mathrm{N}},\mathrm{y}_{\mathrm{N}} \right) \right\}
T={(x1?,y1?),(x2?,y2?)...(xN?,yN?)} 初始化训练数据的权值分布:
D
1
=
(
w
11
,
w
12
?
w
1
i
?
?
,
w
1
N
)
,
w
1
i
=
1
N
,
i
=
1
,
2
,
?
?
,
N
D_1=\left( w_{11},w_{12}\cdots w_{1i}\cdots ,w_{1N} \right) ,w_{1i}=\frac{1}{N},i=1,2,\cdots ,N
D1?=(w11?,w12??w1i??,w1N?),w1i?=N1?,i=1,2,?,N 使用具有权值分布的训练数据学习,得到m次训练的基本分类器:
G
m
(
x
)
:
χ
→
{
?
1
,
+
1
}
G_m(x):\quad \chi \rightarrow \{-1,+1\}
Gm?(x):χ→{?1,+1} 可以将样本X映射到-1和+1类,也就是预测值为±1表示的正负类。
计算
G
m
(
x
)
G_m(x)
Gm?(x)在训练数据集上的分类误差率:
e
m
=
P
(
G
m
(
x
i
)
≠
y
i
)
=
∑
i
=
1
N
w
m
i
I
(
G
m
(
x
i
)
≠
y
i
)
e_m=P\left( G_m\left( x_i \right) \ne y_i \right) =\sum_{i=1}^N{w_{mi}}I\left( G_m\left( x_i \right) \ne y_i \right)
em?=P(Gm?(xi?)?=yi?)=i=1∑N?wmi?I(Gm?(xi?)?=yi?) 即为预测值≠真实值的概率,但是这里计算的时候需要乘上样本的权值。
计算
G
m
(
x
)
G_m(x)
Gm?(x)的系数:
α
m
=
1
2
log
?
1
?
e
m
e
m
\alpha _m=\frac{1}{2}\log \frac{1-e_m}{e_m}
αm?=21?logem?1?em?? 这个系数可以认为是分类器的权值,依靠于分类误差率来建立。当
e
m
e_m
em?取0的时候,
α
m
\alpha _m
αm?的值为0;当
e
m
e_m
em?取1的时候,
α
m
\alpha _m
αm?的值为-∞。
当有了
α
m
\alpha _m
αm?时,可以实现数据权值的更新:
w
m
+
1
,
i
=
w
m
i
Z
m
exp
?
(
?
α
m
y
i
G
m
(
x
i
)
)
,
i
=
1
,
2
,
?
?
,
N
w_{m+1,i}=\frac{w_{mi}}{Z_m}\exp \left( -\alpha _my_iG_m\left( x_i \right) \right) ,i=1,2,\cdots ,N
wm+1,i?=Zm?wmi??exp(?αm?yi?Gm?(xi?)),i=1,2,?,N 其中
Z
m
Z_m
Zm?为规范化因子:
Z
m
=
∑
i
=
1
N
w
m
i
exp
?
(
?
α
m
y
i
G
m
(
x
i
)
)
Z_m=\sum_{i=1}^N{w_{mi}}\exp \left( -\alpha _my_iG_m\left( x_i \right) \right)
Zm?=i=1∑N?wmi?exp(?αm?yi?Gm?(xi?)) 这里展开讲一下
Z
m
Z_m
Zm?:可以注意到该式子为
w
m
i
exp
?
(
?
α
m
y
i
G
m
(
x
i
)
)
w_{mi}\exp \left( -\alpha _my_iG_m\left( x_i \right) \right)
wmi?exp(?αm?yi?Gm?(xi?))的求和,是为了保证下一次更新的权值分布仍然满足求和为1,exp项为进行修改的增益。化简一下:
w
m
+
1
,
i
=
w
m
i
Z
m
exp
?
(
?
α
m
y
i
G
m
(
x
i
)
)
?
Z
m
w
m
+
1
,
i
=
w
m
i
exp
?
(
?
α
m
y
i
G
m
(
x
i
)
)
?
Z
1
w
2
,
i
=
w
1
i
exp
?
(
?
α
1
y
i
G
1
(
x
i
)
)
w_{m+1,i}=\frac{w_{mi}}{Z_m}\exp \left( -\alpha _my_iG_m\left( x_i \right) \right) \Rightarrow Z_mw_{m+1,i} \\ =w_{mi}\exp \left( -\alpha _my_iG_m\left( x_i \right) \right) \Rightarrow Z_1w_{2,i}=w_{1i}\exp \left( -\alpha _1y_iG_1\left( x_i \right) \right)
wm+1,i?=Zm?wmi??exp(?αm?yi?Gm?(xi?))?Zm?wm+1,i?=wmi?exp(?αm?yi?Gm?(xi?))?Z1?w2,i?=w1i?exp(?α1?yi?G1?(xi?)) 观察式子可以发现,规范化因子目的仅是使得
D
m
+
1
D_{m+1}
Dm+1?也满足成为一个概率分布。其中分类错误的样本的权值将会提高。
最终更新整个数据集的权值分布:
D
m
+
1
=
(
w
m
+
1
,
1
,
w
m
+
1
,
2
?
w
m
+
1
,
i
?
?
,
w
m
+
1
,
N
)
D_{m+1}=\left( w_{m+1,1},w_{m+1,2}\cdots w_{m+1,i}\cdots ,w_{m+1,N} \right)
Dm+1?=(wm+1,1?,wm+1,2??wm+1,i??,wm+1,N?)
构建基本分类器的线性组合:
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^M{\alpha _m}G_m(x)
f(x)=m=1∑M?αm?Gm?(x) 这里结合系数
α
m
\alpha _m
αm?可以知道,当误差很小的时候,当前
G
m
(
x
)
G_m(x)
Gm?(x)的系数很小,几乎是不更新了;反之误差很大,更新的力度会很大。
最终得到分类器:
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
=
s
i
g
n
(
∑
m
=
1
M
α
m
G
m
(
x
)
)
G(x)=\mathrm{sign(}f(x))=\mathrm{sign}\left( \sum_{m=1}^M{\alpha _m}G_m(x) \right)
G(x)=sign(f(x))=sign(m=1∑M?αm?Gm?(x))
|