1. 集成学习的一般概念
集成学习是通过多个模型的组合来获得一个精度更高的模型来完成学习任务。参与组合的模型被称为个体学习器。集成学习的一般结构如下图所示:
即,先产生一组个体学习器,而后再用某种策略将它们结合起来。
由于将若干个体学习器集成起来,通常可以获得比单个学习器更好的泛化性能。而对弱学习器尤为显著。其中,弱学习器是指泛化性能略优于随机猜测的学习器。
为了获得泛化性能好的集成,每个个体学习器应该满足:
- 准确性:每个个体学习器要有一定的准确性。
- 多样性:学习器之间要有一定的差异,因为无差别的个体学习器集成后泛化性能几乎不会有提升。
学习器结合带来的好处:
- 学习任务的假设空间一般很大,可能有多个假设在训练集上达到同等性能,此时若使用单一学习器有可能会因误选而导致泛化性能不佳。结合多个学习器可以减小这一风险。
- 通过结合可以降低陷入泛化性能糟糕的局部极小点的风险。
- 扩大假设空间,有可能学得更好的近似。
1.1 结合策略
平均法
对回归任务而言, 我们通常用平均法:
- 简单平均法: H ( x ) = 1 T ∑ i = 1 T h i ( x ) . H(\bm{x}) = \frac{1}{T} \sum_{i=1}^{T} h_{i}(\bm{x}). H(x)=T1i=1∑Thi(x).
- 加权平均法: H ( x ) = ∑ i = 1 T ω i h i ( x ) . H(\bm{x}) = \sum_{i=1}^{T} \omega_{i} h_{i}(\bm{x}). H(x)=i=1∑Tωihi(x). 其中, ω i \omega_{i} ωi 是个体学习器 h i h_{i} hi 的权重,且 ω i ≥ 0 , \omega_{i} \ge 0, ωi≥0, ∑ i = 1 T ω i = 1. \sum_{i=1}^{T}\omega_{i} = 1. ∑i=1Tωi=1.
投票法
对分类任务而言,个体学习器 h i h_{i} hi 将从类别标记集合 { c 1 , c 2 , … , c N } \{c_{1}, c_{2}, \ldots, c_{N}\} {c1,c2,…,cN}中预测出一个标记。最常见的结合策略是投票法:令 h i j ( x ) h_{i}^{j}(\bm{x}) hij(x) 是 h i h_{i} hi 在类别标记 c j c_{j} cj 上的输出。
-
绝对多数投票法: H ( x ) = { c j , ∑ i = 1 T h i j ( x ) > 1 2 ∑ k = 1 N ∑ i = 1 T h i k ( x ) reject , otherwise . H(\bm{x}) = \begin{cases} c_{j}, & \sum_{i=1}^{T}h_{i}^{j}(\bm{x}) > \frac{1}{2} \sum_{k=1}^{N}\sum_{i=1}^{T} h_{i}^{k}(\bm{x}) \\ \text{reject}, & \text{otherwise}. \end{cases} H(x)={cj,reject,∑i=1Thij(x)>21∑k=1N∑i=1Thik(x)otherwise.
-
相对多数投票法: H ( x ) = c arg max j ∑ i = 1 T h i j ( x ) . H(\bm{x}) = c_{\mathop{\arg \max}\limits_{j} \sum_{i=1}^{T} h_{i}^{j}(\bm{x})} . H(x)=cjargmax∑i=1Thij(x).
-
加权投票法: H ( x ) = c arg max j ∑ i = 1 T ω i h i j ( x ) . H(\bm{x}) = c_{\mathop{\arg \max}\limits_{j} \sum_{i=1}^{T} \omega_{i}h_{i}^{j}(\bm{x})} . H(x)=cjargmax∑i=1Tωihij(x). 其中, ω i \omega_{i} ωi 是个体学习器 h i h_{i} hi 的权重,且 ω i ≥ 0 , \omega_{i} \ge 0, ωi≥0, ∑ i = 1 T ω i = 1. \sum_{i=1}^{T}\omega_{i} = 1. ∑i=1Tωi=1.
1.2 多样性的提高方法
- 数据样本扰动
- 输入属性扰动
- 输出表示扰动
- 算法参数扰动
目前,集成学习主要分为两大类:
- Boosting: 个体学习器间存在强依赖关系,必须串行生成的序列化方法。
- Bagging: 个体学习器间不存在强依赖关系,可同时生成的并行化方法。
2. Boosting
Boosting 算法的机制是:先从初始训练集训练得到一个个体学习器,再根据此个体学习器的表现来对训练样本的分布进行调整,重点关注被错分的样本,之后基于调整后的样本分布来训练下一个学习器,重复上述过程,直到达到个体学习器的数目 T T T.
Boosting算法的一个实现是 AdaBoost(Adaptive Boosting)算法。基于加性模型,AdaBoost的强分类器的表达式为
H
(
x
)
=
∑
i
=
1
T
α
i
f
i
(
x
)
H(\bm{x}) = \sum_{i=1}^{T} \alpha_{i} f_{i}(\bm{x})
H(x)=i=1∑Tαifi(x)
其中,
f
i
(
x
)
f_{i}(\bm{x})
fi(x) 是弱分类器,
α
i
\alpha_{i}
αi 是弱分类器的权重,
T
T
T 为弱分类器的数目。对于二分类问题,分类判定规则为
sgn
(
H
(
x
)
)
.
\text{sgn} (H(\bm{x})).
sgn(H(x)).
下面我们给出AdaBoost训练算法:
假设训练样本集为:
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
l
,
y
l
)
}
,
D = \{ (x_{1}, y_{1}), (x_{2}, y_{2}), \ldots, (x_{l}, y_{l})\},
D={(x1,y1),(x2,y2),…,(xl,yl)}, 第
t
t
t 轮迭代时数据集的样本权重记为
ω
i
t
,
(
i
=
1
,
2
,
…
,
l
)
.
\omega_{i}^{t},( i=1, 2, \ldots, l).
ωit,(i=1,2,…,l).
首先,初始化样本权重:
ω
i
0
=
1
l
,
i
=
1
,
2
,
…
,
l
.
\omega_{i}^{0} = \frac{1}{l}, \quad i = 1, 2, \ldots, l.
ωi0=l1,i=1,2,…,l.
开始循环,对
t
=
1
,
2
,
…
,
T
t=1, 2, \ldots, T
t=1,2,…,T 依次训练每个弱分类器:
训练一个弱分类器
f
t
(
x
)
f_{t}(\bm{x})
ft(x), 并计算其错误率
e
t
=
P
(
f
t
(
x
i
)
≠
y
i
)
.
e_{t} = P(f_{t}(x_{i}) \neq y_{i}).
et=P(ft(xi)=yi).
计算弱分类器的权重:
α
t
=
1
2
ln
[
1
−
e
t
e
t
]
.
\alpha_{t} = \frac{1}{2} \ln \left[\frac{1-e_{t}}{e_{t}} \right].
αt=21ln[et1−et].
更新所有样本的权重:
ω
i
t
=
1
Z
t
ω
i
t
−
1
exp
[
−
y
i
α
t
f
t
(
x
i
)
]
,
\omega_{i}^{t} = \frac{1}{Z_{t}}\omega_{i}^{t-1} \exp \left[ -y_{i} \alpha_{t} f_{t}(\bm{x}_{i})\right],
ωit=Zt1ωit−1exp[−yiαtft(xi)],
其中
Z
t
Z_{t}
Zt 为归一化因子,
Z
t
=
∑
i
=
1
l
ω
i
t
−
1
exp
[
−
y
i
α
t
f
t
(
x
i
)
]
.
Z_{t} = \sum_{i=1}^{l} \omega_{i}^{t-1} \exp \left[ -y_{i} \alpha_{t} f_{t}(\bm{x}_{i})\right].
Zt=i=1∑lωit−1exp[−yiαtft(xi)].
结束循环
最后得到强分类器:
sgn
[
H
(
x
)
]
=
sgn
[
∑
t
=
1
T
α
t
f
t
(
x
)
]
.
\text{sgn}[H(\bm{x})] = \text{sgn} \left[ \sum_{t=1}^{T} \alpha_{t} f_{t}(\bm{x})\right].
sgn[H(x)]=sgn[t=1∑Tαtft(x)].
3. Bagging
Bootstrap 抽样
Bootstrap抽样是一种有放回数据抽样方法,它从 l l l 个样本的集合中有放回地抽取 l l l 个样本形成一个数据集。
Bagging 算法
在Bootstrap抽样的基础上便可以构造Bagging(Bootstrap Aggregating)算法:
开始循环,对
i
=
1
,
2
,
…
,
T
i =1, 2, \ldots, T
i=1,2,…,T
对训练样本进行Bootstrap抽样,得到抽样后的训练样本集。
用抽样得到的训练集训练一个模型
h
i
(
x
)
.
h_{i}(\bm{x}).
hi(x).
结束循环
输出模型组合
h
1
(
x
)
,
…
,
h
T
(
x
)
,
h_{1}(\bm{x}), \ldots, h_{T}(\bm{x}),
h1(x),…,hT(x),
其中
T
T
T 为弱学习器的数目。
随机森林
当Bagging算法中的弱学习器都是决策树,便得到了随机森林。
随机森林在训练时依次训练每一颗决策树,需要注意的是:
- 每棵树的训练样本都是从原始训练集中进行随机抽样得到。
- 在训练决策树的每个节点时所用的特征也是随机抽样得到的。
具体来说,对基决策树的每个结点,先从该结点的特征集合中随机选择一个包含 k k k 个特征的子集, 然后从这个子集中选择一个最优特征用于划分。