机器学习理论基础—集成学习
个体与集成
集成学习通过构建并结合多个学习器来完成学习任务,有时也称为多分类系统等。
分类: 根据集成学习中的个体学习器的不同可以分为同质集成(集成的学习器相同例如全部是决策树),和异质集成(集成的学习器包括多种,例如决策树神经网络SVM等)。
- 同质集成中的学习器称为:基学习器
- 异质集成中的学习器称为:组件学习器(或个体学习器)
- 弱学习器指的是泛化性能略优于随机猜想的学习器(例如二分类问题中精度略高于50%)
集成举例
样本一,样本二,样本三的label值都为1时(共三种情况)
首先集成学习的结果通过投票法产生,即少数服从多数的原则
- 第一种情况:每个分类器都有66.6%的精度值经过集成学习之后提高了性能
- 第二种情况:每个分类器都有33.3%的精度值经过集成学习之后结果变差了
- 第三种情况:三个分类器没有差别集成的结果保持不变
总结: 集成学习器应该满足的两个基本条件是好而不同的。
集成个体学习器的收敛性保证
参数说明:
- F(x)集成了多个学习器的集成学习最后结果
- f(x)样本x的真实标签
- T个体学习器的数量
- &个体学习器的误差
解读:k个学习器成功预测样本x的概率
两个基本结论:
- 收敛速率随着个体学习器数量T呈指数下降
- ∈ =0.5的个体集成器对收敛没有作用
引入推导过程Hoeffing不等式(霍夫丁不等式)
分类
根据个体学习器的生成方式的不同分为两大类
- 存在强依赖关系的(Boosting)
- 不存在强的依赖关系的(随机森林)
2.2 算法原理
2.2.1 核心思想
需要解决的问题:
①在每一轮训练中,如何对训练样本的权值分布进行调整?
②如何确定各个基学习器“加权”结合的权重?
AdaBoost 的解决思路:
通过 分类器权重公式 来确定 各个基学习器的权重;通过 样本分布更新公式 来确定 各轮训练中的样本分布。
①在确定各个基学习器的权重时:
加大“分类误差率”小的弱分类器的权值,使其在表决中发挥较大作用;减小“分类误差率”大的弱分类器的权值,使其在表决中发挥较小作用。(直观而言:比较“菜”的学习器,权重应该小一些;比较“好”的学习器,权重应该大一些。)
②在确定各轮训练中的样本分布时:
提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。(例如,假设我们在第 K 次得到的弱学习器,在某个样本上的分类结果出现错误,那么我们自然希望:第 K+1 次产生的弱学习器应该更加关注这个样本,使其尽可能地划分正确。)
2.2.2 分类情景介绍
下面我们从公式的角度推导 AdaBoost 的算法原理。为了防止公式混乱,我们给公式添加与《机器学习(周志华)》相同的编号;没有编号的公式是我们的推导过程。
AdaBoost 算法的训练目标是:基于“加性模型”,最小化指数损失函数。
注意,我们在这里讨论的是二分类问题,其中训练样本集的
y
i
∈
{
−
1
,
+
1
}
y_i\in\{-1,+1\}
yi∈{−1,+1} ,
f
f
f 是真实函数。对于样本
x
x
x 来说,真实值
f
(
x
)
∈
{
−
1
,
+
1
}
f(x)\in\{-1,+1\}
f(x)∈{−1,+1},每个基学习器的预测值
h
i
(
x
)
∈
{
−
1
,
+
1
}
h_i(x)\in\{-1,+1\}
hi(x)∈{−1,+1},假定基分类器的错误率为
ϵ
\epsilon
ϵ,即对每个基分类器
h
i
h_i
hi 有:
P
(
h
i
(
x
)
≠
f
(
x
)
)
=
ϵ
(8.1)
P(h_i(x)\neq f(x))=\epsilon \tag{8.1}
P(hi(x)=f(x))=ϵ(8.1)
假设集成通过简单投票法结合
T
T
T 个基分类器,若有超过半数的基分类器正确,则集成分类就正确;集成分类的结果
F
简单投票
(
x
)
F_{简单投票}(x)
F简单投票(x) 为:
F
简单投票
(
x
)
=
s
i
g
n
(
∑
i
=
1
T
h
i
(
x
)
)
(8.2)
F_{简单投票}(x)=\mathrm{sign}\Big(\sum\limits_{i=1}^{T}h_i(x)\Big) \tag{8.2}
F简单投票(x)=sign(i=1∑Thi(x))(8.2)
“加性模型”(additive model),即基学习器的线性组合
H
(
x
)
H(x)
H(x):
H
(
x
)
=
∑
t
=
1
T
α
t
h
t
(
x
)
(8.4)
H(x)=\sum\limits_{t=1}^T\alpha_{t}h_{t}(x) \tag{8.4}
H(x)=t=1∑Tαtht(x)(8.4)
其中,
α
t
\alpha_t
αt 表示基分类器的权重,因为 AdaBoost 并不使用简单投票法,而是“加权表决法”,即让基学习器具有不同的权值:
F
(
x
)
=
s
i
g
n
(
H
(
x
)
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
h
t
(
x
)
)
F(x)=\mathrm{sign}(H(x))=\mathrm{sign}\Big(\sum\limits_{t=1}^T\alpha_{t}h_{t}(x)\Big)
F(x)=sign(H(x))=sign(t=1∑Tαtht(x))
**“指数损失函数”**的定义为:
l
e
x
p
(
H
∣
D
)
=
E
x
∼
D
[
e
−
f
(
x
)
H
(
x
)
]
(8.5)
\mathscr{l}_{exp}(H\mid D)=\mathbb{E}_{x\sim D}[e^{-f(x)H(x)}]\tag{8.5}
lexp(H∣D)=Ex∼D[e−f(x)H(x)](8.5)
其中,
x
∼
D
x\sim D
x∼D 表示概率分布
D
(
x
)
D(x)
D(x),
E
\mathbb{E}
E 表示期望。
例如,下面的表格就列出了一个分布 D ( x ) D(x) D(x):
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D D D | 0.1 | 0.05 | 0.05 | 0.2 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
对于这里出现的“指数损失函数”,我们直观地理解一下使用它的合理性,随后在 2.2.2 节中说明使用它的正确性。
先考虑指数损失函数 e − f ( x ) H ( x ) e^{-f(x)H(x)} e−f(x)H(x) 的含义: f f f 为真实函数,对于样本 x x x 来说, f ( x ) ∈ { − 1 , + 1 } f(x)\in\{-1,+1\} f(x)∈{−1,+1},只能取 -1 和 +1,而 H ( x ) H(x) H(x) 是一个实数,表示集成学习器的预测结果。当 H ( x ) H(x) H(x) 的符号与 f ( x ) f(x) f(x) 一致时, f ( x ) H ( x ) > 0 f(x)H(x)\gt 0 f(x)H(x)>0,因此, e − f ( x ) H ( x ) = e − ∣ H ( x ) ∣ < 1 e^{-f(x)H(x)}=e^{-|H(x)|}\lt 1 e−f(x)H(x)=e−∣H(x)∣<1,且 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 越大指数损失函数 e − f ( x ) H ( x ) e^{-f(x)H(x)} e−f(x)H(x) 越小,(这很合理:此时 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 越大意味着分类器本身对预测结果的信心越大,损失应该越小;若 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 在零附近,虽然预测正确,但表示分类器本身对预测结果的信心很小,损失应该越大);当 H ( x ) H(x) H(x) 的符号与 f ( x ) f(x) f(x) 不一致时, f ( x ) H ( x ) < 0 f(x)H(x)\lt 0 f(x)H(x)<0,因此, e − f ( x ) H ( x ) = e ∣ H ( x ) ∣ > 1 e^{-f(x)H(x)}=e^{|H(x)|}\gt 1 e−f(x)H(x)=e∣H(x)∣>1,且 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 越大,损失函数越大,(这很合理:因为此时 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 越大意味着分类器本身对预测结果的信心越大,但预测结果是错的,因此损失应该越大;若 ∣ H ( x ) ∣ |H(x)| ∣H(x)∣ 在零附近,虽然预测错误,但表示分类器本身对预测结果的信心很小,虽然错了,损失应该很小)。
同时,我们不难得到两个工具公式(注意
f
(
x
)
f(x)
f(x) 是真实函数,也就是上表中
x
x
x 所对应的
y
y
y 的值):
E
x
∼
D
[
f
(
x
)
]
=
∑
x
∈
D
D
(
x
)
f
(
x
)
(工具公式1)
\mathbb{E}_{x\sim D}[f(x)]=\sum\limits_{x\in D}D(x)f(x)\tag{工具公式1}
Ex∼D[f(x)]=x∈D∑D(x)f(x)(工具公式1)
∑ i = 1 ∣ D ∣ D ( x i ) I ( f ( x i ) = 1 ) = P ( f ( x i ) = 1 ∣ x i ) (工具公式2) \sum\limits_{i=1}^{|D|}D(x_i)\mathbb{I}(f(x_i)=1)=P(f(x_i)=1\mid x_i)\tag{工具公式2} i=1∑∣D∣D(xi)I(f(xi)=1)=P(f(xi)=1∣xi)(工具公式2)
这里我们引入“指示函数”的概念, I ( ⋅ ) = { 1 ; ⋅ 为真 0 ; ⋅ 为假 \mathbb{I}(\cdot)=\begin{cases}{1};\quad \cdot\ 为真\\{0};\quad \cdot\ 为假\end{cases} I(⋅)={1;⋅ 为真0;⋅ 为假
2.2.3 使用“指数损失函数”的正确性
下面,我们从数学角度说明使用“指数损失函数”的正确性。
若集成学习器
H
(
x
)
H(x)
H(x) 能令指数损失函数最小化,则考虑式(8.5)对
H
(
x
)
H(x)
H(x) 的偏导:
∂
l
e
x
p
(
H
∣
D
)
∂
H
(
x
)
=
−
e
−
H
(
x
)
P
(
f
(
x
)
=
1
∣
x
)
+
e
H
(
x
)
P
(
f
(
x
)
=
−
1
∣
x
)
(8.6)
\dfrac{\partial\mathscr{l}_{exp}(H\mid D)}{\partial H(x)}=-e^{-H(x)}P(f(x)=1\mid x)+e^{H(x)}P(f(x)=-1\mid x)\tag{8.6}
∂H(x)∂lexp(H∣D)=−e−H(x)P(f(x)=1∣x)+eH(x)P(f(x)=−1∣x)(8.6)
式(8.6)的具体推导过程为:
将工具公式1代入式(8.5):
l e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] = ∑ x ∈ D D ( x ) e − f ( x ) H ( x ) \mathscr{l}_{exp}(H\mid D)=\mathbb{E}_{x\sim D}[e^{-f(x)H(x)}]=\sum\limits_{x\in D}D(x)e^{-f(x)H(x)} lexp(H∣D)=Ex∼D[e−f(x)H(x)]=x∈D∑D(x)e−f(x)H(x)
由于工具公式2:
∑ i = 1 ∣ D ∣ D ( x i ) I ( f ( x i ) = 1 ) = P ( f ( x i ) = 1 ∣ x i ) \sum\limits_{i=1}^{|D|}D(x_i)\mathbb{I}(f(x_i)=1)=P(f(x_i)=1\mid x_i) i=1∑∣D∣D(xi)I(f(xi)=1)=P(f(xi)=1∣xi)
又注意到 f ( x i ) ∈ { − 1 , + 1 } f(x_i)\in\{-1,+1\} f(xi)∈{−1,+1},所以:
∂ l e x p ( H ∣ D ) ∂ H ( x ) = ∑ i = 1 ∣ D ∣ D ( x i ) ( − e − H ( x i ) I ( f ( x i ) = 1 ) + e H ( x i ) I ( f ( x i ) = − 1 ) ) 分类讨论 ( 两种情形 ) = − e − H ( x i ) P ( f ( x i ) = 1 ∣ x i ) + e H ( x i ) P ( f ( x i ) = − 1 ∣ x i ) 由工具公式 2 得到 \begin{aligned} \dfrac{\partial \mathscr{l}_{exp}(H\mid D)}{\partial H(x)}&=\sum\limits_{i=1}^{|D|}D(x_i)\Big(-e^{-H(x_i)}\mathbb{I}(f(x_i)=1)+e^{H(x_i)}\mathbb{I}(f(x_i)=-1)\Big)&分类讨论(两种情形)\\ &=-e^{-H(x_i)}P(f(x_i)=1\mid x_i)+e^{H(x_i)}P(f(x_i)=-1\mid x_i)&由工具公式2得到 \end{aligned} ∂H(x)∂lexp(H∣D)=i=1∑∣D∣D(xi)(−e−H(xi)I(f(xi)=1)+eH(xi)I(f(xi)=−1))=−e−H(xi)P(f(xi)=1∣xi)+eH(xi)P(f(xi)=−1∣xi)分类讨论(两种情形)由工具公式2得到
式(8.6)的具体推导过程至此结束。
令式(8.6)为零,进行求解:
−
e
−
H
(
x
)
P
(
f
(
x
)
=
1
∣
x
)
+
e
H
(
x
)
P
(
f
(
x
)
=
−
1
∣
x
)
=
0
-e^{-H(x)}P(f(x)=1\mid x)+e^{H(x)}P(f(x)=-1\mid x)=0
−e−H(x)P(f(x)=1∣x)+eH(x)P(f(x)=−1∣x)=0
H ( x ) + l n ( P ( f ( x ) = − 1 ∣ x ) ) = − H ( x ) + l n ( P ( f ( x ) = 1 ∣ x ) ) H(x)+\mathrm{ln}(P(f(x)=-1\mid x))=-H(x)+\mathrm{ln}(P(f(x)=1\mid x)) H(x)+ln(P(f(x)=−1∣x))=−H(x)+ln(P(f(x)=1∣x))
可解得:
H
(
x
)
=
1
2
l
n
P
(
f
(
x
)
=
1
∣
x
)
P
(
f
(
x
)
=
−
1
∣
x
)
(8.7)
H(x)=\dfrac{1}{2}\mathrm{ln}\dfrac{P(f(x)=1\mid x)}{P(f(x)=-1\mid x)}\tag{8.7}
H(x)=21lnP(f(x)=−1∣x)P(f(x)=1∣x)(8.7)
因此,有:
s
i
g
n
(
H
(
x
)
)
=
s
i
g
n
(
1
2
l
n
P
(
f
(
x
)
=
1
∣
x
)
P
(
f
(
x
)
=
−
1
∣
x
)
)
=
{
1
,
P
(
f
(
x
)
=
1
∣
x
)
>
P
(
f
(
x
)
=
−
1
∣
x
)
−
1
,
P
(
f
(
x
)
=
1
∣
x
)
<
P
(
f
(
x
)
=
−
1
∣
x
)
这三行表达的是一个意思
=
a
r
g
m
a
x
y
∈
{
−
1
,
1
}
P
(
f
(
x
)
=
y
∣
x
)
(8.8)
\begin{aligned} \mathrm{sign}(H(x))&=\mathrm{sign}\Big(\dfrac{1}{2}\mathrm{ln}\dfrac{P(f(x)=1\mid x)}{P(f(x)=-1\mid x)}\Big)\\ &=\begin{cases}{1},&{P(f(x)=1\mid x)\gt P(f(x)=-1\mid x)}\\{-1},&{P(f(x)=1\mid x)\lt P(f(x)=-1\mid x)}\end{cases}&这三行表达的是一个意思\\ &=\mathop {\mathrm{argmax}}\limits_{y\in\{-1,1\}}P(f(x)=y\mid x) \end{aligned} \tag{8.8}
sign(H(x))=sign(21lnP(f(x)=−1∣x)P(f(x)=1∣x))={1,−1,P(f(x)=1∣x)>P(f(x)=−1∣x)P(f(x)=1∣x)<P(f(x)=−1∣x)=y∈{−1,1}argmaxP(f(x)=y∣x)这三行表达的是一个意思(8.8)
这意味着
s
i
g
n
(
H
(
x
)
)
\mathrm{sign}(H(x))
sign(H(x)) 达到了贝叶斯最优错误率(即对于每个样本
x
x
x 都选择后验概率最大的类别)。换言之,若指数损失函数最小化,则分类错误率也将最小化;这说明指数损失函数是分类任务原本 0/1 损失函数的一致的(consistent)替代损失函数。由于这个替代损失函数有更好的数学性质,例如它是连续可微函数,因此我们用它替代 0/1 损失函数作为优化目标。
至此,我们知道了使用“指数损失函数”的原因及其正确性。
2.2.4 分类器权重公式
下面,我们将从指数损失函数入手,推导 AdaBoost 算法的分类器权重公式。
在 AdaBoost 算法中,第一个基分类器 h 1 h_1 h1 是通过直接将基学习器算法用于初始数据分布而得;此后迭代地生成 h t h_t ht 和 α t \alpha_{t} αt,当基分类器 h t h_t ht 基于分布 D t D_t Dt 产生后,该基分类器的权重 α t \alpha_{t} αt 应使得 α t h t \alpha_{t}h_{t} αtht 最小化指数损失函数。
此时的指数损失函数:
l
e
x
p
(
α
t
h
t
∣
D
t
)
=
E
x
∼
D
t
[
e
−
f
(
x
)
α
t
h
t
(
x
)
]
由定义式
(
8.5
)
得到
=
E
x
∼
D
t
[
e
−
α
t
I
(
f
(
x
)
=
h
t
(
x
)
)
+
e
α
t
I
(
f
(
x
)
≠
h
t
(
x
)
)
]
分类讨论
(
两种情形
)
=
∑
x
∈
D
t
D
t
(
x
)
[
e
−
α
t
I
(
f
(
x
)
=
h
t
(
x
)
)
+
e
α
t
I
(
f
(
x
)
≠
h
t
(
x
)
)
]
由工具公式
1
得到
=
e
−
α
t
P
x
∼
D
t
(
f
(
x
)
=
h
t
(
x
)
)
+
e
α
t
P
x
∼
D
t
(
f
(
x
)
≠
h
t
(
x
)
)
由工具公式
2
得到
=
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
错误率的定义
(8.9)
\begin{aligned} \mathscr{l}_{exp}(\alpha_{t}h_{t}\mid D_{t})&=\mathbb{E}_{x\sim D_{t}}[e^{-f(x)\alpha_{t}h_t(x)}]&由定义式(8.5)得到\\ &=\mathbb{E}_{x\sim D_t}[e^{-\alpha_{t}}\mathbb{I}(f(x)=h_t(x))+e^{\alpha_t}\mathbb{I}(f(x)\neq h_t(x))]&分类讨论(两种情形)\\ &=\sum\limits_{x\in D_{t}}D_{t}(x)[e^{-\alpha_{t}}\mathbb{I}(f(x)=h_t(x))+e^{\alpha_t}\mathbb{I}(f(x)\neq h_t(x))]&由工具公式1得到\\ &=e^{-\alpha_{t}}P_{x\sim D_t}(f(x)=h_t(x))+e^{\alpha_{t}}P_{x\sim D_t}(f(x)\neq h_t(x))&由工具公式2得到\\ &=e^{-\alpha_t}(1-\epsilon_{t})+e^{\alpha_t}\epsilon_{t}&错误率的定义 \end{aligned}\tag{8.9}
lexp(αtht∣Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtI(f(x)=ht(x))+eαtI(f(x)=ht(x))]=x∈Dt∑Dt(x)[e−αtI(f(x)=ht(x))+eαtI(f(x)=ht(x))]=e−αtPx∼Dt(f(x)=ht(x))+eαtPx∼Dt(f(x)=ht(x))=e−αt(1−ϵt)+eαtϵt由定义式(8.5)得到分类讨论(两种情形)由工具公式1得到由工具公式2得到错误率的定义(8.9)
其中,错误率
ϵ
t
=
P
x
∼
D
t
(
h
t
(
x
)
≠
f
(
x
)
)
\epsilon_{t}=P_{x\sim D_t}(h_t(x)\neq f(x))
ϵt=Px∼Dt(ht(x)=f(x))。
考虑指数损失函数的导数:
∂
l
e
x
p
(
α
t
h
t
∣
D
t
)
∂
α
t
=
−
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
由式
(
8.9
)
对
α
t
求偏导
(8.10)
\begin{aligned} &\dfrac{\partial\mathscr{l}_{exp}(\alpha_{t}h_{t}\mid D_{t})}{\partial\alpha_t}=-e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t}\epsilon_{t} &由式(8.9)对\alpha_{t}求偏导 \end{aligned}\tag{8.10}
∂αt∂lexp(αtht∣Dt)=−e−αt(1−ϵt)+eαtϵt由式(8.9)对αt求偏导(8.10)
令式(8.10)为零,进行求解:
−
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
=
0
令式
(
8.10
)
为零
α
t
+
l
n
ϵ
t
=
−
α
t
+
l
n
(
1
−
ϵ
t
)
移项后取对数
\begin{aligned} &-e^{-\alpha_{t}}(1-\epsilon_{t})+e^{\alpha_{t}}\epsilon_{t}=0&令式(8.10)为零\\ \\ &\alpha_{t}+\mathrm{ln}\epsilon_{t}=-\alpha_{t}+\mathrm{ln}(1-\epsilon_{t})&移项后取对数 \end{aligned}
−e−αt(1−ϵt)+eαtϵt=0αt+lnϵt=−αt+ln(1−ϵt)令式(8.10)为零移项后取对数
可解得:
α
t
=
1
2
l
n
(
1
−
ϵ
t
ϵ
t
)
(8.11)
\alpha_{t}=\dfrac{1}{2}\mathrm{ln}\Big(\dfrac{1-\epsilon_{t}}{\epsilon_{t}}\Big)\tag{8.11}
αt=21ln(ϵt1−ϵt)(8.11)
至此,我们求得了 AdaBoost 算法的分类器权重公式。
2.2.5 样本分布更新公式
下面,我们推导 AdaBoost 算法的样本分布更新公式。
AdaBoost 算法在获得 H t − 1 H_{t-1} Ht−1 之后样本分布将进行调整,使下一轮的基学习器 h t h_t ht 能纠正 H t − 1 H_{t-1} Ht−1 的一些错误。
理想的 h t h_t ht 能纠正 H t − 1 H_{t-1} Ht−1 的全部错误,又因为 H ( x ) = H t − 1 ( x ) + α t h t ( x ) H(x)=H_{t-1}(x)+\alpha_{t}h_t(x) H(x)=Ht−1(x)+αtht(x)。
因此,我们希望最小化
l
e
x
p
(
H
t
−
1
+
α
t
h
t
∣
D
)
\mathscr{l}_{exp}(H_{t-1}+\alpha_{t}h_{t}\mid D)
lexp(Ht−1+αtht∣D),可以简化为,最小化:
l
e
x
p
(
H
t
−
1
+
h
t
∣
D
)
=
E
x
∼
D
[
e
−
f
(
x
)
(
H
t
−
1
(
x
)
+
h
t
(
x
)
)
]
=
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
e
−
f
(
x
)
h
t
(
x
)
]
(8.12)
\begin{aligned} \mathscr{l}_{exp}(H_{t-1}+h_t\mid D)&=\mathbb{E}_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}]\\ &=\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}] \end{aligned}\tag{8.12}
lexp(Ht−1+ht∣D)=Ex∼D[e−f(x)(Ht−1(x)+ht(x))]=Ex∼D[e−f(x)Ht−1(x)e−f(x)ht(x)](8.12)
对式(8.12)使用
e
−
f
(
x
)
h
t
(
x
)
e^{-f(x)h_t(x)}
e−f(x)ht(x) 的泰勒展式近似:
使用到的泰勒展开式: e x ∼ 1 + x + 1 2 x 2 + o ( x 2 ) e^x\sim1+x+\dfrac{1}{2}x^{2}+o(x^2) ex∼1+x+21x2+o(x2)
可得:
l
e
x
p
(
H
t
−
1
+
h
t
∣
D
)
≃
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
1
−
f
(
x
)
h
t
(
x
)
+
f
2
(
x
)
h
t
2
(
x
)
2
)
]
\mathscr{l}_{exp}(H_{t-1}+h_t\mid D)\simeq\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h_t(x)+\dfrac{f^2(x)h_t^2(x)}{2}\Big)\Big]
lexp(Ht−1+ht∣D)≃Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+2f2(x)ht2(x))]
又因为
f
2
(
x
)
=
h
t
2
(
x
)
=
1
f^2(x)=h_t^2(x)=1
f2(x)=ht2(x)=1,可得:
l
e
x
p
(
H
t
−
1
+
h
t
∣
D
)
=
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
1
−
f
(
x
)
h
t
(
x
)
+
1
2
)
]
(8.13)
\mathscr{l}_{exp}(H_{t-1}+h_t\mid D)=\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h_t(x)+\dfrac{1}{2}\Big)\Big]\tag{8.13}
lexp(Ht−1+ht∣D)=Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+21)](8.13)
因为理想的基学习器
h
t
(
x
)
h_t(x)
ht(x) 要使得指数损失函数最小化,所以:
h
t
(
x
)
=
a
r
g
m
i
n
h
l
e
x
p
(
H
t
−
1
+
h
∣
D
)
=
a
r
g
m
i
n
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
1
−
f
(
x
)
h
(
x
)
+
1
2
)
]
由式
(
8.13
)
代入得到
=
a
r
g
m
i
n
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
−
f
(
x
)
h
(
x
)
)
]
常数
1
+
1
2
不影响结果
=
a
r
g
m
a
x
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
f
(
x
)
h
(
x
)
]
去负号
a
r
g
m
i
n
变
a
r
g
m
a
x
=
a
r
g
m
a
x
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
f
(
x
)
h
(
x
)
]
新加入的常数不影响结果
(8.14)
\begin{aligned} h_t(x)&=\mathop {\mathrm{argmin}}\limits_{h}\mathscr{l}_{exp}(H_{t-1}+h\mid D)&\quad\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(1-f(x)h(x)+\dfrac{1}{2}\Big)\Big]&由式(8.13)代入得到\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}\Big(-f(x)h(x)\Big)\Big]&常数1+\dfrac{1}{2}不影响结果\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[e^{-f(x)H_{t-1}(x)}f(x)h(x)\Big]&去负号\mathrm{argmin}变\mathrm{argmax}\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[\dfrac{e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)\Big]&新加入的常数不影响结果 \end{aligned}\tag{8.14}
ht(x)=hargminlexp(Ht−1+h∣D)=hargminEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+21)]=hargminEx∼D[e−f(x)Ht−1(x)(−f(x)h(x))]=hargmaxEx∼D[e−f(x)Ht−1(x)f(x)h(x)]=hargmaxEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]由式(8.13)代入得到常数1+21不影响结果去负号argmin变argmax新加入的常数不影响结果(8.14)
注意,式(8.14)中的
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]
Ex∼D[e−f(x)Ht−1(x)] 是一个常数,之所以添加此常数,是为了构造出下面的
D
t
D_t
Dt 分布。
令
D
t
D_t
Dt 表示一个分布:
D
t
(
x
)
=
D
(
x
)
e
−
f
(
x
)
H
t
−
1
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
(8.15)
D_t(x)=\dfrac{D(x)e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}\tag{8.15}
Dt(x)=Ex∼D[e−f(x)Ht−1(x)]D(x)e−f(x)Ht−1(x)(8.15)
根据数学期望的定义,再将式(8.15)代入式(8.14),则理想的基学习器
h
t
(
x
)
h_t(x)
ht(x):
h
t
(
x
)
=
a
r
g
m
a
x
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
f
(
x
)
h
(
x
)
]
式
(
8.14
)
=
a
r
g
m
a
x
h
∑
i
=
1
∣
D
∣
D
(
x
i
)
[
e
−
f
(
x
i
)
H
t
−
1
(
x
i
)
f
(
x
i
)
h
(
x
i
)
E
x
∼
D
[
e
−
f
(
x
i
)
H
t
−
1
(
x
i
)
]
]
数学期望的定义
=
a
r
g
m
a
x
h
∑
i
=
1
∣
D
∣
D
t
(
x
i
)
f
(
x
i
)
h
(
x
i
)
由式
(
8.15
)
代入得到
=
a
r
g
m
a
x
h
E
x
∼
D
t
[
f
(
x
)
h
(
x
)
]
(8.16)
\begin{aligned} h_t(x)&=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D}\Big[\dfrac{e^{-f(x)H_{t-1}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)\Big]&式(8.14)\\ &=\mathop {\mathrm{argmax}}\limits_{h}\sum\limits_{i=1}^{|D|}D(x_i)\Big[\dfrac{e^{-f(x_i)H_{t-1}(x_i)}f(x_i)h(x_i)}{\mathbb{E}_{x\sim D}[e^{-f(x_i)H_{t-1}(x_i)}]}\Big]&数学期望的定义\\ &=\mathop {\mathrm{argmax}}\limits_{h}\sum_{i=1}^{|D|}D_t(x_i)f(x_i)h(x_i)&由式(8.15)代入得到\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[f(x)h(x)] \end{aligned}\tag{8.16}
ht(x)=hargmaxEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]=hargmaxi=1∑∣D∣D(xi)[Ex∼D[e−f(xi)Ht−1(xi)]e−f(xi)Ht−1(xi)f(xi)h(xi)]=hargmaxi=1∑∣D∣Dt(xi)f(xi)h(xi)=hargmaxEx∼Dt[f(x)h(x)]式(8.14)数学期望的定义由式(8.15)代入得到(8.16)
由于
f
(
x
)
,
h
(
x
)
∈
{
−
1
,
+
1
}
f(x),h(x)\in\{-1,+1\}
f(x),h(x)∈{−1,+1},有:
f
(
x
)
h
(
x
)
=
1
−
2
I
(
f
(
x
)
≠
h
(
x
)
)
(8.17)
f(x)h(x)=1-2\mathbb{I}(f(x)\neq h(x))\tag{8.17}
f(x)h(x)=1−2I(f(x)=h(x))(8.17)
则理想的基学习器
h
t
(
x
)
h_t(x)
ht(x):
h
t
(
x
)
=
a
r
g
m
a
x
h
E
x
∼
D
t
[
f
(
x
)
h
(
x
)
]
式
(
8.16
)
=
a
r
g
m
a
x
h
E
x
∼
D
t
[
1
−
2
I
(
f
(
x
)
≠
h
(
x
)
)
]
由式
(
8.17
)
代入得到
=
a
r
g
m
i
n
h
E
x
∼
D
t
[
I
(
f
(
x
)
≠
h
(
x
)
)
]
去掉常数和负号
(8.18)
\begin{aligned} h_t(x)&=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[f(x)h(x)]&式(8.16)\\ &=\mathop {\mathrm{argmax}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[1-2\mathbb{I}(f(x)\neq h(x))]&由式(8.17)代入得到\\ &=\mathop {\mathrm{argmin}}\limits_{h}\mathbb{E}_{x\sim D_{t}}[\mathbb{I}(f(x)\neq h(x))]&去掉常数和负号 \end{aligned}\tag{8.18}
ht(x)=hargmaxEx∼Dt[f(x)h(x)]=hargmaxEx∼Dt[1−2I(f(x)=h(x))]=hargminEx∼Dt[I(f(x)=h(x))]式(8.16)由式(8.17)代入得到去掉常数和负号(8.18)
由此可见,理想的
h
t
(
x
)
h_t(x)
ht(x) 将在分布
D
t
D_t
Dt 下最小化分类误差。
因此,弱分类器将基于分布 D t D_t Dt 进行训练,且针对 D t D_t Dt 的分类误差应小于 0.5,这在一定程度上类似“残差逼近”的思想。
考虑到
D
t
D_t
Dt 与
D
t
+
1
D_{t+1}
Dt+1 的关系,有:
D
t
+
1
(
x
)
=
D
(
x
)
e
−
f
(
x
)
H
t
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
(
x
)
]
由式
(
8.15
)
可得
=
D
(
x
)
e
−
f
(
x
)
H
t
−
1
(
x
)
e
−
f
(
x
)
α
t
h
t
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
(
x
)
]
将
H
t
(
x
)
展开得到
=
D
t
(
x
)
e
−
f
(
x
)
α
t
h
t
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
E
x
∼
D
[
e
−
f
(
x
)
H
t
(
x
)
]
将式
(
8.15
)
代入,构造
D
t
(
x
)
(8.19)
\begin{aligned} D_{t+1}(x)&=\dfrac{D(x)e^{-f(x)H_{t}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&由式(8.15)可得\\ &=\dfrac{D(x)e^{-f(x)H_{t-1}(x)}e^{-f(x)\alpha_{t}h_{t}(x)}}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&将H_t(x)展开得到\\ &=D_t(x)e^{-f(x)\alpha_{t}h_{t}(x)}\dfrac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]}&将式(8.15)代入,构造D_t(x) \end{aligned}\tag{8.19}
Dt+1(x)=Ex∼D[e−f(x)Ht(x)]D(x)e−f(x)Ht(x)=Ex∼D[e−f(x)Ht(x)]D(x)e−f(x)Ht−1(x)e−f(x)αtht(x)=Dt(x)e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]Ex∼D[e−f(x)Ht−1(x)]由式(8.15)可得将Ht(x)展开得到将式(8.15)代入,构造Dt(x)(8.19)
至此,我们求得了 AdaBoost 算法的样本分布更新公式。
于是,由式(8.11)和(8.19)可见,我们从基于加性模型最小化指数损失函数的角度,推导出了 AdaBoost 算法。
2.3 算法流程
2.3.1 算法描述
AdaBoost 算法流程如下:
输入
:
训练集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
m
,
y
m
)
}
;
基学习算法
L
;
训练轮数
T
.
过程
:
1
:
D
1
(
x
)
=
1
m
.
2
:
f
o
r
t
=
1
,
2
,
…
,
T
d
o
3
:
h
t
=
L
(
D
,
D
t
)
;
4
:
ϵ
t
=
P
x
∼
D
t
(
h
t
(
x
)
≠
f
(
x
)
)
;
5
:
i
f
ϵ
>
0.5
t
h
e
n
b
r
e
a
k
6
:
α
t
=
1
2
l
n
(
1
−
ϵ
t
ϵ
t
)
;
7
:
D
t
+
1
(
x
)
=
D
t
(
x
)
Z
t
×
{
e
−
α
t
,
i
f
h
t
(
x
)
=
f
(
x
)
e
α
t
,
i
f
h
t
(
x
)
≠
f
(
x
)
=
D
t
(
x
)
e
−
α
t
f
(
x
)
h
t
(
x
)
Z
t
8
:
e
n
d
f
o
r
输出
:
F
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
h
t
(
x
)
)
\begin{aligned} 输入:\ &训练集\ D=\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\};\\ &基学习算法\ \mathfrak{L};\\ &训练轮数\ T.\\ 过程:\ &\\ &1:D_1(x)=\dfrac{1}{m}.\\ &2:\mathbf{for}\ t=1,2,…,T\ \mathbf{do}\\ &3:\qquad h_t=\mathfrak{L}(D,D_t);\\ &4:\qquad \epsilon_t=P_{x\sim D_t}(h_t(x)\neq f(x));\\ &5:\qquad \mathbf{if}\ \epsilon\gt 0.5\ \mathbf{then\ break}\\ &6:\qquad \alpha_{t}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{t}}{\epsilon_t}\Big);\\ &7:\qquad D_{t+1}(x)=\dfrac{D_t(x)}{Z_t}\times\begin{cases}{e^{-\alpha_{t}}}, &\mathrm{if}\ h_t(x)=f(x)\\{e^{\alpha_{t}}},&\mathrm{if}\ h_t(x)\neq f(x)\end{cases}=\dfrac{D_t(x)e^{-\alpha_{t}f(x)h_t(x)}}{Z_t}\\ &8:\mathbf{end\ for}\\ 输出:\ &F(x)=\mathrm{sign}\Big(\sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x)\Big) \end{aligned}
输入: 过程: 输出: 训练集 D={(x1,y1),(x2,y2),…,(xm,ym)};基学习算法 L;训练轮数 T.1:D1(x)=m1.2:for t=1,2,…,T do3:ht=L(D,Dt);4:ϵt=Px∼Dt(ht(x)=f(x));5:if ϵ>0.5 then break6:αt=21ln(ϵt1−ϵt);7:Dt+1(x)=ZtDt(x)×{e−αt,eαt,if ht(x)=f(x)if ht(x)=f(x)=ZtDt(x)e−αtf(x)ht(x)8:end forF(x)=sign(t=1∑Tαtht(x))
其中,
Z
t
Z_t
Zt 是规范化因子,它使得
D
t
+
1
D_{t+1}
Dt+1 是一个分布:
Z
t
=
∑
i
=
1
N
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
Zt=i=1∑Nwtie−αtf(xi)ht(xi)
我们知道,
D
t
+
1
D_{t+1}
Dt+1 表示的是样本权值的分布;因此,要想使得
D
t
+
1
D_{t+1}
Dt+1 是一个分布,应当使得
D
t
+
1
D_{t+1}
Dt+1 中的各样本权值之和为 1。为了做到这点,我们让
D
t
+
1
D_{t+1}
Dt+1 中的每一个规范化前的样本权值
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
wtie−αtf(xi)ht(xi) 都除以样本权值的总和
∑
i
=
1
N
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
i=1∑Nwtie−αtf(xi)ht(xi)(这个总和也就是规范化因子
Z
t
Z_t
Zt),从而让我们得到的各样本权值之和为 1。(直观来说,规范化后的样本权值,即为规范化前的样本权值 占 总样本权值的比例,这个比例的总和当然为 1。)
所以我们也能理解:在式(8.19)中,由于项 E x ∼ D [ e − f ( x ) H t − 1 ( x ) ] E x ∼ D [ e − f ( x ) H t ( x ) ] \dfrac{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{\mathbb{E}_{x\sim D}[e^{-f(x)H_{t}(x)}]} Ex∼D[e−f(x)Ht(x)]Ex∼D[e−f(x)Ht−1(x)] 是一个常数,所有样本权值同时乘以常数,不会改变规范化前的样本权值 占 总样本权值的比例;因此无论是否有它,规范化之后的结果都是一样的,所以我们不去计算这个常数的值。
2.3.2 算法各步骤含义
AdaBoost 算法各步骤的含义如下(一一对应):
输入
:
训练集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
m
,
y
m
)
}
;
基学习算法
L
;
训练轮数
T
.
过程
:
1
:
初始化样本权值分布
.
2
:
循环进行
T
轮训练
3
:
基于分布
D
t
从数据集
D
中训练出分类器
h
t
;
4
:
估计
h
t
的误差
;
5
:
检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止
6
:
确定分类器
h
t
的权重
;
7
:
更新样本分布,其中
Z
t
是规范化因子,以确保
D
t
+
1
是一个分布
8
:
结束循环
输出
:
分类结果
\begin{aligned} 输入:\ &训练集\ D=\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\};\\ &基学习算法\ \mathfrak{L};\\ &训练轮数\ T.\\ 过程:\ &\\ &1:初始化样本权值分布.\\ &2:循环进行\ T\ 轮训练\\ &3:\qquad 基于分布\ D_t\ 从数据集\ D\ 中训练出分类器\ h_t;\\ &4:\qquad 估计\ h_t\ 的误差;\\ &5:\qquad 检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止\\ &6:\qquad 确定分类器\ h_t\ 的权重;\\ &7:\qquad 更新样本分布,其中\ Z_t\ 是规范化因子,以确保\ D_{t+1}\ 是一个分布\\ &8:结束循环\\ 输出:\ &分类结果 \end{aligned}
输入: 过程: 输出: 训练集 D={(x1,y1),(x2,y2),…,(xm,ym)};基学习算法 L;训练轮数 T.1:初始化样本权值分布.2:循环进行 T 轮训练3:基于分布 Dt 从数据集 D 中训练出分类器 ht;4:估计 ht 的误差;5:检查当前基分类器是否比随机猜测好,如果条件不满足,当前基学习器即被抛弃,学习过程停止6:确定分类器 ht 的权重;7:更新样本分布,其中 Zt 是规范化因子,以确保 Dt+1 是一个分布8:结束循环分类结果
2.4 具体算例
2.4.1 给定数据集与基学习算法
假设给出如下表所示的训练数据。假设弱分类器由 x < v x\lt v x<v 或 x > v x\gt v x>v 产生,其阈值 v v v 使该分类器在训练数据集上的分类误差率最低。试用 AdaBoost 算法学习一个强分类器。
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
2.4.2 算法步骤1-2
解:
我们用 t t t 表示当前训练的轮数, i i i 表示实例的序号, m m m 表示训练集实例的总数量。
在此例中, t = 1 , 2 , … , T t=1,2,…,T t=1,2,…,T; i = 1 , 2 , … , 10 i=1,2,…,10 i=1,2,…,10; m = 10 m=10 m=10。
1:初始化样本权值分布
D
1
(
x
)
D_1(x)
D1(x):
D
1
(
x
)
=
(
w
11
,
w
12
,
…
,
w
110
)
=
1
m
D_1(x)=(w_{11},w_{12},…,w_{110})=\dfrac{1}{m}
D1(x)=(w11,w12,…,w110)=m1
w 1 i = 0.1 , i = 1 , 2 , … , 10 w_{1i}=0.1,\quad i=1,2,…,10 w1i=0.1,i=1,2,…,10
这里, w t i w_{ti} wti 表示第 t t t 轮中第 i i i 个实例的权值,并且 ∑ i = 1 N w t i = 1 \sum\limits_{i=1}^{N}w_{ti}=1 i=1∑Nwti=1。
2:开始循环进行 T T T 轮训练:
其中,下面的序号 a a a 表示第 1 轮训练, b b b 表示第 2 轮训练,以此类推。
2.4.3 算法步骤3a-7a(第 1 轮)
3a:基于分布
D
t
=
D
1
D_t=D_1
Dt=D1 从数据集
D
D
D 中训练出分类器
h
t
=
h
1
h_t=h_1
ht=h1:
h
1
=
L
(
D
,
D
1
)
h_1=\mathfrak{L}(D,D_1)
h1=L(D,D1)
在权值分布为
D
1
D_1
D1 的训练数据上,阈值
v
v
v 取 2.5 时分类误差率最低,故基本分类器为:
h
1
(
x
)
=
{
1
,
x
<
2.5
−
1
,
x
>
2.5
h_1(x)=\begin{cases}{1},&x\lt 2.5\\{-1},&x\gt 2.5\end{cases}
h1(x)={1,−1,x<2.5x>2.5
4a:估计
h
1
h_1
h1 的误差:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 1 D_1 D1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
基分类器结果 h 1 ( x ) h_1(x) h1(x) | 1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
正误 | √ | √ | √ | √ | √ | √ | × | × | × | √ |
h
1
(
x
)
h_1(x)
h1(x) 的在训练数据集上的误差率为:
ϵ
1
=
P
x
∼
D
1
(
h
1
(
x
)
≠
f
(
x
)
)
=
0.1
+
0.1
+
0.1
=
0.3
\epsilon_1=P_{x\sim D_1}(h_1(x)\neq f(x))=0.1+0.1+0.1=0.3
ϵ1=Px∼D1(h1(x)=f(x))=0.1+0.1+0.1=0.3
务必注意:模型的误差等于误判样本的权重值之和(可以看作弱学习器在数据集上的加权错误率),而非误判样本数占总样本数的比例。
5a:检查当前基分类器是否比随机猜测好:
ϵ
1
=
0.3
≤
0.5
\epsilon_{1}=0.3\leq 0.5
ϵ1=0.3≤0.5
基分类器
h
1
h_1
h1 比随机猜测好,循环继续进行。
6a:确定分类器
h
t
=
h
1
h_t=h_1
ht=h1 的权重
α
1
\alpha_1
α1:
α
1
=
1
2
l
n
(
1
−
ϵ
1
ϵ
1
)
=
1
2
l
n
(
1
−
0.3
0.3
)
=
0.4236
\alpha_{1}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{1}}{\epsilon_1}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.3}{0.3}\Big)=0.4236
α1=21ln(ϵ11−ϵ1)=21ln(0.31−0.3)=0.4236
7a:更新样本的权值分布:
D
2
=
(
w
21
,
…
,
w
2
i
,
…
,
w
210
)
=
D
1
(
x
)
e
−
α
1
f
(
x
)
h
1
(
x
)
Z
1
D_2=(w_{21},…,w_{2i},…,w_{210})=\dfrac{D_1(x)e^{-\alpha_{1}f(x)h_1(x)}}{Z_1}
D2=(w21,…,w2i,…,w210)=Z1D1(x)e−α1f(x)h1(x)
w 2 i = w 1 i Z 1 e − α 1 f ( x i ) h 1 ( x i ) , i = 1 , 2 , … , 10 w_{2i}=\dfrac{w_{1i}}{Z_1}e^{-\alpha_{1}f(x_i)h_1(x_i)},\quad i=1,2,…,10 w2i=Z1w1ie−α1f(xi)h1(xi),i=1,2,…,10
且已求得,基分类器权重 α 1 = 0.4236 \alpha_1=0.4236 α1=0.4236
可求,规范化因子(为了使样本的概率分布之和为1):
Z
t
=
∑
i
=
1
N
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
Zt=i=1∑Nwtie−αtf(xi)ht(xi)
Z 1 = ∑ i = 1 N w 1 i e − α 1 f ( x i ) h 1 ( x i ) = 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e − 0.4236 + 0.1 e 0.4236 + 0.1 e 0.4236 + 0.1 e 0.4236 + 0.1 e − 0.4236 = 0.1 e − 0.4236 × 7 + 0.1 e 0.4236 × 3 简化计算 = 0.06546857 × 7 + 0.15274505 × 3 = 0.91651514 \begin{aligned} Z_1&=\sum\limits_{i=1}^{N}w_{1i}e^{-\alpha_{1}f(x_i)h_{1}(x_{i})}\\ &=0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{-0.4236}+0.1e^{0.4236}+0.1e^{0.4236}+0.1e^{0.4236}+0.1e^{-0.4236}\\ &=0.1e^{-0.4236}\times 7+0.1e^{0.4236}\times 3\qquad 简化计算\\ &=0.06546857\times 7+0.15274505\times 3\\ &=0.91651514 \end{aligned} Z1=i=1∑Nw1ie−α1f(xi)h1(xi)=0.1e−0.4236+0.1e−0.4236+0.1e−0.4236+0.1e−0.4236+0.1e−0.4236+0.1e−0.4236+0.1e0.4236+0.1e0.4236+0.1e0.4236+0.1e−0.4236=0.1e−0.4236×7+0.1e0.4236×3简化计算=0.06546857×7+0.15274505×3=0.91651514
可求得:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 1 = ( w 1 i ) D_1=(w_{1i}) D1=(w1i) | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
基分类器结果 h 1 ( x ) h_1(x) h1(x) | 1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
分子 [ 1 ] ^{[1]} [1] w 1 i e − α 1 f ( x i ) h 1 ( x i ) w_{1i}e^{-\alpha_{1}f(x_i)h_1(x_i)} w1ie−α1f(xi)h1(xi) | 0.06546857 | 0.06546857 | 0.06546857 | 0.06546857 | 0.06546857 | 0.06546857 | 0.15274505 | 0.15274505 | 0.15274505 | 0.06546857 |
权值分布 [ 2 ] ^{[2]} [2] D 2 = ( w 2 i ) D_2=(w_{2i}) D2=(w2i) | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.16666 | 0.16666 | 0.16666 | 0.07143 |
[1]这里的分子计算: 0.1 e − 0.4236 = 0.06546857 0.1e^{-0.4236}=0.06546857 0.1e−0.4236=0.06546857; 0.1 e 0.4236 = 0.15274505 0.1e^{0.4236}=0.15274505 0.1e0.4236=0.15274505
[2]可以观察到:第 1 轮中基学习器分类错误的样本 x=6,7,8,在 D 2 D_2 D2 中的权重变大了,而其他样本权重降低了。
此时的集成分类器:
H
1
(
x
)
=
0.4236
h
1
(
x
)
H_1(x)=0.4236h_1(x)
H1(x)=0.4236h1(x)
分类结果
F
(
x
)
=
s
i
g
n
(
0.4236
h
1
(
x
)
)
F(x)=\mathrm{sign}\Big(0.4236h_1(x)\Big)
F(x)=sign(0.4236h1(x)) 在训练数据集上有 3 个误分类点。
2.4.4 算法步骤3b-7b(第 2 轮)
3b:基于分布
D
t
=
D
2
D_t=D_2
Dt=D2 从数据集
D
D
D 中训练出分类器
h
t
=
h
2
h_t=h_2
ht=h2:
h
2
=
L
(
D
,
D
2
)
h_2=\mathfrak{L}(D,D_2)
h2=L(D,D2)
在权值分布为
D
2
D_2
D2 的训练数据上,阈值
v
v
v 取 8.5 时分类误差率最低,故基本分类器为:
h
2
(
x
)
=
{
1
,
x
<
8.5
−
1
,
x
>
8.5
h_2(x)=\begin{cases}{1},&x\lt 8.5\\{-1},&x\gt 8.5\end{cases}
h2(x)={1,−1,x<8.5x>8.5
4b:估计
h
2
h_2
h2 的误差:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 2 D_2 D2 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.16666 | 0.16666 | 0.16666 | 0.07143 |
基分类器结果 h 2 ( x ) h_2(x) h2(x) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
正误 | √ | √ | √ | × | × | × | √ | √ | √ | √ |
h
2
(
x
)
h_2(x)
h2(x) 的在训练数据集上的误差率为:
ϵ
2
=
P
x
∼
D
2
(
h
2
(
x
)
≠
f
(
x
)
)
=
0.07143
+
0.07143
+
0.07143
=
0.2143
\epsilon_2=P_{x\sim D_2}(h_2(x)\neq f(x))=0.07143+0.07143+0.07143=0.2143
ϵ2=Px∼D2(h2(x)=f(x))=0.07143+0.07143+0.07143=0.2143
5b:检查当前基分类器是否比随机猜测好:
ϵ
2
=
0.2143
≤
0.5
\epsilon_{2}=0.2143\leq 0.5
ϵ2=0.2143≤0.5
基分类器
h
2
h_2
h2 比随机猜测好,循环继续进行。
6b:确定分类器
h
t
=
h
2
h_t=h_2
ht=h2 的权重
α
2
\alpha_2
α2:
α
2
=
1
2
l
n
(
1
−
ϵ
2
ϵ
2
)
=
1
2
l
n
(
1
−
0.2143
0.2143
)
=
0.6496
\alpha_{2}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{2}}{\epsilon_2}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.2143}{0.2143}\Big)=0.6496
α2=21ln(ϵ21−ϵ2)=21ln(0.21431−0.2143)=0.6496
7b:更新样本的权值分布:
D
3
=
(
w
31
,
…
,
w
3
i
,
…
,
w
310
)
=
D
2
(
x
)
e
−
α
2
f
(
x
)
h
2
(
x
)
Z
2
D_3=(w_{31},…,w_{3i},…,w_{310})=\dfrac{D_2(x)e^{-\alpha_{2}f(x)h_2(x)}}{Z_2}
D3=(w31,…,w3i,…,w310)=Z2D2(x)e−α2f(x)h2(x)
w 3 i = w 2 i Z 2 e − α 2 f ( x i ) h 2 ( x i ) , i = 1 , 2 , … , 10 w_{3i}=\dfrac{w_{2i}}{Z_2}e^{-\alpha_{2}f(x_i)h_2(x_i)},\quad i=1,2,…,10 w3i=Z2w2ie−α2f(xi)h2(xi),i=1,2,…,10
且已求得,基分类器权重 α 2 = 0.6496 \alpha_2=0.6496 α2=0.6496
可求,规范化因子:
Z
t
=
∑
i
=
1
N
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
Zt=i=1∑Nwtie−αtf(xi)ht(xi)
Z 2 = ∑ i = 1 N w 2 i e − α 2 f ( x i ) h 2 ( x i ) = 0.07143 e − 0.6496 + 0.07143 e − 0.6496 + 0.07143 e − 0.6496 + 0.07143 e 0.6496 + 0.07143 e 0.6496 + 0.07143 e 0.6496 + 0.16666 e − 0.6496 + 0.16666 e − 0.6496 + 0.16666 e − 0.6496 + 0.07143 e − 0.6496 = 0.07143 e − 0.6496 × 4 + 0.07143 e 0.6496 × 3 + 0.16666 e − 0.6496 × 3 简化计算 = 0.03730465 × 4 + 0.13677236 × 3 + 0.08703896 × 3 = 0.82065256 \begin{aligned} Z_2&=\sum\limits_{i=1}^{N}w_{2i}e^{-\alpha_{2}f(x_i)h_{2}(x_{i})}\\ &=0.07143e^{-0.6496}+0.07143e^{-0.6496}+0.07143e^{-0.6496}+0.07143e^{0.6496}+0.07143e^{0.6496}+0.07143e^{0.6496}+0.16666e^{-0.6496}+0.16666e^{-0.6496}+0.16666e^{-0.6496}+0.07143e^{-0.6496}\\ &=0.07143e^{-0.6496}\times 4+0.07143e^{0.6496}\times 3+0.16666e^{-0.6496}\times 3\qquad 简化计算\\ &=0.03730465\times 4+0.13677236\times 3+0.08703896\times 3\\ &=0.82065256 \end{aligned} Z2=i=1∑Nw2ie−α2f(xi)h2(xi)=0.07143e−0.6496+0.07143e−0.6496+0.07143e−0.6496+0.07143e0.6496+0.07143e0.6496+0.07143e0.6496+0.16666e−0.6496+0.16666e−0.6496+0.16666e−0.6496+0.07143e−0.6496=0.07143e−0.6496×4+0.07143e0.6496×3+0.16666e−0.6496×3简化计算=0.03730465×4+0.13677236×3+0.08703896×3=0.82065256
可求得:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 2 = ( w 2 i ) D_2=(w_{2i}) D2=(w2i) | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.07143 | 0.16666 | 0.16666 | 0.16666 | 0.07143 |
基分类器结果 h 2 ( x ) h_2(x) h2(x) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
分子 [ 3 ] ^{[3]} [3] w 2 i e − α 2 f ( x i ) h 2 ( x i ) w_{2i}e^{-\alpha_{2}f(x_i)h_2(x_i)} w2ie−α2f(xi)h2(xi) | 0.03730465 | 0.03730465 | 0.03730465 | 0.13677236 | 0.13677236 | 0.13677236 | 0.08703896 | 0.08703896 | 0.08703896 | 0.03730465 |
权值分布 [ 4 ] ^{[4]} [4] D 3 = ( w 3 i ) D_3=(w_{3i}) D3=(w3i) | 0.04546 | 0.04546 | 0.04546 | 0.16666 | 0.16666 | 0.16666 | 0.10606 | 0.10606 | 0.10606 | 0.04546 |
[3]这里的分子计算: 0.07143 e − 0.6496 = 0.03730465 0.07143e^{-0.6496}=0.03730465 0.07143e−0.6496=0.03730465; 0.07143 e 0.6496 = 0.13677236 0.07143e^{0.6496}=0.13677236 0.07143e0.6496=0.13677236; 0.16666 e − 0.6496 = 0.08703896 0.16666e^{-0.6496}=0.08703896 0.16666e−0.6496=0.08703896
[4]可以观察到:第 2 轮中基学习器分类错误的样本 x=3,4,5,在 D 3 D_3 D3 中的权重变大了,而其他样本权重降低了。
此时的集成分类器:
H
2
(
x
)
=
0.4236
h
1
(
x
)
+
0.6496
h
2
(
x
)
H_2(x)=0.4236h_1(x)+0.6496h_2(x)
H2(x)=0.4236h1(x)+0.6496h2(x)
分类结果
F
(
x
)
=
s
i
g
n
(
0.4236
h
1
(
x
)
+
0.6496
h
2
(
x
)
)
F(x)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)\Big)
F(x)=sign(0.4236h1(x)+0.6496h2(x)) 在训练数据集上有 3 个误分类点。
2.4.5 算法步骤3c-7c(第 3 轮)
3c:基于分布
D
t
=
D
3
D_t=D_3
Dt=D3 从数据集
D
D
D 中训练出分类器
h
t
=
h
3
h_t=h_3
ht=h3:
h
3
=
L
(
D
,
D
3
)
h_3=\mathfrak{L}(D,D_3)
h3=L(D,D3)
在权值分布为
D
3
D_3
D3 的训练数据上,阈值
v
v
v 取 5.5 时分类误差率最低,故基本分类器为:
h
3
(
x
)
=
{
1
,
x
>
5.5
−
1
,
x
<
5.5
h_3(x)=\begin{cases}{1},&x\gt 5.5\\{-1},&x\lt 5.5\end{cases}
h3(x)={1,−1,x>5.5x<5.5
4c:估计
h
3
h_3
h3 的误差:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 3 D_3 D3 | 0.04546 | 0.04546 | 0.04546 | 0.16666 | 0.16666 | 0.16666 | 0.10606 | 0.10606 | 0.10606 | 0.04546 |
基分类器结果 h 3 ( x ) h_3(x) h3(x) | -1 | -1 | -1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 |
正误 | × | × | × | √ | √ | √ | √ | √ | √ | × |
h
3
(
x
)
h_3(x)
h3(x) 的在训练数据集上的误差率为:
ϵ
3
=
P
x
∼
D
3
(
h
3
(
x
)
≠
f
(
x
)
)
=
0.04546
+
0.04546
+
0.04546
+
0.04546
=
0.1818
\epsilon_3=P_{x\sim D_3}(h_3(x)\neq f(x))=0.04546+0.04546+0.04546+0.04546=0.1818
ϵ3=Px∼D3(h3(x)=f(x))=0.04546+0.04546+0.04546+0.04546=0.1818
5c:检查当前基分类器是否比随机猜测好:
ϵ
3
=
0.1818
≤
0.5
\epsilon_{3}=0.1818\leq 0.5
ϵ3=0.1818≤0.5
基分类器
h
3
h_3
h3 比随机猜测好,循环继续进行.
6c:确定分类器
h
t
=
h
3
h_t=h_3
ht=h3 的权重
α
3
\alpha_3
α3:
α
3
=
1
2
l
n
(
1
−
ϵ
3
ϵ
3
)
=
1
2
l
n
(
1
−
0.1818
0.1818
)
=
0.7521
\alpha_{3}=\dfrac{1}{2}ln\Big(\dfrac{1-\epsilon_{3}}{\epsilon_3}\Big)=\dfrac{1}{2}ln\Big(\dfrac{1-0.1818}{0.1818}\Big)=0.7521
α3=21ln(ϵ31−ϵ3)=21ln(0.18181−0.1818)=0.7521
7c:更新样本的权值分布:
D
4
=
(
w
41
,
…
,
w
4
i
,
…
,
w
410
)
=
D
3
(
x
)
e
−
α
3
f
(
x
)
h
3
(
x
)
Z
3
D_4=(w_{41},…,w_{4i},…,w_{410})=\dfrac{D_3(x)e^{-\alpha_{3}f(x)h_3(x)}}{Z_3}
D4=(w41,…,w4i,…,w410)=Z3D3(x)e−α3f(x)h3(x)
w 4 i = w 3 i Z 3 e − α 3 f ( x i ) h 3 ( x i ) , i = 1 , 2 , … , 10 w_{4i}=\dfrac{w_{3i}}{Z_3}e^{-\alpha_{3}f(x_i)h_3(x_i)},\quad i=1,2,…,10 w4i=Z3w3ie−α3f(xi)h3(xi),i=1,2,…,10
且已求得,基分类器权重 α 3 = 0.7521 \alpha_3=0.7521 α3=0.7521
可求,规范化因子:
Z
t
=
∑
i
=
1
N
w
t
i
e
−
α
t
f
(
x
i
)
h
t
(
x
i
)
Z_t=\sum\limits_{i=1}^{N}w_{ti}e^{-\alpha_{t}f(x_i)h_{t}(x_{i})}
Zt=i=1∑Nwtie−αtf(xi)ht(xi)
$$
\begin{aligned}
Z_3&=\sum\limits_{i=1}{N}w_{3i}e{-\alpha_{3}f(x_i)h_{3}(x_{i})}\
&=0.04546e{0.7521}+0.04546e{0.7521}+0.04546e{0.7521}+0.16666e{-0.7521}+0.16666e{-0.7521}+0.16666e{-0.7521}+0.10606e{-0.7521}+0.10606e{-0.7521}+0.10606e{-0.7521}+0.04546e{0.7521}\
&=0.04546e^{0.7521}\times 4+0.16666e^{-0.7521}\times 3+0.10606e^{-0.7521}\times 3\qquad 简化计算\
&=0.09644113\times 4+0.07855946\times 3+0.04999410\times 3\
&=0.77142520
\end{aligned}
$$
可求得:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
权值分布 D 3 = ( w 3 i ) D_3=(w_{3i}) D3=(w3i) | 0.04546 | 0.04546 | 0.04546 | 0.16666 | 0.16666 | 0.16666 | 0.10606 | 0.10606 | 0.10606 | 0.04546 |
基分类器结果 h 3 ( x ) h_3(x) h3(x) | -1 | -1 | -1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 |
分子 [ 5 ] ^{[5]} [5] w 3 i e − α 3 f ( x i ) h 3 ( x i ) w_{3i}e^{-\alpha_{3}f(x_i)h_3(x_i)} w3ie−α3f(xi)h3(xi) | 0.09644113 | 0.09644113 | 0.09644113 | 0.07855946 | 0.07855946 | 0.07855946 | 0.04999410 | 0.04999410 | 0.04999410 | 0.09644113 |
权值分布 [ 6 ] ^{[6]} [6] D 4 = ( w 4 i ) D_4=(w_{4i}) D4=(w4i) | 0.12502 | 0.12502 | 0.12502 | 0.10184 | 0.10184 | 0.10184 | 0.06481 | 0.06481 | 0.06481 | 0.12502 |
[5]这里的分子计算: 0.04546 e 0.7521 = 0.09644113 0.04546e^{0.7521}=0.09644113 0.04546e0.7521=0.09644113; 0.16666 e − 0.7521 = 0.07855946 0.16666e^{-0.7521}=0.07855946 0.16666e−0.7521=0.07855946; 0.10606 e − 0.7521 = 0.04999410 0.10606e^{-0.7521}=0.04999410 0.10606e−0.7521=0.04999410
[6]可以观察到:第 3 轮中基学习器分类错误的样本 x=0,1,2,9,在 D 4 D_4 D4 中的权重变大了,而其他样本权重降低了。
此时的集成分类器:
H
3
(
x
)
=
0.4236
h
1
(
x
)
+
0.6496
h
2
(
x
)
+
0.7521
h
3
(
x
)
H_3(x)=0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x)
H3(x)=0.4236h1(x)+0.6496h2(x)+0.7521h3(x)
分类结果
F
(
x
)
=
s
i
g
n
(
0.4236
h
1
(
x
)
+
0.6496
h
2
(
x
)
+
0.7521
h
3
(
x
)
)
F(x)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x)\Big)
F(x)=sign(0.4236h1(x)+0.6496h2(x)+0.7521h3(x)) 在训练数据集上有 0 个误分类点。
具体如下:
序号 i i i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
数据 x x x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
类别标签 y = f ( x ) y=f(x) y=f(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
基分类器结果 h 1 ( x ) h_1(x) h1(x) | 1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
加权 α 1 h 1 ( x ) \alpha_{1}h_1(x) α1h1(x) | 0.4236 | 0.4236 | 0.4236 | -0.4236 | -0.4236 | -0.4236 | -0.4236 | -0.4236 | -0.4236 | -0.4236 |
基分类器结果 h 2 ( x ) h_2(x) h2(x) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
加权 α 2 h 2 ( x ) \alpha_{2}h_2(x) α2h2(x) | 0.6496 | 0.6496 | 0.6496 | 0.6496 | 0.6496 | 0.6496 | 0.6496 | 0.6496 | 0.6496 | -0.6496 |
基分类器结果 h 3 ( x ) h_3(x) h3(x) | -1 | -1 | -1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 |
加权 α 3 h 3 ( x ) \alpha_{3}h_3(x) α3h3(x) | -0.7521 | -0.7521 | -0.7521 | -0.7521 | -0.7521 | -0.7521 | 0.7521 | 0.7521 | 0.7521 | 0.7521 |
∑ t = 1 T α t h t ( x ) \sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x) t=1∑Tαtht(x) | 0.3211 | 0.3211 | 0.3211 | -0.5261 | -0.5261 | -0.5261 | 0.9781 | 0.9781 | 0.9781 | -0.3211 |
集成分类器结果 F ( x ) F(x) F(x) | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
正误 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
2.4.6 算法步骤8
8:结束循环
输出结果:
F
(
x
)
=
s
i
g
n
(
∑
t
=
1
T
α
t
h
t
(
x
)
)
=
s
i
g
n
(
0.4236
h
1
(
x
)
+
0.6496
h
2
(
x
)
+
0.7521
h
3
(
x
)
)
F(x)=\mathrm{sign}\Big(\sum\limits_{t=1}^{T}\alpha_{t}h_{t}(x)\Big)=\mathrm{sign}\Big(0.4236h_1(x)+0.6496h_2(x)+0.7521h_3(x)\Big)
F(x)=sign(t=1∑Tαtht(x))=sign(0.4236h1(x)+0.6496h2(x)+0.7521h3(x))
AdaBoost 算法在本数据集的运算至此结束。
2.5 代码实现
见代码文件“AdaBoost.ipynb”。
2.6 算法分析
2.6.1 主要优点
①AdaBoost 作为分类器时,分类精度很高,训练误差以指数速率下降;
②在 AdaBoost 的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活;
③作为简单的二元分类器时,构造简单,结果可理解。
2.6.2 主要缺点
在 Adaboost 训练过程中,Adaboost 会使得难于分类的样本的权值呈指数增长,训练将会过于偏向这类困难的样本;因此它对异常样本是敏感的,异常样本在迭代中可能会获得较高的权重,影响最终强学习器的预测准确性。
2.7 常用技巧
2.7.1 特征缩减技术(Shrinkage)
对每个基学习器乘以一个系数 v ( 0 < v < 1 ) v\ (0\lt v\lt 1) v (0<v<1),使其对最终模型的贡献减小,从而防止学的太快产生过拟合, v v v 又称学习率(learning rate)。
于是,上文的加法模型就从:
H
(
x
)
=
H
t
−
1
(
x
)
+
α
t
h
t
(
x
)
H(x)=H_{t-1}(x)+\alpha_{t}h_t(x)
H(x)=Ht−1(x)+αtht(x)
变为:
H
(
x
)
=
H
t
−
1
(
x
)
+
v
⋅
α
t
h
t
(
x
)
H(x)=H_{t-1}(x)+v\cdot\alpha_{t}h_t(x)
H(x)=Ht−1(x)+v⋅αtht(x)
一般
v
v
v 要和迭代次数
T
T
T 结合起来使用,较小的
v
v
v 意味着需要较大的
T
T
T。
《The Elements of Staistical Learning》提到的策略是先将 v v v 设得很小 ( v < 0.1 ) (v\lt 0.1) (v<0.1),再通过 Early Stopping 选择 T T T;现实中也常用交叉验证(cross-validation)进行选择。
2.7.2 早停法(Early Stopping)
将数据集划分为训练集和测试集,在训练过程中不断检查在测试集上的表现,如果测试集上的准确率下降到一定阈值之下,则停止训练,选用当前的迭代次数 T T T,这同样是防止过拟合的手段。
2.7.3 权值修整(Weight Trimming)
Weight Trimming 的主要目的是提高训练速度,且不显著牺牲准确率。
在 AdaBoost 的每一轮基学习器训练过程中,只有小部分样本的权重较大,因而能产生较大的影响;而其他大部分权重小的样本则对训练影响甚微。
Weight Trimming 的思想是每一轮迭代中删除那些低权重的样本,只用高权重样本进行训练。具体是设定一个阈值(比如90%或99%),再将所有样本按权重排序,计算权重的累积和,累积和大于阈值的权重 (样本) 被舍弃,不会用于训练。注意每一轮训练完成后所有样本的权重依然会被重新计算,这意味着之前被舍弃的样本在之后的迭代中如果权重增加,可能会重新用于训练。
参考文献[9]中有使用 Weight Trimming 的 AdaBoost 代码,可供参考。
2.8 参考文献
[1]《机器学习》周志华
[2]《统计学习方法》李航
[3]《机器学习西瓜书之集成学习》爱你的小魔仙 https://www.bilibili.com/video/BV1PK4y147VQ/
[4] 《集成学习 之【Adaboost】 —— 李航《统计学习方法》相关章节解读》老弓的学习日记 https://www.bilibili.com/video/BV1x44y1r7Zc
[5]《通俗易懂讲算法-Adaboost》青青草原灰太郎 https://www.bilibili.com/video/BV13S4y1t7aY/
[6]《Adaboost是如何训练弱分类器的》herain https://www.zhihu.com/question/443511497?utm_id=0
[7]《集成学习之Boosting —— AdaBoost原理》wdmad https://zhuanlan.zhihu.com/p/37358517
[8]《集成学习之Boosting —— AdaBoost实现》wdmad https://zhuanlan.zhihu.com/p/37357981
[9]《AdaBoost 算法》Rnan-prince https://blog.csdn.net/qq_19446965/article/details/104200720
[10]《集成学习(Ensemble learning)》张梓寒 https://www.cnblogs.com/ZihanZhang/p/16351469.html
[11]《Statistical-Learning-Method_Code》Dod-o https://github.com/Dod-o/Statistical-Learning-Method_Code