1 原理
1.1 什么是Adaboost
Adaptive Boosting, Adaboost,翻译过来就是自适应增强,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
其主要步骤为:
- 初始化训练数据的权值分布。如果有 N N N个样本,则每一个训练样本最开始时都被赋予相同的权值: 1 N \frac{1}{N} N1。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
1.2 算法流程
给定一个训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
…
(
x
N
,
y
N
)
}
T=\{(x_1,y_1), (x_2,y_2)…(x_N,y_N)\}
T={(x1,y1),(x2,y2)…(xN,yN)},其中实例
x
∈
X
x \in \mathcal{X}
x∈X,而实例空间
X
⊂
R
n
\mathcal{X} \subset \mathbb{R}^n
X⊂Rn,
y
i
y_i
yi属于标记集合
{
−
1
,
+
1
}
\{-1,+1\}
{−1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
其算法流程为:
1. 步骤一
首先,初始化训练数据的权值分布,每一个训练样本最开始时都被赋予相同的权值:
1
N
\frac{1}{N}
N1。
D
1
=
(
ω
11
,
ω
12
,
.
.
.
,
ω
1
i
,
.
.
.
,
ω
1
N
)
,
ω
1
i
=
1
N
,
i
=
1
,
2
,
.
.
.
,
N
D_1=(\omega_{11},\omega_{12},...,\omega_{1i},...,\omega_{1N}),\omega_{1i}=\frac{1}{N},i=1,2,...,N
D1=(ω11,ω12,...,ω1i,...,ω1N),ω1i=N1,i=1,2,...,N
2.步骤二
进行多轮迭代,用
m
=
1
,
2
,
.
.
.
,
M
m = 1,2, ..., M
m=1,2,...,M表示迭代的轮次。
- 使用具有权值分布
D
m
D_m
Dm的训练数据集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器):
G m ( x ) : X → { − 1 , 1 } G_m(x):\mathcal{X}\rightarrow \{-1,1\} Gm(x):X→{−1,1} - 计算
G
m
(
x
)
G_m(x)
Gm(x)在训练数据集上的分类误差率
e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N ω m i I ( G m ( x i ) ≠ y i ) e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^{N}\omega_{mi}I(G_m(x_i)\neq y_i) em=P(Gm(xi)=yi)=i=1∑NωmiI(Gm(xi)=yi)
由此可知, G m ( x ) G_m(x) Gm(x)在训练数据集上的误差率 e m e_m em就是 G m ( x ) G_m(x) Gm(x)误分类样本的权值之和。 - 计算
G
m
(
x
)
G_m(x)
Gm(x)的系数,
α
m
\alpha_m
αm表示
G
m
(
x
)
G_m(x)
Gm(x)在最终分类器中的重要程度,即该分类器在最终分类器中的权重。
α m = 1 2 l n 1 − e m e m \alpha_m=\frac{1}{2}ln\frac{1-e_m}{e_m} αm=21lnem1−em
其图像为:
可知, e m ≤ 1 2 e_m\leq\frac{1}{2} em≤21时, α m ≥ 0 \alpha_m\geq 0 αm≥0,且 α m \alpha_m αm随着 e m e_m em的减小而增大,这意味着分类误差率越小的基本分类器在最终分类器中的作用越大。 - 更新训练数据集的权值分布,用于下一轮迭代,更新方法为:
D m + 1 = ( ω m + 1 , 1 , ω m + 1 , 2 , . . . , ω m + 1 , N ) ω m + 1 , i = ω m i Z m e − α m y i G m ( x i ) 其 中 , i = 1 , 2 , . . . , N D_{m+1}=(\omega_{m+1,1},\omega_{m+1,2},...,\omega_{m+1,N}) \\ \omega_{m+1,i}=\frac{\omega_{mi}}{Z_m}e^{-\alpha_my_iG_m(x_i)} \\ 其中,i=1,2,...,N Dm+1=(ωm+1,1,ωm+1,2,...,ωm+1,N)ωm+1,i=Zmωmie−αmyiGm(xi)其中,i=1,2,...,N
使得被基本分类器 G m ( x ) G_m(x) Gm(x)误分类样本的权值增大,而被正确分类样本的权值减小。就这样,通过这样的方式,AdaBoost方法能“重点关注”或“聚焦于”那些较难分的样本上。
其中, Z m Z_m Zm是规范化因子,使得 D m + 1 D_{m+1} Dm+1成为一个概率分布:
Z m = ∑ i = 1 N ω m i e − α m y i G m ( x i ) Z_m=\sum_{i=1}^{N}\omega_{mi}e^{-\alpha_my_iG_m(x_i)} Zm=i=1∑Nωmie−αmyiGm(xi)
3.步骤三
组合各个弱分类器:
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(\sum_{m=1}^{M}\alpha_mG_m(x)) G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
2 实例
有以下样本:
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | X |
---|---|---|---|---|---|---|---|---|---|---|
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Y | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
求解过程:初始化训练数据的权值分布,令每个权值 ω 1 i = 1 N = 0.1 \omega_{1i}=\frac{1}{N}=0.1 ω1i=N1=0.1,其中, N = 10 N=10 N=10, i = 1 , 2 , . . . , 10 i = 1,2,...,10 i=1,2,...,10,然后分别对于 m = 1 , 2 , 3 , . . . m = 1,2,3,... m=1,2,3,...等值进行迭代。
数据分析
拿到这10个数据的训练样本后,根据 X X X和 Y Y Y的对应关系,要把这10个数据分为两类,一类是“1”,一类是“-1”,根据数据的特点发现:
- “0 1 2”这3个数据对应的类是“1”;
- “3 4 5”这3个数据对应的类是“-1”;
- “6 7 8”这3个数据对应的类是“1”;
- 9是比较孤独的,对应类“-1”。
抛开孤独的9不讲,“0 1 2”、“3 4 5”、“6 7 8”这是3类不同的数据,分别对应的类是1、-1、1,直观上推测可知,可以找到对应的数据分界点,比如2.5、5.5、8.5 将那几类数据分成两类。当然,这只是主观臆测,下面实际计算下这个具体过程。
过程1
对于 m = 1 m=1 m=1,在权值分布为 D 1 D_1 D1(10个数据,每个数据的权值皆初始化为0.1)的训练数据上, v v v表示阈值,经过计算可得:
-
v
=
2.5
v=2.5
v=2.5时,误差率为0.3
X < 2.5 X \lt 2.5 X<2.5时取1, X > 2.5 X \gt 2.5 X>2.5时取-1,则6 7 8分错,误差率为0.3; -
v
=
5.5
v=5.5
v=5.5时,误差率最低为0.4
X < 5.5 X \lt 5.5 X<5.5时取1, X > 5.5 X \gt 5.5 X>5.5时取-1,则3 4 5 6 7 8皆分错,误差率0.6大于0.5,不可取。故令 X > 5.5 X \gt 5.5 X>5.5时取1, X < 5.5 X \lt 5.5 X<5.5时取-1,则0 1 2 9分错,误差率为0.4; -
v
=
8.5
v=8.5
v=8.5时,误差率为0.3
X < 8.5 X \lt 8.5 X<8.5时取1, X > 8.5 X \gt 8.5 X>8.5时取-1,则3 4 5分错,误差率为0.3。
可见,无论
v
=
2.5
v=2.5
v=2.5,还是
v
=
8.5
v=8.5
v=8.5,总得分错3个样本,故可任取其中任意一个如2.5,得到第一个基本分类器为:
G
1
(
x
)
=
{
1
if
x
<
2.5
−
1
if
x
>
2.5
G_1(x) = \begin{cases} 1 & \text{if } x \lt 2.5 \\ -1 & \text{if } x \gt 2.5 \end{cases}
G1(x)={1−1if x<2.5if x>2.5
在样本集中:
- 0 1 2对应的类( Y Y Y)是1,因它们本身都小于2.5,所以被 G 1 ( x ) G_1(x) G1(x)分在了相应的类“1”中,分对了。
- 3 4 5本身对应的类( Y Y Y)是-1,因它们本身都大于2.5,所以被 G 1 ( x ) G_1(x) G1(x)分在了相应的类“-1”中,分对了。
- 但6 7 8本身对应类( Y Y Y)是1,却因它们本身大于2.5而被 G 1 ( x ) G_1(x) G1(x)分在了类"-1"中,所以这3个样本被分错了。
- 9本身对应的类( Y Y Y)是-1,因它本身大于2.5,所以被 G 1 ( x ) G_1(x) G1(x)分在了相应的类“-1”中,分对了。
从而得到 G 1 ( x ) G_1(x) G1(x)在训练数据集上的误差率(被 G 1 ( x ) G_1(x) G1(x)误分类样本“6 7 8”的权值之和) e 1 = P ( G 1 ( x i ) ≠ y i ) = 3 ∗ 0.1 = 0.3 e_1=P(G_1(x_i)\neq y_i) = 3*0.1 = 0.3 e1=P(G1(xi)=yi)=3∗0.1=0.3。
然后根据误差率
e
1
e_1
e1计算
G
1
G_1
G1的系数:
α
1
=
1
2
l
n
1
−
e
1
e
1
=
0.4236
\alpha_1=\frac{1}{2}ln\frac{1-e_1}{e_1}=0.4236
α1=21lne11−e1=0.4236
这个
a
1
a_1
a1代表
G
1
(
x
)
G_1(x)
G1(x)在最终的分类函数中所占的权重,为0.4236。
接着更新训练数据的权值分布,用于下一轮迭代:
D
m
+
1
=
(
ω
m
+
1
,
1
,
ω
m
+
1
,
2
,
.
.
.
,
ω
m
+
1
,
N
)
ω
m
+
1
,
i
=
ω
m
i
Z
m
e
−
α
m
y
i
G
m
(
x
i
)
D_{m+1}=(\omega_{m+1,1},\omega_{m+1,2},...,\omega_{m+1,N}) \\ \omega_{m+1,i}=\frac{\omega_{mi}}{Z_m}e^{-\alpha_my_iG_m(x_i)}
Dm+1=(ωm+1,1,ωm+1,2,...,ωm+1,N)ωm+1,i=Zmωmie−αmyiGm(xi)
值得一提的是,由权值更新的公式可知,每个样本的新权值是变大还是变小,取决于它是被分错还是被分正确。即如果某个样本被分错了,则
y
i
∗
G
m
(
x
i
)
y_i * G_m(x_i)
yi∗Gm(xi)为负,负负得正,结果使得整个式子变大(样本权值变大),否则变小。
第一轮迭代后,最后得到各个数据新的权值分布:
D
2
=
(
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.0715
,
0.1666
‾
,
0.1666
‾
,
0.1666
‾
,
0.0715
)
D_2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, \underline{0.1666}, \underline{0.1666}, \underline{0.1666}, 0.0715)
D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)
由此可以看出,因为样本中是数据“6 7 8”被
G
1
(
x
)
G_1(x)
G1(x)分错了,所以它们的权值由之前的
0.1
0.1
0.1增大到
0.1666
0.1666
0.1666,反之,其它数据皆被分正确,所以它们的权值皆由之前的
0.1
0.1
0.1减小到
0.0715
0.0715
0.0715。
从而得到分类函数
f 1 ( x ) = α 1 ∗ G 1 ( x ) = 0.4236 G 1 ( x ) f_1(x)= \alpha_1*G_1(x) = 0.4236G_1(x) f1(x)=α1∗G1(x)=0.4236G1(x)
此时,得到的第一个基本分类器sign(f1(x))在训练数据集上有3个误分类点(即6 7 8)。
从上述第一轮的整个迭代过程可以看出:被误分类样本的权值之和影响误差率,误差率影响基本分类器在最终分类器中所占的权重。
过程2
对于 m = 2 m=2 m=2,在权值分布为 D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 , 0.1666 , 0.1666 , 0.0715 ) D_2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715) D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715)的训练数据上,经过计算可得:
-
v
=
2.5
v=2.5
v=2.5时,误差率为
0.1666
×
3
0.1666\times 3
0.1666×3
x < 2.5 x < 2.5 x<2.5时取1, x > 2.5 x > 2.5 x>2.5时取-1,则6 7 8分错,误差率为 0.1666 × 3 0.1666\times 3 0.1666×3 -
v
=
5.5
v=5.5
v=5.5时,误差率最低为
0.0715
×
4
0.0715\times 4
0.0715×4
x > 5.5 x > 5.5 x>5.5时取1, x < 5.5 x < 5.5 x<5.5时取-1,则0 1 2 9分错,误差率为 0.0715 × 3 + 0.0715 0.0715\times 3 + 0.0715 0.0715×3+0.0715 -
v
=
8.5
v=8.5
v=8.5时,误差率为
0.0715
×
3
0.0715\times 3
0.0715×3
x < 8.5 x < 8.5 x<8.5时取1, x > 8.5 x > 8.5 x>8.5时取-1,则3 4 5分错,误差率为 0.0715 × 3 0.0715\times 3 0.0715×3
所以, v = 8.5 v=8.5 v=8.5时,误差率最低,故得到第二个基本分类器为:
G 2 ( x ) = { 1 if x < 8.5 − 1 if x > 8.5 G_2(x) = \begin{cases} 1 & \text{if } x \lt 8.5 \\ -1 & \text{if } x \gt 8.5 \end{cases} G2(x)={1−1if x<8.5if x>8.5
很明显, G 2 ( x ) G_2(x) G2(x)把样本“3 4 5”分错了,根据 D 2 D_2 D2可知它们的权值为 0.0715 , 0.0715 , 0.0715 0.0715, 0.0715, 0.0715 0.0715,0.0715,0.0715,所以 G 2 ( x ) G_2(x) G2(x)在训练数据集上的误差率 e 2 = P ( G 2 ( x i ) ≠ y i ) = 0.0715 × 3 = 0.2143 e_2=P(G_2(x_i)\neq y_i) = 0.0715 \times 3 = 0.2143 e2=P(G2(xi)=yi)=0.0715×3=0.2143。
G 2 G_2 G2的系数为:
α 2 = 1 2 l n 1 − e 2 e 2 = 0.6496 \alpha_2=\frac{1}{2}ln\frac{1-e_2}{e_2}=0.6496 α2=21lne21−e2=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, \underline{0.1667}, \underline{0.1667}, \underline{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)。被分错的样本“3 4 5”的权值变大,其它被分对的样本的权值变小。
此时得到:
f 2 ( x ) = 0.4236 G 1 ( x ) + 0.6496 G 2 ( x ) f_2(x)=0.4236G_1(x) + 0.6496G_2(x) f2(x)=0.4236G1(x)+0.6496G2(x)
此时,得到的分类器 s i g n ( f 2 ( x ) ) sign(f_2(x)) sign(f2(x))在训练数据集上有3个误分类点(即3 4 5)。
过程3
对于m=3,在权值分布为 D 3 = ( 0.0455 , 0.0455 , 0.0455 , 0.1667 , 0.1667 , 0.01667 , 0.1060 , 0.1060 , 0.1060 , 0.0455 ) D_3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.01667, 0.1060, 0.1060, 0.1060, 0.0455) D3=(0.0455,0.0455,0.0455,0.1667,0.1667,0.01667,0.1060,0.1060,0.1060,0.0455)的训练数据上,经过计算可得:
-
v
=
2.5
v=2.5
v=2.5时,误差率为
0.1060
×
3
0.1060\times 3
0.1060×3
x < 2.5 x < 2.5 x<2.5时取1, x > 2.5 x > 2.5 x>2.5时取-1,则6 7 8分错,误差率为 0.1060 × 3 0.1060\times 3 0.1060×3 -
v
=
5.5
v=5.5
v=5.5时,误差率最低为
0.0455
×
4
0.0455\times 4
0.0455×4
x > 5.5 x > 5.5 x>5.5时取1, x < 5.5 x < 5.5 x<5.5时取-1,则0 1 2 9分错,误差率为 0.0455 × 3 + 0.0715 0.0455\times 3 + 0.0715 0.0455×3+0.0715 -
v
=
8.5
v=8.5
v=8.5时,误差率为
0.1667
×
3
0.1667\times 3
0.1667×3
x < 8.5 x < 8.5 x<8.5时取1, x > 8.5 x > 8.5 x>8.5时取-1,则3 4 5分错,误差率为 0.1667 × 3 0.1667\times 3 0.1667×3
所以阈值
v
=
5.5
v=5.5
v=5.5时误差率最低,故第三个基本分类器为:
G
3
(
x
)
=
{
1
if
x
>
5.5
−
1
if
x
<
5.5
G_3(x) = \begin{cases} 1 & \text{if } x \gt 5.5 \\ -1 & \text{if } x \lt 5.5 \end{cases}
G3(x)={1−1if x>5.5if x<5.5
此时,被误分类的样本是:0 1 2 9,这4个样本所对应的权值皆为
0.0455
0.0455
0.0455,所以
G
3
(
x
)
G_3(x)
G3(x)在训练数据集上的误差率
e
3
=
P
(
G
3
(
x
i
)
≠
y
i
)
=
0.0455
×
4
=
0.1820
e_3 = P(G_3(x_i)\neq y_i) = 0.0455\times 4 = 0.1820
e3=P(G3(xi)=yi)=0.0455×4=0.1820。
计算
G
3
G_3
G3的系数:
α
3
=
1
2
l
n
1
−
e
3
e
3
=
0.7514
\alpha_3=\frac{1}{2}ln\frac{1-e_3}{e_3}=0.7514
α3=21lne31−e3=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 = (\underline{0.125}, \underline{0.125}, \underline{0.125}, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, \underline{0.125})
D4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)。被分错的样本“0 1 2 9”的权值变大,其它被分对的样本的权值变小。
得到:
f
3
(
x
)
=
0.4236
G
1
(
x
)
+
0.6496
G
2
(
x
)
+
0.7514
G
3
(
x
)
f_3(x)=0.4236G_1(x) + 0.6496G_2(x)+0.7514G_3(x)
f3(x)=0.4236G1(x)+0.6496G2(x)+0.7514G3(x)
此时,得到的分类器
s
i
g
n
(
f
3
(
x
)
)
sign(f_3(x))
sign(f3(x))在训练数据集上有0个误分类点。至此,整个训练过程结束。
现在,咱们来总结下3轮迭代下来,各个样本权值和误差率的变化,如下所示(其中,样本权值
D
D
D中加了下划线的表示在上一轮中被分错的样本的新权值):
- 训练之前
各个样本的权值被初始化为
D 1 = ( 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.1 , 0.1 ) D_1 = (0.1, 0.1,0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1) D1=(0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1) - 第一轮迭代中
样本“6 7 8”被分错,对应的误差率为 e 1 = P ( G 1 ( x i ) ≠ y i ) = 3 × 0.1 = 0.3 e_1=P(G_1(x_i)≠y_i) = 3\times 0.1 = 0.3 e1=P(G1(xi)=yi)=3×0.1=0.3
此第一个基本分类器在最终的分类器中所占的权重为 α 1 = 0.4236 \alpha_1 = 0.4236 α1=0.4236
样本新的权值为
D 2 = ( 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.0715 , 0.1666 ‾ , 0.1666 ‾ , 0.1666 ‾ , 0.0715 ) D_2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, \underline{0.1666}, \underline{0.1666}, \underline{0.1666}, 0.0715) D2=(0.0715,0.0715,0.0715,0.0715,0.0715,0.0715,0.1666,0.1666,0.1666,0.0715) - 第二轮迭代中
样本“3 4 5”被分错,对应的误差率为 e 2 = P ( G 2 ( x i ) ≠ y i ) = 0.0715 × 3 = 0.2143 e_2=P(G_2(x_i)≠y_i) = 0.0715\times 3 = 0.2143 e2=P(G2(xi)=yi)=0.0715×3=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, \underline{0.1667}, \underline{0.1667}, \underline{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) - 第三轮迭代中
样本“0 1 2 9”被分错,对应的误差率为 e 3 = P ( G 3 ( x i ) ≠ y i ) = 0.0455 × 4 = 0.1820 e_3 = P(G_3(x_i)≠y_i) = 0.0455\times 4 = 0.1820 e3=P(G3(xi)=yi)=0.0455×4=0.1820
此第三个基本分类器在最终的分类器中所占的权重为 α 3 = 0.7514 \alpha_3 = 0.7514 α3=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 = (\underline{0.125}, \underline{0.125}, \underline{0.125}, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, \underline{0.125}) D4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)
从上述过程中可以发现,如果某些个样本被分错,它们在下一轮迭代中的权值将被增大,同时,其它被分对的样本在下一轮迭代中的权值将被减小。就这样,分错样本权值增大,分对样本权值变小,而在下一轮迭代中,总是选取让误差率最低的阈值来设计基本分类器,所以误差率
e
e
e(所有被
G
m
(
x
)
G_m(x)
Gm(x)误分类样本的权值之和)不断降低。
综上,将上面计算得到的
α
1
\alpha_1
α1、
α
2
\alpha_2
α2、
α
3
\alpha_3
α3各值代入
G
(
x
)
G(x)
G(x)中,
G
(
x
)
=
s
i
g
n
[
f
3
(
x
)
]
=
s
i
g
n
[
α
1
×
G
1
(
x
)
+
α
2
×
G
2
(
x
)
+
α
3
×
G
3
(
x
)
]
G(x) = sign[f_3(x)] = sign[ \alpha_1 \times G_1(x) + \alpha_2\times G_2(x) + \alpha_3 \times G_3(x) ]
G(x)=sign[f3(x)]=sign[α1×G1(x)+α2×G2(x)+α3×G3(x)],得到最终的分类器为:
G
(
x
)
=
s
i
g
n
[
f
3
(
x
)
]
=
s
i
g
n
[
0.4236
G
1
(
x
)
+
0.6496
G
2
(
x
)
+
0.7514
G
3
(
x
)
]
G(x) = sign[f_3(x)] = sign[ 0.4236G_1(x) + 0.6496G_2(x)+0.7514G_3(x) ]
G(x)=sign[f3(x)]=sign[0.4236G1(x)+0.6496G2(x)+0.7514G3(x)]
3 Adaboost的优缺点
优点
- 精度高
- 灵活,可以使用多种方法构造子分类器,Adaboost只是提供一个框架
- 可理解,使用简单分类器的计算结果更容易理解,并且子分类器构建相对简单
- 无需做特征筛选
- 无需担心过拟合
缺点
主要的缺点是对异常样本非常敏感,异常样本在迭代中可能会获得较高的权重,最终影响预测准确性。
文章转自:https://blog.csdn.net/v_july_v/article/details/40718799