前言
集成学习(Ensemble Learning)是利用多个学习器来实现学习任务的一种机器学习模型,集成学习目前已经涉及到各个领域,并有不错的学习效果。AdaBoost是集成学习与提升方法中的代表,本文将介绍AdaBoost的算法原理
一、AdaBoost基本思想
1.弱分类器和强分类器
弱分类器:比较粗糙的分类规则,分类的正确率仅比随机分类略好 强分类器:精确的分类规则,分类的正确率非常高
2.核心思想
提升方法的基本思想很简单,就是“三个臭皮匠顶一个诸葛亮”。因为求弱分类器比求强分类器要容易的多,从弱学习算法出发,得到一系列的弱分类器,然后将这些弱分类器组合起来构成一个强分类器,达到分类效果。 给定一个数据集,如图,按层进行学习(每条虚线上均为一层弱分类器)。对于每一层来说,数据集是不变的,改变的是权重w(i)(AdaBoost根据样本分类对错改变权重,也即前一层分类对的下一层没必要过多关注,在下一层所占权重变小,前一层分类错误的在下一层被重点关注,所占权重大)。每一层弱分类器学习完成后,根据分类误差率得到相应的权值(分类误差率小的占最后总表决权值大,分类误差率大的占最后总表决权小)。最终,将得到的所有弱分类器按权重线性组合输出。
二、算法实现
1. 引入数据集
假设给定一个二类分类的训练数据集T = {(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
x_1, y_1), (x_2, y_2),...,(x_N, y_N)
x1?,y1?),(x2?,y2?),...,(xN?,yN?)},其中,每个样本点由实例和标签组成。实例
x
i
∈
x_i \in
xi?∈ X
?
\subseteq
?
R
n
R^n
Rn,标签
y
i
y_i
yi?
∈
\in
∈ Y = {-1, +1},X是实例空间,Y是标签集合。
2. 输出最终分类器
2.1 初始化训练数据的权值
-
D
1
D_1
D1? = (
w
11
,
.
.
.
,
w
1
i
,
.
.
.
,
w
1
N
w_{11},...,w_{1i},...,w_{1N}
w11?,...,w1i?,...,w1N?),
w
1
i
w_{1i}
w1i? =
1
N
\frac{1}{N}
N1?,i = 1, 2, 3,…,N
2.2 对m = 1,2,…,M
(a) 使用具有权值分布
D
m
D_m
Dm?的训练数据集学习,得到基本分类器
G
m
(
x
)
G_m(x)
Gm?(x):X
→
\rightarrow
→ {-1, +1}
(b) 计算
G
m
(
x
)
G_m(x)
Gm?(x)在训练数据集上的分类误差率
-
e
m
e_m
em? =
∑
i
=
1
N
P
(
G
m
(
x
i
)
≠
y
i
)
=
∑
i
=
1
N
w
m
i
I
(
G
m
(
x
i
)
≠
y
i
)
\displaystyle\sum_{i=1}^{N} P(G_m(x_i) \neq y_i) = \displaystyle\sum_{i=1}^{N}w_{mi}I(G_m(x_i) \neq y_i)
i=1∑N?P(Gm?(xi?)?=yi?)=i=1∑N?wmi?I(Gm?(xi?)?=yi?) ①
其中,I 表示
G
m
(
x
i
)
≠
y
i
G_m(x_i) \neq y_i
Gm?(xi?)?=yi?的实例个数,
e
m
e_m
em? =
∑
i
=
1
N
P
(
G
m
(
x
i
)
≠
y
i
)
=
∑
G
m
(
x
i
)
≠
y
i
w
m
i
\displaystyle\sum_{i=1}^{N} P(G_m(x_i) \neq y_i) = \displaystyle\sum_{G_m(x_i) \neq y_i}w_{mi}
i=1∑N?P(Gm?(xi?)?=yi?)=Gm?(xi?)?=yi?∑?wmi? 这里,
w
m
i
w_{mi}
wmi?表示第 m 轮中第 i 个实例的权值,所有的权值之和为1(
∑
i
=
1
N
w
m
i
=
1
\displaystyle\sum_{i=1}^{N} w_{mi}= 1
i=1∑N?wmi?=1)。
G
m
(
x
)
G_m(x)
Gm?(x)在加权的训练数据集上的分类误差率是被
G
m
(
x
)
G_m(x)
Gm?(x)误分类样本的权值之和,所以数据权值分布
D
m
D_m
Dm?在每一轮随基本分类器
G
m
(
x
)
G_m(x)
Gm?(x)分类误差率的改变而更新
(c)计算
G
m
(
x
)
G_m(x)
Gm?(x)系数
-
α
m
\alpha_m
αm? =
1
2
l
n
1
?
e
m
e
m
\frac{1}{2}ln\frac{1-e_m}{e_m}
21?lnem?1?em?? ②
α
m
\alpha_m
αm?是所有基本分类器在最终分类器中的权重, 由②可知,当
e
m
≤
1
2
e_m\le\frac{1}{2}
em?≤21?时,
α
m
≥
0
\alpha_m \geq 0
αm?≥0,
e
m
∈
(
0
,
1
)
e_m \in (0, 1)
em?∈(0,1),该函数为单减函数,所以分类误差率
e
m
e_m
em?越小,最终所占权重
α
m
\alpha_m
αm?就越大。
(d)更新训练数据集的权值分布
-
D
m
+
1
=
(
w
m
+
1
,
1
,
.
.
.
,
w
m
+
1
,
i
,
.
.
.
,
w
m
+
1
,
N
)
D_{m+1} = (w_{m+1,1},...,w_{m+1,i},...,w_{m+1,N})
Dm+1?=(wm+1,1?,...,wm+1,i?,...,wm+1,N?) ③
-
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(-\alpha_my_iG_m(x_i)), i = 1,2,...,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 = \displaystyle\sum_{i=1}^{N} w_{mi}\exp(-\alpha_my_iG_m(x_i))
Zm?=i=1∑N?wmi?exp(?αm?yi?Gm?(xi?)) ⑤
它使
D
m
+
1
D_{m+1}
Dm+1?成为一个概率分布。
上式④可以写为:
w
m
+
1
,
i
=
{
w
m
i
Z
m
e
?
α
m
,
G
m
(
x
i
)
=
y
i
w
m
i
Z
m
e
α
m
,
G
m
(
x
i
)
≠
y
i
w_{m+1,i}= \begin{cases} \frac{w_{mi}}{Z_m}e^{-\alpha_m}, G_m(x_i) = y_i\\ \frac{w_{mi}}{Z_m}e^{\alpha_m}, G_m(x_i) \neq y_i \end{cases}
wm+1,i?={Zm?wmi??e?αm?,Gm?(xi?)=yi?Zm?wmi??eαm?,Gm?(xi?)?=yi?? 由此式可知,被弱分类器
G
m
(
x
)
G_m(x)
Gm?(x)误分类样本的权值得以扩大,而被正确分类样本的权值得以缩小。由下式比上上式可知,被误分类的样本放大了
e
2
α
m
=
1
?
e
m
e
m
e^{2\alpha_m} = \frac{1-e_m}{e_m}
e2αm?=em?1?em??倍。因此,误分类的样本在下一轮将更多的被关注,而正确分类的在下一轮被关注更少。
2.3 构建基本分类器(弱分类器)的线性组合
-
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
i
)
f(x) = \displaystyle\sum_{m=1}^{M} \alpha_mG_m(x_i)
f(x)=m=1∑M?αm?Gm?(xi?) ⑥
得到最终的分类器 -
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(\displaystyle\sum_{m=1}^{M}\alpha_mG_m(x))
G(x)=sign(f(x))=sign(m=1∑M?αm?Gm?(x)) ⑦
三、AdaBoost训练误差分析
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}\displaystyle\sum_{i=1}^{N}I(G(x_i) \neq y_i) \le \frac{1}{N}\displaystyle\sum_{i}\exp(-y_if(x_i)) = \displaystyle\prod_{m}Z_m
N1?i=1∑N?I(G(xi?)?=yi?)≤N1?i∑?exp(?yi?f(xi?))=m∏?Zm?
该定理说明,可以在每一轮选取适当的
G
m
G_m
Gm?使得
Z
m
Z_m
Zm?最小,从而使训练误差下降最快。
-
∏
m
Z
m
=
∏
m
=
1
M
[
2
e
m
(
1
?
e
m
)
]
=
∏
m
=
1
M
(
1
?
4
γ
m
2
)
≤
exp
?
(
?
2
∑
m
=
1
M
γ
m
2
)
\displaystyle\prod_{m}Z_m = \displaystyle\prod_{m=1}^{M}[2\sqrt{e_m(1-e_m)}] = \displaystyle\prod_{m=1}^{M}\sqrt{(1-4\gamma_m^{2})} \le \exp(-2\displaystyle\sum_{m=1}^{M}\gamma_m^{2})
m∏?Zm?=m=1∏M?[2em?(1?em?)
?]=m=1∏M?(1?4γm2?)
?≤exp(?2m=1∑M?γm2?),其中
γ
m
=
1
2
?
e
m
\gamma_m = \frac{1}{2} - e_m
γm?=21??em?
推论,如果存在
γ
m
>
0
,
对
所
有
的
m
有
γ
m
≥
γ
\gamma_m > 0,对所有的 m 有\gamma_m \geq \gamma
γm?>0,对所有的m有γm?≥γ,则
-
1
N
∑
i
=
1
N
I
(
G
(
x
i
)
≠
y
i
)
≤
exp
?
(
?
2
M
γ
2
)
\frac{1}{N}\displaystyle\sum_{i=1}^{N}I(G(x_i) \neq y_i) \le\exp(-2M\gamma^2)
N1?i=1∑N?I(G(xi?)?=yi?)≤exp(?2Mγ2)
这个推论说明在此条件下,AdaBoost的训练误差以指数下降。
四、总结
AdaBoost具备非常典型的集成学习特点,将多个弱分类器按分类正确率得到不一样的权重,最后将所有的弱分类器按所得权重线性结合在一起,从而得到一个强分类器。
1. 优点
AdaBoost能够很巧妙的将多个弱分类器组合起来形成一个强分类器,而弱分类器可由不同的分类算法形成,并且AdaBoost精度很高。
2.缺点
AdaBoost缺点很明显,因为训练过程相当于黑盒,训练多少次能达到强分类器的效果我们不知道,所以训练次数难以确定。并且每一次都是训练完整个数据集,导致非常耗时。
参考文献
李航.统计学习方法(第二版) [M].北京:清华大学出版社,2019
|