1.集成学习概述
简单来说,集成学习(Ensemble Learning)就是指采用多个弱分类器组成一个强分类器,然后,对数据进行预测,提高整个分类器的泛化能力。这里的弱分类器可以非常弱,只要其准确率大于50%就可以(即比随意猜的准确率大就可以)
和传统学习方法训练一个学习器不同,集成学习方法训练多个学习器并结合它们来解决一个问题。通常,集成学习也被称为基于委员会的学习或多分类器系统。
一个集成由多个基学习器构成,而基学习器由基学习算法在训练数据上训练获得,它们可以是决策树、神经网络或其他学习算法。下图给出一个通用的集成学习框架:
通常,集成具有比基学习器更强的泛化能力。实际上,集成学习之所以那么受关注,很大程度上是因为它们能够把比随机猜稍好的弱学习器变成可以精确预测的强学习器。因此,在集成学习中基学习器也称为弱学习器。
在集成学习中有两个主要的问题需要解决,第一是如何得到若干个基学习器,第二是如何选择一种结合策略,将若干个基学习器集成为一个强学习器.
2.集成学习之基学习器
对于如何得到基学习器,我们一般有两种选择:
- 第一种就是所有的基学习器都是一个种类的,或者说是同质的.比如基学习器都是决策树或者都是神经网络.
- 第二种是所有的基学习器不全是一个种类的,或者说是异质的.比如基学习器中包括支持向量机,逻辑回归,朴素贝叶斯等等.
目前来说,同质集成的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质基学习器.而同质个体学习器使用最多的模型是CART决策树和神经网络.
根据基学习器的生成方式,集成学习方法有两种范式:
- 串行生成基学习器,基学习器之间存在强依赖关系.串行集成方法的基本动机是利用基学习器之间的相关性.代表算法是boosting系列算法,如Adaboost.
- 并行生成基学习器,基学习器之间不存在强依赖关系.并行集成方法的基本动机是利用基学习器之间的独立性.代表算法是bagging系列算法,如随机森林.
3.Bagging
Bagging采用自助采样法,通过随机改变训练集的分布产生新的训练子集,然后分别用不同的训练子集来训练生成基学习器,最后将其集成为一个整体.
具体来讲,给定一个样本数为m的训练集合,它通过有放回的采用得到有m个训练样本的采样集.原始样本有的被选中多次,有的未被选中.重复过程T次,得到T个样本数目为m的训练子集,对每个训练子集使用基学习算法训练得到一个基分类器.
bagging采用最常用的方法来聚合基学习器,即:在分类任务上投票,在回归任务上取均值.
下面给出Bagging算法流程图:
4.Boosting
Boosting算法是一种将弱学习器转换为强学习器的迭代方法,它通过增加迭代次数,产生一个表现接近完美的强学习器.其中,弱学习器是指分类效果只比随机猜测效果稍好的学习器,即分类准确率略高于50%. 在实际训练中,获得一个弱学习器比获得一个强学习器更加容易.
下图给出Boosting算法流程图:
如图所示,Boosting算法反复运行一个弱学习器来处理不同分布的训练数据,然后按照顺序将每次产生的弱学习器组合成一个强学习器.
5.结合策略
5.1 均值法
-
简单平均法:直接对个体学习器的输出取均值来获取结合输出结果。
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^T h_{i}(x) H(x)=