集成学习(Ensemble Learning)/多分类系统(Multi-Classifier System)/基于委员会的学习(Community-based Learning)
1. 概念
通过合并多个学习器来完成学习任务
同质学习器中的的个体学习器,叫基学习器,算法叫基学习算法,异质学习器中的个体学习器叫“组件”或直接叫“个体学习器”,算法也不是基学习算法。
2. 特点
一般情况,集成学习要求个体学习器要具有“多样性”和“准确性”,但是问题在于“多样性”和“准确性”本身就会有冲突,在实际情况下,如果想产生“好而不同”的分类结果,提高准确性的前提下,必须牺牲多样性。
3. 分类
根据个体学习器的分类方式,可分类两大类:
- 个体学习器之间存在依赖关系,必须串行执行的序列化方法,代表是Boosting
- 个体学习器之间不存在依赖关系,或者说弱依赖,可以同时并行生成的方法,代表是Bagging和随机森林
4. Boosting(串行集成)
Boosting是一簇让弱学习器转化为强学习器的算法。机制为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本的分布进行调整使得先前基学习器做错的训练样本在后续得到更多的关注,然后基于调整后的样本分布进行训练下一个学习器;如此重复,指导基学习器的数量达到阈值 T T T,最终将这 T T T个学习器进行加权结合。
最具有代表性的Boosting算法是AdaBoost,数学表示为:
P
(
H
(
x
⃗
)
≠
f
(
x
⃗
)
)
=
∑
k
=
0
T
/
2
(
k
T
)
(
1
−
ϵ
)
k
ϵ
T
−
k
P(H(\vec x) \neq f(\vec x)) = \displaystyle \sum^{T/2}_{k=0}\Big(^{T}_{k}\Big)(1-\epsilon)^k\epsilon^{T-k}
P(H(x)̸=f(x))=k=0∑T/2(kT)(1−ϵ)kϵT−k
(8.3)
≤
e
x
p
(
−
1
2
T
(
1
−
2
ϵ
)
2
)
\leq exp\Big(-\frac{1}{2}T(1-2\epsilon)^2\Big)\tag{8.3}
≤exp(−21T(1−2ϵ)2)(8.3)
其中
y
i
∈
{
−
1
,
1
}
y_i \in\{-1, 1\}
yi∈{−1,1},
f
f
f是真是函数。
Adaboost有多种推导方式,比较容易理解的是基于“加性模型”(aditive model),也就是机器学习的线性组合:
(8.4)
H
(
x
⃗
)
=
∑
t
=
1
T
α
t
h
t
(
x
⃗
)
H(\vec x) = \sum^T_{t=1} \alpha_th_t(\vec x)\tag{8.4}
H(x)=t=1∑Tαtht(x)(8.4)
来最小化指数损失函数:
(8.5)
l
e
x
p
(
H
∣
D
)
=
E
x
∼
D
[
e
−
f
(
x
⃗
)
H
(
x
⃗
)
]
l_{exp}(H|D)= \mathbb E_{x\sim D}[e^{-f(\vec x)H(\vec x)}]\tag{8.5}
lexp(H∣D)=Ex∼D[e−f(x)H(x)](8.5)
(注:
x
x
x在
D
D
D中损失为所有基学习器之和的均值(期望)
E
⋅
∈
D
[
f
(
⋅
)
]
\mathbb E_{· \in D_{[f(·)]}}
E⋅∈D[f(⋅)]表示函数
f
(
x
)
f(x)
f(x)对·在分布
D
D
D下的数学期望)
若
H
(
x
⃗
)
H(\vec x)
H(x)能令指数损失函数最小化,则在
(
8.5
)
(8.5)
(8.5)中对
H
(
x
)
H(x)
H(x)求偏导:
∂
l
e
x
p
(
H
∣
D
)
∂
H
(
x
)
=
e
−
f
(
x
⃗
)
H
(
x
⃗
)
(
−
f
(
x
⃗
)
)
\frac{\partial{l_{exp}(H|D)}}{\partial{H(x)}} = e^{-f(\vec x)H(\vec x)}(-f(\vec x))
∂H(x)∂lexp(H∣D)=e−f(x)H(x)(−f(x))
=
−
f
(
x
⃗
)
e
−
f
(
x
⃗
)
H
(
x
⃗
)
=-f(\vec x)e^{-f(\vec x)H(\vec x)}
=−f(x)e−f(x)H(x)
当
f
(
x
⃗
)
f(\vec x)
f(x)分别为
−
1
,
1
{-1, 1}
−1,1时则:
(8.6)
=
−
e
−
H
(
x
⃗
)
P
(
f
(
x
)
=
1
∣
x
⃗
)
+
e
H
(
x
⃗
)
P
(
f
(
x
)
=
−
1
∣
x
⃗
)
=-e^{-H(\vec x)}P(f(x) = 1| \vec x) + e^{H(\vec x)}P(f(x) = -1| \vec x) \tag{8.6}
=−e−H(x)P(f(x)=1∣x)+eH(x)P(f(x)=−1∣x)(8.6)
另
(
8.6
)
(8.6)
(8.6)为
0
0
0可得:
(8.7)
H
(
x
⃗
)
=
1
2
l
n
P
(
f
(
x
)
=
1
∣
x
⃗
)
P
(
f
(
x
)
=
−
1
∣
x
⃗
)
H(\vec x)=\frac{1}{2}ln{\frac {P(f(x) = 1 | \vec x)}{P(f(x) = -1 | \vec 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
⃗
)
)
sign(H(x)) = sign\Big(\frac {1}{2}ln\frac{P(f(x) = 1 | \vec x)}{P(f(x) = -1 | \vec x)}\Big)
sign(H(x))=sign(21lnP(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
⃗
)
= \Big\{^{1 \ P(f(x)=1|\vec x) > P(f(x) = -1| \vec x)} _{-1\ P(f(x)=1|\vec x) < P(f(x) = -1| \vec x)}
={−1 P(f(x)=1∣x)<P(f(x)=−1∣x)1 P(f(x)=1∣x)>P(f(x)=−1∣x)
(8.8)
=
a
r
g
m
a
x
y
∈
{
−
1
,
1
}
P
(
f
(
x
)
=
y
∣
x
⃗
)
=argmax_{y \in \{-1, 1\}}P(f(x) = y | \vec x)\tag{8.8}
=argmaxy∈{−1,1}P(f(x)=y∣x)(8.8)
这就意味着
H
(
x
⃗
)
H(\vec x)
H(x)达到了贝叶斯最优错误率。也就是说,如果指数损失函数最小化,则分类错误率也将最小化;这说明指数损失函数是分类任务原本0/1损失函数一致的代替损失函数。由于这个代替的损失函数有更好的数学性质(可微)因此常会用指数损失作为优化目标。
4.1 Adaboost的算法原理
4.1.1 计算第一个基分类器并进行权重更新
在算法中,第一个基分类器
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_th_t
αtht最小化指数损失函数。
l
e
x
p
(
α
t
h
t
∣
D
t
)
=
E
x
⃗
∼
D
t
[
e
−
f
(
x
)
α
t
h
t
(
x
⃗
)
]
l_{exp}(\alpha_th_t|D_t) = \mathbb E_{\vec x\sim D_t}\Big[e^{-f(x)\alpha_th_t(\vec x)} \Big]
lexp(αtht∣Dt)=Ex∼Dt[e−f(x)αtht(x)]
=
E
x
⃗
∼
D
t
[
e
−
α
t
I
(
f
(
x
⃗
)
=
h
(
x
⃗
)
)
+
e
α
t
I
(
f
(
x
⃗
)
≠
h
(
x
⃗
)
)
]
= \mathbb E_{\vec x \sim D_t}[e^{-\alpha_t}\mathbb I (f(\vec x) = h(\vec x)) +e^{\alpha_t}\mathbb I (f(\vec x) \neq h(\vec x))]
=Ex∼Dt[e−αtI(f(x)=h(x))+eαtI(f(x)̸=h(x))]
=
e
−
α
t
P
x
⃗
∼
D
(
f
(
x
⃗
)
=
h
(
x
⃗
)
)
+
e
α
t
P
x
⃗
∼
D
(
f
(
x
⃗
)
≠
h
(
x
⃗
)
)
=e^{-\alpha_t}P_{\vec x\sim D}(f(\vec x) = h(\vec x)) +e^{\alpha_t}P_{\vec x\sim D}(f(\vec x) \neq h(\vec x))
=e−αtPx∼D(f(x)=h(x))+eαtPx∼D(f(x)̸=h(x))
(8.9)
=
e
−
α
t
(
1
−
ϵ
t
)
+
e
α
t
ϵ
t
=e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha _t}\epsilon_t\tag{8.9}
=e−αt(1−ϵt)+eαtϵt(8.9)
其中
ϵ
t
=
P
x
⃗
∼
D
(
f
(
x
⃗
)
≠
h
(
x
⃗
)
)
\epsilon_t=P_{\vec x\sim D}(f(\vec x) \neq h(\vec x))
ϵt=Px∼D(f(x)̸=h(x))。考虑指数损失函数的导数
(8.10)
∂
l
e
x
p
(
α
t
h
t
∣
D
)
∂
α
t
=
−
e
−
α
t
(
1
−
ϵ
)
+
e
α
t
ϵ
t
\frac{\partial l_{exp}(\alpha_th_t|D)}{\partial\alpha_t} = -e^{-\alpha_t}(1-\epsilon)+e^{\alpha_t}\epsilon_t\tag{8.10}
∂αt∂lexp(αtht∣D)=−e−αt(1−ϵ)+eαtϵt(8.10)
另
(
8.10
)
(8.10)
(8.10)为0可得:
(8.11)
α
t
=
1
2
l
n
(
1
−
ϵ
t
ϵ
t
)
\alpha_t = \frac{1}{2}ln\Big(\frac{1-\epsilon_t}{\epsilon_t}\Big)\tag{8.11}
αt=21ln(ϵt1−ϵt)(8.11)
(
8.11
)
(8.11)
(8.11)为分类器中的权重更新公式
(注:
I
(
⋅
)
\mathbb I(·)
I(⋅)为指示函数,在·为真和假时分别取值为1和0),上式中对所有
x
∼
D
x\sim D
x∼D*的值进行0,1计算后求均值,等同于求概率
P
P
P
P
x
⃗
∼
D
P_{\vec x\sim D}
Px∼D为概率质量函数
4 .1.2 根据前面 H t − 1 H_{t-1} Ht−1个基分类器后调整样本分布及损失最小化
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的全部错误,即最小化。
l
e
x
p
(
H
t
−
1
+
h
t
∣
D
)
=
E
x
⃗
∼
D
[
e
−
f
(
x
⃗
)
(
H
t
−
1
(
x
⃗
)
+
h
t
(
x
⃗
)
)
]
l_{exp}(H_{t-1}+h_t | D)=\mathbb E_{\vec x\sim D}[e^{-f(\vec x)(H_{t-1}(\vec x)+h_t(\vec x))}]
lexp(Ht−1+ht∣D)=Ex∼D[e−f(x)(Ht−1(x)+ht(x))]
(8.12)
=
E
x
⃗
∼
D
[
e
−
f
(
x
⃗
)
H
t
−
1
(
x
⃗
)
−
f
(
x
⃗
)
h
t
(
x
⃗
)
]
=\mathbb E_{\vec x \sim D}[e^{-f(\vec x)H_{t-1}(\vec x)-f(\vec x)h_t(\vec x)}]\tag{8.12}
=Ex∼D[e−f(x)Ht−1(x)−f(x)ht(x)](8.12)
根据泰勒展开式近似计算之后得到理想的学习器为:
h
t
(
x
⃗
)
=
a
r
g
m
i
n
h
l
e
x
p
(
H
t
−
1
+
h
∣
D
)
h_t(\vec x)=argmin_hl_{exp}(H_{t-1}+h|D)
ht(x)=argminhlexp(Ht−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
)
]
=argmin_h \mathbb E_{\vec x\sim D}\Big[e^{-f(\vec x)H_{t-1}(\vec x)}(1-f(\vec x)h(\vec x)+\frac{1}{2}) \Big]
=argminhEx∼D[e−f(x)Ht−1(x)(1−f(x)h(x)+21)]
=
a
r
g
m
a
x
h
E
x
⃗
∼
D
[
e
−
f
(
x
⃗
)
h
t
−
1
(
x
⃗
)
]
=argmax_h\mathbb E_{\vec x\sim D}[e^{-f(\vec x)h_{t-1}(\vec x)}]
=argmaxhEx∼D[e−f(x)ht−1(x)]
(8.14)
=
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
⃗
)
]
=argmax_h \mathbb E_{\vec x\sim D}\Bigg[\frac{e^{-f(\vec x)H_{t-1}(\vec x)}}{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t-1}(\vec x)}]}f(\vec x)h(\vec x) \Bigg]\tag{8.14}
=argmaxhEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)](8.14)
注意到
E
x
⃗
∼
D
[
e
−
f
(
x
⃗
)
H
t
−
1
(
x
⃗
)
]
\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t-1}(\vec x)}]
Ex∼D[e−f(x)Ht−1(x)]为常数,另
D
t
D_t
Dt表示分布:
(8.15)
D
t
(
x
⃗
)
=
D
x
⃗
e
−
f
(
x
⃗
)
H
t
−
1
(
x
⃗
)
E
x
⃗
∼
D
[
e
−
f
(
x
⃗
)
H
t
−
1
(
x
⃗
)
]
D_t(\vec x)=\frac{D_{\vec x}e^{-f(\vec x)H_{t-1}(\vec x)}}{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t-1}(\vec x)}]}\tag{8.15}
Dt(x)=Ex∼D[e−f(x)Ht−1(x)]Dxe−f(x)Ht−1(x)(8.15)
则根据数学期望的定义,上式等价于
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
⃗
)
]
h_t{\vec x}=argmax_h\mathbb E_{\vec x\sim D}\Bigg[\frac{e^{-f(\vec x)H_{t-1}(\vec x)}}{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t-1}(\vec x)}]}f(\vec x)h(\vec x) \Bigg]
htx=argmaxhEx∼D[Ex∼D[e−f(x)Ht−1(x)]e−f(x)Ht−1(x)f(x)h(x)]
(8.16)
=
a
r
g
m
a
x
h
E
x
⃗
∼
D
[
f
(
x
⃗
)
h
(
x
⃗
)
]
=argmax_h\mathbb E_{\vec x\sim D}[f(\vec x)h(\vec x)]\tag{8.16}
=argmaxhEx∼D[f(x)h(x)](8.16)
由
f
(
x
⃗
)
,
h
(
x
⃗
)
∈
{
−
1
,
1
}
f(\vec x),h(\vec x) \in \{-1, 1\}
f(x),h(x)∈{−1,1},有
(8.17)
f
(
x
⃗
)
h
(
x
⃗
)
=
1
−
2
I
(
f
(
x
⃗
)
≠
h
(
x
⃗
)
)
f(\vec x)h(\vec x)=1-2\mathbb I(f(\vec x) \neq h(\vec x))\tag{8.17}
f(x)h(x)=1−2I(f(x)̸=h(x))(8.17)
则理想的基学习器:
(8.18)
h
t
(
x
⃗
)
=
a
r
g
m
i
n
h
E
x
⃗
∼
D
t
[
I
(
f
(
x
⃗
)
≠
h
(
x
⃗
)
)
]
h_t(\vec x)=argmin_h \mathbb E_{\vec x \sim D_t}[\mathbb I(f(\vec x)\neq h(\vec x))]\tag{8.18}
ht(x)=argminhEx∼Dt[I(f(x)̸=h(x))](8.18)
由此可见,理想的
h
t
h_t
ht将在分布
D
t
D_t
Dt下最小化分类误差,因此弱分类器将基于分布
D
t
D_t
Dt来训练,另外
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_{t+1}(\vec x)=\frac{D_{\vec x}e^{-f(\vec x)H_{t}(\vec x)}}{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t}(\vec x)}]}
Dt+1(x)=Ex∼D[e−f(x)Ht(x)]Dxe−f(x)Ht(x)
(8.19)
=
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
⃗
)
]
=D_t(\vec x)·e^{-f(\vec x)\alpha_th_t(\vec x)\frac{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_{t-1}(\vec x)}]}{\mathbb E_{\vec x\sim D}[e^{-f(\vec x)H_t(\vec x)}]}}\tag{8.19}
=Dt(x)⋅e−f(x)αtht(x)Ex∼D[e−f(x)Ht(x)]Ex∼D[e−f(x)Ht−1(x)](8.19)
(
8.19
)
(8.19)
(8.19)为样本分布的更新公式。
目前为止,从8.11和8.19可见,从基于加性模型迭代式优化指数损失函数的角度导出了Adaboost算法.
4.2 注意
Boosting算法要求基学习器对特定的数据分布进行学习,可以通过“重赋权法”实施,即在每一轮的训练过程中,根据样本分布为每个训练样本重新赋予一个权重。
对于无法接受带权样本的基学习算法,可通过“重采样法”进行处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,在用重采样而得的样本对基学习器进行训练。
需要注意的是,Boosting算法在训练的每一轮都会检查当前生成的基学习器是否满足条件,一旦不满足学习器就会被抛弃,且学习过程停止,在这种情况下,初始设置的学习轮数 T T T还没达到设定值,导致性能不佳,如果采用“重采样”,可以获得“重启动机会”,避免过早结束,即在抛弃不满足条件的基学习器之后,可根据当前分布进行重采样,再基于新的采样结果训练新的基学习器。
从偏差-方差角度看,Boosting主要关注降低偏差。
5 Bagging和随机森林(并行集成)
5.1 Bagging(Bootstrap AGGrepatING)
5.1.1 Bagging是并行集成学习方法的代表,方法步骤为:
- 给定一个含有 m m m个样本的数据集,随机抽取样本放入采样集中,然后再将该样本放回到初始数据集中
- 进行 m m m次随机采样操作,得到一个包含 m m m个样本的采样集
- 持续采样,采样出 T T T个包含 m m m个训练样本的采样集
- 针对每个采样集,训练一个基学习器,然后再将基学习器进行结合
- 根据任务要求对输出做处理:分类用投票法,回归用简单平均法
Bagging集成的计算复杂度大致为 O ( m ) O(m) O(m)与计算一个基学习器的复杂度同阶,另外Adaboost只适用于二分类,但Bagging可以用于多分类个回归
优点:由于是有放回的采样,所以基学习器只使用了 63.2 % 63.2\% 63.2%初始数据集样本量,剩下的 32.8 % 32.8\% 32.8%可用于“包外估计”
5.1.2 “包外估计”(out-of-bag estimate)
不妨另
D
t
D_t
Dt表示
h
t
h_t
ht实际使用的样本集,
H
o
o
b
(
x
⃗
)
H^{oob}(\vec x)
Hoob(x)表示对样本
x
⃗
\vec x
x的包外预测,即仅考虑那些未使用
x
⃗
\vec x
x训练的基学习器在
x
⃗
\vec x
x上的预测,有:
(8.20)
H
o
o
b
(
x
⃗
)
=
a
r
g
m
a
x
y
∈
γ
∑
t
=
1
T
I
(
h
t
(
x
⃗
)
=
y
⋅
I
(
x
⃗
∉
D
t
)
)
H^{oob}(\vec x)=argmax_{y\in \gamma}\sum^T_{t=1}\mathbb I(h_t(\vec x)=y·\mathbb I(\vec x \notin D_t))\tag{8.20}
Hoob(x)=argmaxy∈γt=1∑TI(ht(x)=y⋅I(x∈/Dt))(8.20)
则Bagging泛化误差的包外估计为:
(8.21)
ϵ
o
o
b
=
1
∣
D
∣
∑
(
x
,
y
∈
D
)
I
(
H
o
o
b
(
x
⃗
)
∉
γ
)
\epsilon^{oob}=\frac{1}{|D|}\sum_{(x,y\in D)}\mathbb I(H^{oob}(\vec x)\notin \gamma)\tag{8.21}
ϵoob=∣D∣1(x,y∈D)∑I(Hoob(x)∈/γ)(8.21)
包外估计的其他用途:
- 当基学习器是决策树时:1)辅助剪枝;2)估计决策树中各节点的后验概率以辅助对零训练样本节点的处理
- 当基学习器是神经网络时:辅助早期停止,减少过拟合风险
从偏差-方差角度看,Bagging主要用于降低方差。
5.2 随机森林(Random Forest,RF)
随机森林是Bagging的扩展变体,在以基学习器构建Bagging的基础上,进一步在决策树的训练过程中随机属性选择,具体来说就是,传统决策时在选择划分属性时,是在当前节点的属性集合(假设有 d d d个属性)中找出最优属性;而在RF中:
- 对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含 k k k个属性的子集
- 从这个子集中选出最优属性用于划分,这里的 k k k控制随机性的引入程度,如果 k = d k=d k=d就是传统的决策树,如果 k = 1 k=1 k=1表示随机抽取一个属性进行划分;一般情况 k = l o g 2 d k = log_2^d k=log2d
6 Bagging和Boosting的区别
- (样本集角度)bagging的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果;
- (权重角度)bagging的每个预测函都没有权重;而boosting根据每一次训练的训练误差得到该次预测函数的权重
- (预测角度)bagging的各个预测函数可以并行生成;而boosting只能顺序生成。(对于神经网络这样极为耗时的学习方法,bagging可通过并行训练节省大量时间开销)
7 结合策略
优点:
- 提高泛化性
- 降低局部极小点的风险
- 更加接近真实的假设空间
7.1 平均法
对数值型输出 h i ( x ⃗ ) ∈ R h_i(\vec x) \in \mathbb R hi(x)∈R最常用平均法
7.1.1 简单平均法
(8.22) H ( x ⃗ ) = 1 T ∑ i = 1 T h i ( x ⃗ ) H(\vec x) = \frac{1}{T}\sum^T_{i=1}h_i(\vec x)\tag{8.22} H(x)=T1i=1∑Thi(x)(8.22)
7.1.2 加权平均法
(8.23)
H
(
x
⃗
)
=
∑
i
=
1
T
ω
i
h
i
(
x
⃗
)
H(\vec x)=\sum^T_{i=1}\omega_ih_i(\vec x)\tag{8.23}
H(x)=i=1∑Tωihi(x)(8.23)
一般情况下,要求
ω
>
0
\omega>0
ω>0,且
∑
i
=
1
T
ω
i
=
1
\sum^T_{i=1}\omega_i = 1
∑i=1Tωi=1代表对每个基学习器加入的权重。
7.1.3 适用范围
一般情况下,个体学习器性能相差较大时,使用加权平均,个体学习器性能相近是使用简单平均法
7.2 投票法
对分类任务来说,学习器 h i h_i hi将从类别标记集合 { c 1 , c 2 , c 3 , c N } \{c_1, c_2, c_3, c_N\} {c1,c2,c3,cN}中预测出一个标记,最常见的就是投票法
定义:将 h i h_i hi在样本 x ⃗ \vec x x上的预测输出定义为一个 N N N维向量 { h i 1 ( x ⃗ ) , h i 2 ( x ⃗ ) , h i N ( x ) } \{h_i^1(\vec x), h_i^2(\vec x), h_i^N(x)\} {hi1(x),hi2(x),hiN(x)},其中, h i j h_i^j hij表示学习器 h i h_i hi在类别 c j c_j cj上的输出。
7.2.1 绝对多数投票法
(8.24)
H
(
x
⃗
)
=
{
r
e
j
e
c
t
,
o
t
h
e
r
w
i
s
e
c
j
,
i
f
∑
i
=
1
T
h
i
j
(
x
⃗
)
>
0.5
∑
k
=
1
N
∑
i
=
1
T
h
i
k
(
x
⃗
)
H(\vec x) = \Bigg\{^{c_j,\qquad if \displaystyle\sum^T_{i=1}h_i^j(\vec x)>0.5\displaystyle\sum_{k=1}^N\sum^T_{i=1}h_i^k(\vec x) }_{reject,\qquad otherwise}\tag{8.24}
H(x)={reject,otherwisecj,ifi=1∑Thij(x)>0.5k=1∑Ni=1∑Thik(x)(8.24)
若某标记得票数过半,则预测为该标记,否则拒绝预测
7.2.2 相对多数投票法
(8.25)
H
(
x
⃗
)
=
c
a
r
g
m
a
x
j
∑
i
=
1
T
h
i
j
(
x
⃗
)
H(\vec x)=c_{argmax_j\sum^T_{i=1}h^j_i(\vec x)}\tag{8.25}
H(x)=cargmaxj∑i=1Thij(x)(8.25)
预测为得票最多的标记,若同时有标记得票最高,则从中随机选出一个
7.2.3 加权投票法
(8.26)
H
(
x
⃗
)
=
c
a
r
g
m
a
x
j
∑
i
=
1
T
ω
i
h
i
j
(
x
⃗
)
H(\vec x)=c_{argmax_j\sum^T_{i=1}\omega_ih_i^j(\vec x)}\tag{8.26}
H(x)=cargmaxj∑i=1Tωihij(x)(8.26)
与加权平均法类似,要求
ω
>
0
\omega>0
ω>0,且
∑
i
=
1
T
ω
i
=
1
\sum^T_{i=1}\omega_i = 1
∑i=1Tωi=1代表对
h
i
h_i
hi的权重。
7.2.4投票方式比较
绝对多数投票应用于可靠性要求较高的学习任务中,如果学习任务要求必须有预测结果,则得选择后两种作方式。
(
2.4
)
∼
(
2.6
)
(2.4)\sim(2.6)
(2.4)∼(2.6)中没有限制个体学习器输出值了类型一般有:
- 类标记: h i j ( x ⃗ ) ∈ { 0 , 1 } h^j_i(\vec x)\in \{0, 1\} hij(x)∈{0,1},若 h i h_i hi将样本 x x x预测为 c j c_j cj,则取值1,反之,取0,称为“硬投票”
- 类概率: h i j ( x ⃗ ) ∈ [ 0 , 1 ] h^j_i(\vec x)\in [0, 1] hij(x)∈[0,1],相当于对后验概率 P ( c j ∣ x ⃗ ) P(c_j|\vec x) P(cj∣x)的一个估计,称为“软投票”
7.3 学习法
学习法是通过与另一个学习器结合的策略,Stacking是学习法的代表,其中个体学习器称为初级学习器(可以是同质的也可以是异质的),用于结合的学习器称为次级学习器步骤:
- Stacking先从初始训练集中训练处初级学习器
- . 然后“生成”一个新的数据集用预训练次级学习器。在新的训练集中,初级学习器的输出被当做样例输入特征,初始样本的标记作为样例标记
8 多样性
8.1 误差-分歧分解
8.2 多样性度量
- 不合度量
- Q-统计量
- k-统计量
- 相关系数
8.3多样性增强
- 数据样本扰动
- 输入属性扰动
- 输出表示扰动
- 算法参数扰动
参考链接
https://www.jianshu.com/p/ee39d1b15471
周志华 机器学习(西瓜书)