西瓜书第八章-集成学习
一、个体与集成
- 集成学习(ensemble learning) 通过构建并结合多个学习器来完成学习任务,有时称为 多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)
图中显示出集成学习的一般结构:先产生一组 “个体学习器”(individual learner),再用某种策略将它们结合起来 - “同质”的(homogeneous) 同质继承中个体学习器亦称“基学习器”(base learner),相应的学习算法称为 “基学习算法“(base learning algorithm)。
- 集成也可以包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是”异质“的(heterogenous),个体学习器一般不称为基学习器,常称为 ”组件学习器“(component learner) 或直接称为个体学习器
- 集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,这对 “弱学习器”(weak learner) 尤为明显,集成学习通常是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器
简单的通过投票法(voting)产生,即少数服从多数
- 要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏,并且要有“多样性”(diversity),即学习器间具有差异
考虑二分类问题
y
∈
{
−
1
,
+
1
}
y\in\{-1,+1\}
y∈{−1,+1}和真实函数
f
f
f,假定基分类器的错误率为
ϵ
\epsilon
ϵ,即对每个基分类器
h
i
h_i
hi有
P
(
h
i
(
x
)
≠
f
(
x
)
)
=
ϵ
P(h_i(\pmb x)\ne f(\pmb x)) = \epsilon
P(hi(xxx)=f(xxx))=ϵ
假设集成通过简单投票法结合T个基分类器,若有超过半数的基分类器正确,则集成分类就正确:
H
(
x
)
=
sign
(
∑
i
=
1
T
h
i
(
x
)
)
H(\pmb x) = \operatorname{sign}(\sum_{i=1}^Th_i(\pmb x))
H(xxx)=sign(i=1∑Thi(xxx))
假设基分类器的错误率相互独立,则由Hoeffding不等式可知,集成学习错误率
P
(
H
(
x
)
≠
f
(
x
)
)
=
∑
k
=
0
[
T
/
2
]
(
T
k
)
(
1
−
ϵ
)
k
ϵ
T
−
k
≤
exp
(
−
1
2
T
(
1
−
2
ϵ
)
2
)
\begin{aligned} P(H(\pmb x) \ne f(\pmb x)) &= \sum_{k=0}^{[T/2]} \begin{pmatrix} T\\ k \end{pmatrix}(1-\epsilon)^k\epsilon^{T-k}\\ &\leq \operatorname {exp}(-\frac{1}{2}T(1-2\epsilon)^2) \end{aligned}
P(H(xxx)=f(xxx))=k=0∑[T/2](Tk)(1−ϵ)kϵT−k≤exp(−21T(1−2ϵ)2)
推导过程后续补充
Hoeffding不等式是关于一组随机变量均值的概率不等式。如果为一组独立同分布的参数为p的伯努利分布随机变量,n为随机变量个数。定义随机变量均值为:
X ˉ = X 1 + X 2 + ⋯ + X n n \bar X = \frac{X_1+X_2+\cdots+X_n}{n} Xˉ=nX1+X2+⋯+Xn
对于任意,Hoeffding不等式可以表示为
P ( ∣ X ˉ − E ( X ˉ ) ∣ ≥ δ ) ≤ exp ( − 2 δ 2 n 2 ) P(|\bar X - E(\bar X)|\geq \delta)\leq \operatorname {exp}(-2\delta^2n^2) P(∣Xˉ−E(Xˉ)∣≥δ)≤exp(−2δ2n2)
上式显示出,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋向于零
- 事实上,个体学习器的“准确性”和“多样性”本身就存在冲突,如何产生并结合“好而不同”的个体学习器,恰是集成学习研究的核心
- 根据个体学习器的生成方式,目前的集成学习方法大致分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者代表是Boosting,后者的代表是Bagging和 “随机森林”(Random Forest)
二、Boosting
- Boosting是一族可将弱学习器提升为强学习器的算法
- 工作机制类似:先将初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本再后续受到更多关注,然后基于调整后的样本分布来训练下一个学习器;如此重复进行,直至学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合
- 代表性的是AdaBoost
AdaBoost 算法有多种推导方式,比较容易理解的是基于 “加性模型”(additive model),即基学习器的线性组合
H ( x ) = ∑ t = 1 T α t h t ( x ) H(\pmb x) = \sum_{t=1}^T\alpha_t h_t(\pmb x) H(xxx)=t=1∑Tαtht(xxx)
来最小化 指数损失函数(exponential loss function)
ℓ e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] \ell_exp(H|D) = E_{x\sim D}[e^{-f(x)H(x)}] ℓexp(H∣D)=Ex∼D[e−f(x)H(x)]
若 H ( x ) H(\pmb x) H(xxx)能令指数损失函数最小化,则有
∂ ℓ exp ( H ∣ D ) ∂ H ( x ) = − e − H ( x ) P ( f ( x ) = 1 ∣ x ) + e − H ( x ) P ( f ( x ) = − 1 ∣ x ) \frac{\partial\ell_{\operatorname{exp}}(H|D)}{\partial H(\pmb x)}=-e^{-H(x)}P(f(\pmb x)=1|\pmb x)+e^{-H(x)}P(f(\pmb x)=-1|\pmb x) ∂H(xxx)∂ℓexp(H∣D)=−e−H(x)P(f(xxx)=1∣xxx)+e−H(x)P(f(xxx)=−1∣xxx)
上式为零可解得
H ( x ) = 1 2 ln P ( f ( x ) = 1 ∣ x ) P ( f ( x ) = − 1 ∣ x ) H(\pmb x) = \frac{1}{2}\operatorname{ln}\frac{P(f(x)=1|\pmb x)}{P(f(x)=-1|\pmb x)} H(xxx)=21lnP(f(x)=−1∣xxx)P(f(x)=1∣xxx)
因此,有
s i g n ( H ( x ) ) = s i g n ( 1 2 ln 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 = argmax y ∈ { − 1 , 1 } P ( f ( x ) = y ∣ x ) , \begin{aligned} sign(H(\pmb x)) &= sign(\frac{1}{2}\operatorname{ln}\frac{P(f(x)=1|\pmb x)}{P(f(x)=-1|\pmb x)})\\ &= \begin{cases} 1,\quad P(f(x)=1|\pmb x \geq P(f(x)=-1|\pmb x\\ -1,\quad P(f(x)=1|\pmb x < P(f(x)=-1|\pmb x\\ \end{cases}\\ &=\underset{y\in\{-1,1\}}{\operatorname{argmax}}P(f(x) = y|\pmb x), \end{aligned} sign(H(xxx))=sign(21lnP(f(x)=−1∣xxx)P(f(x)=1∣xxx))={1,P(f(x)=1∣xxx≥P(f(x)=−1∣xxx−1,P(f(x)=1∣xxx<P(f(x)=−1∣xxx=y∈{−1,1}argmaxP(f(x)=y∣xxx),
这意味着 s i g n ( H ( x ) ) sign(H(\pmb x)) sign(H(xxx))达到了贝叶斯最优错误率。换言之,若指数损失函数最小化,则分类错误率也将最小化
在AdaBoost算法中,第一个基分类器
h
1
h_1
h1是通过直接将基学习算法用于初始数据分布而得;此后迭代地生成
h
t
;
α
t
h_t;\alpha_t
ht;αt,当基分类器
h
t
h_t
ht基于分布
D
t
D_t
Dt产生后,该基分类器的权重
α
t
\alpha_t
αt应使得
α
t
h
t
\alpha_th_t
αtht最小化指数损失函数
ℓ
exp
(
α
t
h
t
∣
D
t
)
=
E
x
∼
D
t
[
e
−
f
(
x
)
α
t
h
t
(
x
)
]
=
E
x
∼
D
t
[
e
−
α
t
Ⅱ
(
f
(
x
)
=
h
t
(
x
)
)
+
e
α
t
Ⅱ
(
f
(
x
)
≠
h
t
(
x
)
)
]
=
e
−
α
t
P
x
∼
D
t
(
f
(
x
)
=
h
t
(
x
)
)
+
e
α
t
P
x
∼
D
t
(
f
(
x
)
≠
h
t
(
x
)
)
=
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
\begin{aligned} \ell_{\operatorname {exp}}(\alpha_th_t|D_t) &= E_{x\sim D_t}[e^{-f(x)\alpha_th_t(x)}]\\ &=E_{x\sim D_t}[e^{-\alpha_t}Ⅱ(f(\pmb x)=h_t(\pmb x))+e^{\alpha_t}Ⅱ(f(\pmb x)\ne h_t(\pmb x))]\\ &=e^{-\alpha_t}P_{x\sim D_t}(f(\pmb x)=h_t(\pmb x))+e^{\alpha_t}P_{x\sim D_t}(f(\pmb x)\ne h_t(\pmb x))\\ &=e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t}\epsilon_t \end{aligned}
ℓexp(αtht∣Dt)=Ex∼Dt[e−f(x)αtht(x)]=Ex∼Dt[e−αtⅡ(f(xxx)=ht(xxx))+eαtⅡ(f(xxx)=ht(xxx))]=e−αtPx∼Dt(f(xxx)=ht(xxx))+eαtPx∼Dt(f(xxx)=ht(xxx))=e−αt(1−ϵt)+eαtϵt
其中
ϵ
t
=
P
x
∼
D
t
(
f
(
x
)
≠
h
t
(
x
)
)
\epsilon_t =P_{x\sim D_t}(f(\pmb x)\ne h_t(\pmb x))
ϵt=Px∼Dt(f(xxx)=ht(xxx)).考虑指数损失函数的导数
∂
ℓ
exp
(
α
t
h
t
∣
D
t
)
∂
α
t
=
−
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
\frac{\partial\ell_{\operatorname {exp}(\alpha_t h_t|D_t)}}{\partial \alpha_t}=-e^{-\alpha_t}(1-\epsilon_t)+ e^{\alpha_t}\epsilon_t
∂αt∂ℓexp(αtht∣Dt)=−e−αt(1−ϵt)+eαtϵt
令上式为零可解得
α
t
=
1
2
ln
(
1
−
ϵ
t
ϵ
t
)
\alpha_t = \frac{1}{2}\operatorname{ln}(\frac{1-\epsilon_t}{\epsilon_t})
αt=21ln(ϵt1−ϵt)
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的全部错误,即最小化
ℓ
exp
(
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
)
]
\begin{aligned} \ell_{\operatorname{exp}}(H_{t-1}+h_t|D)&=E_{x\sim D}[e^{-f(x)(H_{t-1}(x)+h_t(x))}]\\ &=E_{x\sim D}[e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}] \end{aligned}
ℓexp(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)]
注意到
f
2
(
x
)
=
h
t
2
(
x
)
=
1
f^2(x)=h_t^2(x)=1
f2(x)=ht2(x)=1,式中可使用
e
−
f
(
x
)
h
t
(
x
)
e^{-f(x)h_t(x)}
e−f(x)ht(x)的泰勒展开式近似为
ℓ
exp
(
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
)
]
=
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
1
−
f
(
x
)
h
t
(
x
)
+
1
2
)
]
\begin{aligned} \ell_{\operatorname{exp}}(H_{t-1}+h_t|D)&\simeq E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h_t(x)+\frac{f^2(x)h_t^2(x)}{2})]\\ &=E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h_t(x)+\frac{1}{2})] \end{aligned}
ℓexp(Ht−1+ht∣D)≃Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+2f2(x)ht2(x))]=Ex∼D[e−f(x)Ht−1(x)(1−f(x)ht(x)+21)]
于是,理想的基学习器
h
t
(
x
)
=
argmin
h
ℓ
exp
(
H
t
−
1
+
h
∣
D
)
=
argmin
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
(
1
−
f
(
x
)
h
(
x
)
+
1
2
)
]
=
argmax
h
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
f
(
x
)
h
(
x
)
]
=
argmax
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
)
]
\begin{aligned} h_t(x) &= \underset{h}{\operatorname{argmin}}\ell_{\operatorname {exp}}(H_{t-1}+h|D)\\ & = \underset{h}{\operatorname{argmin}}E_{x\sim D}[e^{-f(x)H_{t-1}(x)}(1-f(x)h(x)+\frac{1}{2})]\\ &=\underset{h}{\operatorname{argmax}}E_{x\sim D}[e^{-f(x)H_{t-1}(x)}f(x)h(x)]\\ &=\underset{h}{\operatorname{argmax}}E_{x\sim D}[\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)]\\ \end{aligned}
ht(x)=hargminℓexp(Ht−1+h∣D)=hargminEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+21)]=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)]
注意到
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
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
(
x
)
=
e
−
f
(
x
)
H
t
−
1
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
−
1
(
x
)
]
D_t(x)=\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]}
Dt(x)=Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)
则根据数学期望的定义,这等价于令
h
t
(
x
)
=
argmax
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
)
]
=
argmax
h
E
x
∼
D
t
[
f
(
x
)
h
(
x
)
]
\begin{aligned} h_t(x)&=\underset{h}{\operatorname{argmax}}E_{x\sim D}[\frac{e^{-f(x)H_{t-1}(x)}}{E_{x\sim D }[e^{-f(x)H_{t-1}(x)}]}f(x)h(x)]\\ & = \underset{h}{\operatorname{argmax}}E_{x\sim D_t}[f(x)h(x)]\\ \end{aligned}
ht(x)=hargmaxEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]=hargmaxEx∼Dt[f(x)h(x)]
由于
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
Ⅱ
(
f
(
x
)
≠
h
(
x
)
)
f(x)h(x) = 1-2Ⅱ(f(x)\ne h(x))
f(x)h(x)=1−2Ⅱ(f(x)=h(x))
则理想的基学习器
h
t
(
x
)
=
argmax
h
E
x
∼
D
t
[
Ⅱ
(
f
(
x
)
≠
h
(
x
)
)
]
h_t(x)=\underset{h}{\operatorname{argmax}}E_{x\sim D_t}[Ⅱ(f(x)\ne h(x))]
ht(x)=hargmaxEx∼Dt[Ⅱ(f(x)=h(x))]
由此可见,理想的
h
t
h_t
ht将在分布
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
)
]
=
D
(
x
)
e
−
f
(
x
)
H
t
−
1
(
x
)
e
−
f
(
x
)
h
t
(
x
)
E
x
∼
D
[
e
−
f
(
x
)
H
t
(
x
)
]
=
D
t
⋅
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
)
]
\begin{aligned} D_{t+1}(x) &= \frac{D(x)e^{-f(x)H_t(x)}}{E_{x\sim D}[e^{-f(x)H_t(x)}]}\\ & = \frac{D(x)e^{-f(x)H_{t-1}(x)}e^{-f(x)h_t(x)}}{E_{x\sim D}[e^{-f(x)H_t(x)}]}\\ & = D_t \cdot e^{-f(x)\alpha_th_t(x)}\frac{E_{x\sim D}[e^{-f(x)H_{t-1}(x)}]}{E_{x\sim D}[e^{-f(x)H_t(x)}]} \end{aligned}
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)ht(x)=Dt⋅e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]Ex∼D[e−f(x)Ht−1(x)]
- Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过 “重赋权法”(re-weighting) 实施,即在训练过程中每一轮中,根据样本分布为每个训练样本重新赋予一个权重,对无法接收带权样本的基学习算法,则可通过“重采样法”(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练
- 从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成
三、Bagging与随机森林
希望每个个体学习器相互独立,差异大,一种做法就是对训练样本进行采样,产生若干个不同的子集,但这样每个基学习器只用到了一小部分训练数据,甚至不足以进行有效的学习,可以考虑使用有交叠的采样子集
1.Bagging
- Bagging 是并行式集成学习方法最著名的代表,它直接基于之前介绍过的自主采样法(boostrap sampling)。
给定包含m个样本的数据集,先随机选出一个样本放入采样集中,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在采样集中
可采样出T个含有m个样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个类收到同样的票数的情形,则简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。
假定基学习器的计算复杂度为
O
(
m
)
O(m)
O(m),则Bagging的复杂度大致为
T
(
O
(
m
)
+
O
(
s
)
)
T(O(m)+O(s))
T(O(m)+O(s)),考虑到采样与投票/平均过程的复杂度
O
(
s
)
O(s)
O(s)很小,而T通常是一个不太大的常数,因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明Bagging是一个很高效的集成学习算法。与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归任务
- 自主采样过程还给Bagging带来了另一个优点:由于每个基学习器只使用了初始训练集中约63.2%的样本,剩下36.8%的样本用作验证集来对泛化性能进行 “包外估计”(out-of-bag estimate)。为此需记录每个基学习器所使用的训练样本。不妨令
D
t
D_t
Dt表示
h
t
h_t
ht实际使用的训练样本集,令
H
o
o
b
(
x
)
H^{oob}(x)
Hoob(x)表示对样本x的包外预测,即仅考虑那些未使用x训练的基学习器在x上的预测,有
H o o b ( x ) = argmax y ∈ Y ∑ t = 1 T Ⅱ ( h t ( x ) = y ) ⋅ Ⅱ ( x ∉ D t ) H^{oob}(x) = \underset{y\in \mathcal Y}{\operatorname {argmax}}\sum_{t=1}^TⅡ(h_t(x) = y)\cdot Ⅱ(x \notin D_t) Hoob(x)=y∈Yargmaxt=1∑TⅡ(ht(x)=y)⋅Ⅱ(x∈/Dt)
则Bagging泛化误差的包外估计为
ϵ o o b = 1 ∣ D ∣ ∑ ( x , y ) ∈ D Ⅱ ( H o o b ( x ) ≠ y ) \epsilon^{oob} = \frac{1}{|D|}\sum_{(x,y)\in D}Ⅱ(H^{oob}(x) \ne y) ϵoob=∣D∣1(x,y)∈D∑Ⅱ(Hoob(x)=y)
事实上,包外估计还有许多其他用途。例如当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理;当基学习器是神经网络时,可使用包外样本来辅助早期停止,减少过拟合风险。 - 从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。以基于信息增益划分的决策树为基学习器,不同规模的集成学习的集成及其基学习器所对应的分类边界如图
2.随机森林
- 随机森林(Random Forest,简称RF) 是Bagging的一个拓展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假设有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机引入程度,一般推荐值 k = log 2 d k=\operatorname{log}_2d k=log2d
- 随机森林简单、容易实现、计算开销小,它在很多现实任务中展现出强大的性能,被誉为 “代表集成学习计数水平的方法”,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升
随机森林的收敛性与Bagging相似,如图,随机森林的起始性能往往相对较差,特别是在集成中只包含一个学习器时,然而随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率常优于Bagging,因此在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点所有的属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集
四、结合策略
学习器结合可能从三个方面带来好处:
- 从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减小这一风险
- 从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险
- 从表示方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似
假定集成包含T个基学习器 { h 1 , h 2 , ⋯ , h T } \{h_1,h_2,\cdots,h_T\} {h1,h2,⋯,hT},其中 h i h_i hi在示例 x \pmb x xxx上的输出为 h i ( x ) h_i(\pmb x) hi(xxx)
1.平均法
对数值型输出 h i ( x ) ∈ R h_i(x) \in \mathbb R hi(x)∈R,最常见的结合策略是使用平均法(averaging)
- 简单平均法(simple averaging)
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x) = \frac{1}{T}\sum_{i=1}^Th_i(x) H(x)=T1i=1∑Thi(x) - 加权平均法(weighted averaging)
H ( x ) = ∑ i = 1 T w i h i ( x ) H(x) = \sum_{i=1}^T w_ih_i(x) H(x)=i=1∑Twihi(x)
其中 w i w_i wi是个体学习器 h i h_i hi的权重,通常要求 w i ≥ 0 , ∑ i = 1 T w i = 1 w_i \geq 0, \sum_{i=1}^Tw_i = 1 wi≥0,∑i=1Twi=1
加权平均法未必一定优于简单平均法,一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法
2.投票法
对分类任务来说,学习器 h i h_i hi将从类别标记集合 { c 1 , c 2 , ⋯ , c N } \{c_1,c_2,\cdots,c_N\} {c1,c2,⋯,cN}中预测出一个标记,最常用的集合策略是使用投票法(voting)。将 h i h_i hi在样本 x \pmb x xxx上的预测输出表示为一个N维向量 ( h i 1 ( x ) ; h i 2 ( x ) ; ⋯ ; h i N ( x ) ) (h_i^1(\pmb x);h_i^2(\pmb x);\cdots;h_i^N(\pmb x)) (hi1(xxx);hi2(xxx);⋯;hiN(xxx)),其中 h i j ( x ) h_i^j(\pmb x) hij(xxx)是 h i h_i hi在类别标记 c j c_j cj上的输出
- 绝对多数投票法(majority voting)
H ( x ) = { c j , if ∑ i = 1 T h i j ( x ) > 0.5 ∑ k = 1 N ∑ i = 1 T h i k ( x ) reject , otherwise H(\pmb x)= \begin{cases} c_j,\quad \operatorname{if} \sum_{i=1}^T h_i^j(\pmb x)>0.5\sum_{k=1}^N\sum_{i=1}^T h_i^k(\pmb x)\\ \operatorname{reject},\quad \operatorname{otherwise} \end{cases} H(xxx)={cj,if∑i=1Thij(xxx)>0.5∑k=1N∑i=1Thik(xxx)reject,otherwise
即若某标记得票过半,则预测为该标记;否则拒绝预测 - 相对多数投票法(plurality voting)
H ( x ) = c argmax j ∑ i = 1 T h i j ( x ) H(\pmb x) = c_{\underset{j}{\operatorname{argmax}}\sum_{i=1}^Th_i^j(x)} H(xxx)=cjargmax∑i=1Thij(x)
即预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个 - 加权投票法(weighted voting)
H ( x ) = c argmax j ∑ i = 1 T w i h i j ( x ) H(\pmb x) = c_{\underset{j}{\operatorname{argmax}}\sum_{i=1}^T w_i h_i^j(x)} H(xxx)=cjargmax∑i=1Twihij(x)
与加权平均法类似, w i w_i wi是 h i h_i hi的权重,通常 w i ≥ 0 , ∑ i = 1 T w i = 1 w_i \geq 0, \sum_{i=1}^Tw_i = 1 wi≥0,∑i=1Twi=1
在现实任务中,不同类型个体学习器可能产生不同类型的 h i j ( x ) h_i^j(\pmb x) hij(xxx)值,常见的有:
- 类标记: h i j ( x ) ∈ { 0 , 1 } h_i^j(\pmb x)\in \{0,1\} hij(xxx)∈{0,1},使用这类标记的投票亦称 “硬投票”(hard voting)
- 类概率: h i j ( x ) ∈ [ 0 , 1 ] h_i^j(\pmb x)\in [0,1] hij(xxx)∈[0,1],相当于对后验概率 P ( c j ∣ x ) P(c_j|\pmb x) P(cj∣xxx)的一个估计。使用类概率投票亦称 “软投票”(soft voting)
不同类型的 h i j ( x ) h_i^j(\pmb x) hij(xxx)值不能混用。对一些能在预测出类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用。若此类值未进行规范化,例如支持向量机的分类间隔值,则必须使用一些技术如 Platt缩放(Platt scaling)、等分回归(isotonic regression) 等进行 “校准”(calibration) 后才能作为类概率使用
3.学习法
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。
- Stacking 是学习法的典型代表,这里把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)
Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记被当作样例标记
次级学习器的输入属性表示和次级学习算法对Stacking集成泛化性能有很大影响,研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用 多响应线性回归(Multi-response Linear Regression,简称MLR) 作为次级学习算法效果较好,在MLR中使用不同的属性集效果更佳
- 贝叶斯模型平均(Bayes Model Averaging,简称BMA) 基于后验概率来为不同模型赋予权重,可视为加权平均法的一种特殊实现。
对Stacking和BMA进行比较,Stacking通常优于BMA,因为其鲁棒性比BMA更好,而且BMA对模型近似误差非常敏感
五、多样性
1.误差-分歧分解
欲构建泛化性能强的集成,个体学习器应“好而不同”,假设用个体学习器
h
1
,
h
2
,
⋯
,
h
T
h_1,h_2,\cdots,h_T
h1,h2,⋯,hT通过加权法结合产生的集成来完成回归学习任务
f
:
R
d
↦
R
f:\mathbb R^d \mapsto \mathbb R
f:Rd↦R,对示例
x
\pmb x
xxx,定义学习器
h
i
h_i
hi的 “分歧”(ambiguity) 为
A
(
h
i
∣
x
)
=
(
h
i
(
x
)
−
H
(
x
)
)
2
A(h_i|\pmb x) = (h_i(\pmb x)-H(\pmb x))^2
A(hi∣xxx)=(hi(xxx)−H(xxx))2
则集成的分群是
A
ˉ
(
h
∣
x
)
=
∑
i
=
1
T
w
i
A
(
h
i
∣
x
)
=
∑
i
=
1
T
w
i
(
h
i
(
x
)
−
H
(
x
)
)
2
\begin{aligned} \bar A(h|\pmb x) &= \sum_{i=1}^T w_iA(h_i|\pmb x)\\ &=\sum_{i=1}^Tw_i(h_i(\pmb x)-H(\pmb x))^2 \end{aligned}
Aˉ(h∣xxx)=i=1∑TwiA(hi∣xxx)=i=1∑Twi(hi(xxx)−H(xxx))2
在一定程度上反映了个体学习器的多样性。个体学习器
h
i
h_i
hi和集成
H
H
H的平方误差分别为
E
(
h
i
∣
x
)
=
(
f
(
x
)
−
h
i
(
x
)
)
2
E
(
H
∣
x
)
=
(
f
(
x
)
−
H
(
x
)
)
2
E(h_i|\pmb x) = (f(\pmb x)-h_i(\pmb x))^2\\ E(H|\pmb x) = (f(\pmb x)-H(\pmb x))^2
E(hi∣xxx)=(f(xxx)−hi(xxx))2E(H∣xxx)=(f(xxx)−H(xxx))2
令
E
ˉ
(
h
∣
x
)
=
∑
i
=
1
T
w
i
⋅
E
(
h
i
∣
x
)
\bar E(h|\pmb x)=\sum_{i=1}^Tw_i\cdot E(h_i|\pmb x)
Eˉ(h∣xxx)=∑i=1Twi⋅E(hi∣xxx)表示个体学习器误差的加权均值,有
A
ˉ
(
h
∣
x
)
=
∑
i
=
1
T
w
i
E
(
h
i
∣
x
)
−
E
(
H
∣
x
)
=
E
ˉ
(
h
∣
x
)
−
E
(
H
∣
x
)
\begin{aligned} \bar A(h|\pmb x) &= \sum_{i=1}^T w_iE(h_i|\pmb x) - E(H|\pmb x)\\ &=\bar E(h|\pmb x)-E(H|\pmb x) \end{aligned}
Aˉ(h∣xxx)=i=1∑TwiE(hi∣xxx)−E(H∣xxx)=Eˉ(h∣xxx)−E(H∣xxx)
对所有样本
x
\pmb x
xxx均成立,令
p
(
x
)
p(\pmb x)
p(xxx)表示样本的概率密度,则在全样本上有
∑
i
=
1
T
w
i
∫
A
(
h
i
∣
x
)
p
(
x
)
d
x
=
∑
i
=
1
T
w
i
∫
E
(
h
i
∣
x
)
p
(
x
)
d
x
−
∫
E
(
H
∣
x
)
p
(
x
)
d
x
\sum_{i=1}^Tw_i\int A(h_i|\pmb x)p(\pmb x)dx = \sum_{i=1}^Tw_i\int E(h_i|\pmb x)p(\pmb x)dx - \int E(H|\pmb x)p(\pmb x)dx
i=1∑Twi∫A(hi∣xxx)p(xxx)dx=i=1∑Twi∫E(hi∣xxx)p(xxx)dx−∫E(H∣xxx)p(xxx)dx
类似的,个体学习器
h
i
h_i
hi在全样本上的泛化误差和分歧项分别为
E
i
=
∫
E
(
h
i
∣
x
)
p
(
x
)
d
x
A
i
=
∫
A
(
h
i
∣
x
)
p
(
x
)
d
x
E_i = \int E(h_i|\pmb x)p(\pmb x)d\pmb x\\ A_i = \int A(h_i|\pmb x)p(\pmb x)d\pmb x\\
Ei=∫E(hi∣xxx)p(xxx)dxxxAi=∫A(hi∣xxx)p(xxx)dxxx
集成的泛化误差为
E
i
=
∫
E
(
H
∣
x
)
p
(
x
)
d
x
E_i = \int E(H|\pmb x)p(\pmb x)d\pmb x
Ei=∫E(H∣xxx)p(xxx)dxxx
令
E
ˉ
=
∑
i
=
1
T
w
i
E
i
\bar E = \sum_{i=1}^Tw_iE_i
Eˉ=∑i=1TwiEi表示个体学习器泛化误差的加权均值,
A
ˉ
=
∑
i
=
1
T
w
i
A
i
\bar A = \sum_{i=1}^T w_iA_i
Aˉ=∑i=1TwiAi表示个体学习器的加权分歧值,有
E
=
E
ˉ
−
A
ˉ
E = \bar E-\bar A
E=Eˉ−Aˉ
这个式子明确的提示出:个体学习器准确性高、多样性越大,则集成越好,称为 “误差-分歧分解”(error-ambiguity decomposition) 。上面的推导过程只适用于回归学习,难以直接推广到分类学习任务上去。
2.多样性度量
- 多样性度量(diversity measure) 是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两不相似性
其中, a a a表示 h i h_i hi与 h j h_j hj均预测为正类的样本数目, a + b + c + d = m a+b+c+d=m a+b+c+d=m.下面给出一些常见的多样性度量 - 不合度量(disagreement measure)
d i s i j = b + c m dis_{ij} = \frac{b+c}{m} disij=mb+c
d i s i j dis_{ij} disij值域为[0,1].值越大则多样性越大 - 相关系数(correlation coefficient)
ρ i j = a d − b c ( a + b ) ( a + c ) ( c + d ) ( b + d ) \rho_{ij}=\frac{ad-bc}{\sqrt{(a+b)(a+c)(c+d)(b+d)}} ρij=(a+b)(a+c)(c+d)(b+d)ad−bc
ρ i j \rho_{ij} ρij的值域是[-1,1].若 h i h_i hi与 h j h_j hj无关,则值为0;若 h i h_i hi与 h j h_j hj正相关则值为正,否则为负 - Q-统计量(Q-statistic)
Q i j = a d − b c a d + b c Q_{ij}=\frac{ad-bc}{ad+bc} Qij=ad+bcad−bc
与 ρ i j \rho_{ij} ρij符号相同,且 ∣ Q i j ∣ ≤ ∣ ρ i j ∣ |Q_{ij}|\leq |\rho_{ij}| ∣Qij∣≤∣ρij∣ -
κ
\kappa
κ-统计量(
κ
\kappa
κ-statistic)
κ = p 1 − p 2 1 − p 2 \kappa=\frac{p_1-p_2}{1-p_2} κ=1−p2p1−p2
其中, p 1 p_1 p1是两个分类器取得一致的概率; p 2 p_2 p2是两个分类器偶然达成一致的概率,它们可由数据集D估算:
p 1 = a + d m p 2 = ( a + b ) ( a + c ) + ( c + d ) ( b + d ) m 2 \begin{aligned} & p_1=\frac{a+d}{m}\\ & p_2 = \frac{(a+b)(a+c)+(c+d)(b+d)}{m^2} \end{aligned} p1=ma+dp2=m2(a+b)(a+c)+(c+d)(b+d)
若两分类器在D上完全一致,则 κ = 1 \kappa = 1 κ=1;若它们仅是偶然达成一致,则 κ = 0 \kappa = 0 κ=0. κ \kappa κ通常为非负,仅在两分类器达成一致的概率甚至低于偶然概率性的情况下取负值, κ \kappa κ越大,多样性越小
以上介绍的都是 “成对型”(pairwise) 多样性度量,可以通过2维图绘制出来
3.多样性增强
-
数据样本扰动
数据样本扰动通常是基于采样法,例如在Bagging中使用自主采样法,在AdaBoost中使用序列采样。数据样本扰动法对 “不稳定基学习器” 很有效(决策树、神经网络)。有一些基学习器对数据样本扰动不敏感,称为 稳定基学习器(stable base learner) (线性学习器、支持向量机、朴素贝叶斯、k近邻学习器) -
输入属性扰动
训练样本通常是由一组属性描述,不同的“子空间”(subspace,即属性子集)提供了观察数据的不同视角。著名的随机子空间(random subspace)算法就依赖于输入属性扰动。对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差
-
输出表示扰动
此类做法的基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如 “翻转法”(Flipping Output) 随机改变一些训练样本的标记;也可对输出表示进行转化,如“输出调制法”(Output Smearing)将分类输出转化为回归输出后构建个体学习器;还可将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器 -
算法参数扰动
基学习器一般都有参数需进行设置,例如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。例如 “负相关法”(Negative Correlation) 显式地通过正则化来强制个体神经网络使用不同的参数。对参数较少的算法,可通过将其学习过程中某些环节用其他类似方式代替,从而达到扰动的目的。例如可将决策树使用的属性选择机制替换成其他的属性选择机制
不同的多样性增强机制可同时使用,随机森林同时使用了数据样本扰动和输入属性扰动,有些方法甚至同时使用了更多机制
总结
西瓜书内容不太熟悉,学习总结笔记基本全是书上内容,计划二刷过程中,补充公式推导和内容精简。