集成学习
集成学习(ensemble learning):构建并结合多个学习器来完成学习任务。
集成学习通过将多个学习器结合,常可获得比单一学习器显著优越的泛化性能。但想获得好的集成,个体学习器应“好而不同”,即准确性、多样性。
数学验证
考虑二分类问题 y ∈ { − 1 , + 1 } y\in\left \{-1,+1 \right \} y∈{−1,+1} 和真实函数 f f f,假设基分类器错误率为 ϵ \epsilon ϵ,即对每个基分类器 h i h_i hi 有: P ( h i ( x ) ≠ f ( x ) ) = ϵ P(h_i(x)\ne f(x))=\epsilon P(hi(x)=f(x))=ϵ
若集成通过简单投票法结合 T T T 个基分类器,若有超过半数的基分类器正确,则集成分类就正确: H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x)=sign(\sum_{i=1}^{T}h_i(x) ) H(x)=sign(i=1∑Thi(x))
假设基分类器的错误率相互独立,则由Hoeffding不等式可知,集成的错误率为: P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 [ T 2 ] ( 1 − ϵ ) k ϵ T − k ≤ e x p ( − 1 2 T ( 1 − 2 ϵ ) 2 ) P(H(x) \ne f(x))=\sum_{k=0}^{\left [ \frac{T}{2} \right ] }(1-\epsilon)^k \epsilon^{T-k}\le exp(-\frac{1}{2}T(1-2\epsilon)^2) P(H(x)=f(x))=k=0∑[2T](1−ϵ)kϵT−k≤exp(−21T(1−2ϵ)2)
这表明,随着集成中个体分类器数目 T T T 的增大,集成的错误率将指数级下降,最终趋于0。
问题:我们假设基学习器的误差相互独立,但现实任务里,个体学习器是为解决同一个问题训练出来的,显然不独立。
于是问题在于我们如何找到“好而不同”的个体学习器?
集成学习的分类
Boosting
工作机制:
先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;重复进行直至基学习器数目达到事先指定的值
T
T
T,最后将
T
T
T个基学习器加权结合。
AdaBoost
基于“加性模型”,即基学习器的线性组合:
H
(
x
)
=
∑
t
=
1
T
α
t
h
t
(
x
)
H(x)=\sum_{t=1}^{T}\alpha_th_t(x)
H(x)=t=1∑Tαtht(x)
最小化指数损失函数:
ℓ
e
x
p
(
H
∣
D
)
=
E
x
∼
D
[
e
−
f
(
x
)
H
(
x
)
]
\ell_{exp}(H|D)=\mathbb{E}_{x\sim D}\left [ e^{-f(x)H(x)} \right ]
ℓexp(H∣D)=Ex∼D[e−f(x)H(x)]
从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建很强的集成。
Bagging
自助采样法: 给定包含 m m m个样本的数据集,先随机去除一个样本放入采样机,再把该样本放回初始数据集时期下次仍可能被选中,经过 m m m次随机采样,得到 m m m个样本的采样集,初始训练集中有的样本在采样集里多次出现有的从未出现,初始训练集中约有 63.2 63.2% 63.2的样本出现在采样集中。
Bagging的学习机制: 采样出 T T T个含 m m m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,将基学习器结合。对预测输出结合时,对分类任务使用简单投票法,对回归任务使用简单平均法。
- 假定基学习器计算复杂度 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 T T都很小,故近似同阶,于是bagging是一个很高效的集成学习算法。
- 与标准AdaBoost只适用二分类任务不同,Bagging能不经修改的用于多分类、回归等任务。
- 由于每个基学习器只使用了
63.2
63.2%
63.2的样本,剩下样本可用作验证集对泛化性能进行
包外估计
。
从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等一首样本扰动的学习器上效用更明显。
随机森林
随机森林(Random Forest)简称RF,是Bagging的一个扩展变体,它在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树训练中引入了随机属性选择。
与Bagging基学习器的“多样性”仅仅通过样本扰动(对初始训练集采样)而来不同,随机森林的基学习器多样性不仅来自样本扰动还来自属性扰动,这使得它泛化性能进一步提升。
结合策略
- 平均法
- 投票法
- 学习法
Stacking
先从初始数据集训练出初始学习器,生成一个新数据集用于训练次级学习器,在新数据集中初级学习器的输出被当作样例输入特征,初始样本的标记被当作样例标记。