定义

集成学习是一种机器学习范式,其中多个学习器被训练来解决相同的问题。 这与试图从训练数据中学习一个假设的普通机器学习方法相反,集成方法尝试构造一组假设并将它们结合使用。

一个集合包含一些通常被称为基础学习器的学习器。 一个集合的泛化能力通常比单个基础学习器的泛化能力强得多。 实际上,集成学习具有极大吸引力,因为它可以将弱于随机猜测的弱学习器提升为能够做出非常准确预测的强大学习器。 所以,“基础学习器”也被称为“弱学习器”。 然而,值得注意的是,尽管大多数理论分析都是针对弱学习器的,但实践中使用的基础学习器并不一定很弱,因为使用不那么薄弱的基础学习器通常会导致更好的表现。

基础学习器通常通过基础学习算法从训练数据生成,所述基础学习算法可以是决策树,神经网络或其他种类的机器学习算法。 大多数集成方法使用单一的基本学习算法来生成均匀基础学习器,但也有一些方法使用多种学习算法来生成异构学习器。 在后一种情况下,没有单一的基本学习算法,因此,有些人更喜欢称学习器为个别学习器或组件学习者为“基础学习器”,而“个别学习器”和“组件学习器”的名称也可用于同质基础学习器。

构成集合

通常情况下,集合是分两步构建的。 首先,生成许多基础学习器,这些基础学习器可以以并行样式或序列样式生成,序列样式即基础学习器的生成影响后续学习器的生成。 然后,将基础学习器结合使用,其中最流行的组合方案是用于分类的多数投票和用于回归的加权平均。

一般来说,为了获得一个好的集合,基础学习器应该尽可能地更加准确,并尽可能多样化。这已经被Krogh和Vedelsby正式表现出来,并且被许多其他人所强调。对于估计学习器的准确性有很多有效的过程,例如交叉验证,保持测试等。然而,对于直觉上认为是多样性的东西没有严格的定义。虽然已经设计了多种多样性措施,但Kuncheva和Whitaker 表示,现有的多样性措施在建设集合方面的作用是值得怀疑的。在实践中,可以从不同的渠道引入基础学习器的多样性,例如对训练样例进行二次采样,操纵属性,操纵输出,将随机性注入学习算法,甚至同时使用多种机制。采用不同的基础学习器生成过程和/或不同的组合方案导致不同的集合方法。

有许多有效的集成方法。 下面将简要介绍三种有代表性的方法,Boosting ,Bagging 和Stacking 。 这里为了简单考虑二元分类。 也就是说,设X和Y分别表示实例空间和一组类标签,假设Y = {-1;+1}中。 训练数据集D = {(x1 ; y1); (x2; y2); …; (xm; ym)}给出,其中xi∈X和yi∈Y(i = 1;….; m)。

Boosting

实际上,Boosting是一系列算法,因为它有许多变体。在这里,最着名的算法AdaBoost 被认为是一个例子。首先,它为所有训练实例分配相同的权重。将第t轮学习中权重的分布表示为Dt。从训练数据集和Dt算法生成一个基本学习器ht:X-> Y通过调用基础学习算法。然后,它使用训练样例来测试ht,并且不正确分类的例子的权重将会增加。因此,获得更新的权重分布Dt + 1。从训练数据集和Dt + 1中,AdaBoost通过再次调用基础学习算法生成另一个基础学习器。这种过程重复进行T次,每次都称为一轮,最终的学习器是通过T轮基础学习者的加权多数投票得出的,其中在训练过程中确定了学习器的权重。在实践中,基础学习算法可以是可以直接使用加权训练样例的学习算法;否则可以通过根据权重分布Dt对训练样本进行采样来利用权重。 AdaBoost的伪代码如图1所示。

Bagging

Bagging 通过调用基础学习算法来训练大量基础学习器,每个基础学习器都来自不同的bootstrap样本。 Bootstrap样本是通过对替换的训练数据集进行二次采样得到的,其中样本的大小与训练数据集的大小相同。 因此,对于bootstrap样本,可能会出现一些训练样例,但有些训练样例可能不会,例如至少出现一次样例的概率约为0.632。 在获得基础学习器后,Bagging通过多数投票将他们结合起来,并预测得票最多的类。 Bagging的伪代码如图2所示。 值得一提的是Bagging随机森林的一个变种被认为是迄今为止最强大的集合方法之一。

Stacking

在Stacking的典型实现中,通过采用不同的学习算法从训练数据集中生成许多第一级个体学习器。 这些个别学习器然后被称为元学习器的二级学习者组合。 Stacking的伪代码如图3所示。 很明显Stacking与信息融合方法有着密切的关系。

一般来说,没有一种整体方法比其他整体方法更出色。 流行的集合方法的实证研究可以在许多论文中找到。 以前,有人认为使用更多的基础学习器会导致更好的表现,但周等人证明了“许多可能比所有更好“的理论,这就表明更多的基础学习器带来更好的表现可能不是事实。 结果表明,在生成一组基础学习器之后,选择一些基础学习器而不是全部使用它们来组成一个集合是更好的选择。 这样的集合被称为选择性集合。

值得一提的是,除了分类和回归之外,集合方法也被设计用于聚类和其他类型的机器学习任务。

为什么集合优于单个

为了理解为什么一个集合的泛化能力通常比单个学习器的泛化能力强得多,Dietterich 通过观察机器学习的本质为寻找最准确假设的假设空间提供了三个理由。第一个原因是,训练数据可能无法提供足够的信息来选择单一的最佳学习器。例如,可能有许多学习器在训练数据集上的表现同样出色。因此,结合这些学习器可能是更好的选择。第二个原因是,学习算法的搜索过程可能不完善。例如,即使存在唯一的最佳假设,也可能难以实现,因为运行算法会导致次优假设。因此,集合可以弥补这种不完善的搜索过程。第三个原因是,被搜索的假设空间可能不包含真正的目标函数,而集合可以给出一些很好的近似值。例如,众所周知,决策树的分类边界是与坐标轴平行的线段。如果目标分类边界是一条光滑的对角线,则使用单个决策树不能产生良好的结果,但通过组合一组决策树可以实现良好的近似。请注意,这些是直观的,而不是严格的理论解释。

有关Boosting和Bagging等着名集合方法的理论研究很多,但对这些方法的潜在机制还没有一个清晰的认识。 例如,经验观察表明,即使经过大量循环,Boosting也不会遭受过度拟合,有时甚至能够在训练误差已经达到零之后减少泛化误差。 尽管许多研究人员已经研究了这种现象,但理论解释仍在争论中。

偏差方差分解常用于研究集合方法的性能。 众所周知Bagging可以显着减少方差,因此最好应用于遭受大方差的学习器,例如决策树或神经网络等不稳定的学习器。 除了减少方差外,Boosting可以显着减少偏差,因此,对于弱决策者如决策残块,Boosting通常更有效。

总结

集成学习是一种强大的机器学习范式,在许多应用中展现出明显的优势。 通过使用多个学习者,一个集合的泛化能力可以比单个学习者的泛化能力好得多。 目前的集合方法的严重缺陷是缺乏可理解性,即集合体所学的知识对于用户是不可理解的。 提高集合的可理解性是一个重要但尚未充分研究的方向。 另一个重要问题是目前没有多样性措施令人满意,尽管众所周知多样性在集合中起着重要作用。 如果这些问题能够得到很好的解决,集体学习将能够为更多的应用做出更多贡献。


参考文献:“Ensemble Learning” Zhi-Hua Zhou

Ensemble learning(集成学习)的更多相关文章

  1. 7. ensemble learning & AdaBoost

    1. ensemble learning 集成学习 集成学习是通过构建并结合多个学习器来完成学习任务,如下图: 集成学习通过将多个学习学习器进行结合,常可以获得比单一学习器更优秀的泛化性能 从理论上来 ...

  2. 6. Ensemble learning & AdaBoost

    1. ensemble learning 集成学习 集成学习是通过构建并结合多个学习器来完成学习任务,如下图: 集成学习通过将多个学习学习器进行结合,常可以获得比单一学习器更优秀的泛化性能 从理论上来 ...

  3. Ensemble_learning 集成学习算法 stacking 算法

    原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学 ...

  4. 机器学习:集成学习:随机森林.GBDT

    集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测 ...

  5. 第七章——集成学习和随机森林(Ensemble Learning and Random Forests)

    俗话说,三个臭皮匠顶个诸葛亮.类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果.一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Le ...

  6. 7. 集成学习(Ensemble Learning)Stacking

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  7. 6. 集成学习(Ensemble Learning)算法比较

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  8. 5. 集成学习(Ensemble Learning)GBDT

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  9. 3. 集成学习(Ensemble Learning)随机森林(Random Forest)

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

随机推荐

  1. Enum,int,string类型互转

    举例:enum Colors { Red, Green, Blue, Yellow }; Enum-->String (1)利用Object.ToString()方法:如Colors.Green ...

  2. 用户输入URL后发生了什么,以及优化问题

    用户角度:1.打开浏览器2.输入URL3.按下回车4.浏览器呈现画面 当用户输入页面地址后,浏览器获得用户希望访问的地址,便向该站点服务器发起一系列的请求,这些请求不光包括对页面的请求,还包括对页面中 ...

  3. linux学习一个服务(未完)

    学习一个服务的过程 1.了解服务的作用:名字 功能,特点 2.安装 3.配置文件位置,端口 4.服务启动关闭的脚本 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上,从内到外)

  4. C++语言基础(19)-模板的显式具体化

    应用背景: 例如有下面的函数模板,它用来获取两个变量中较大的一个: template<class T> const T& Max(const T& a, const T&a ...

  5. wb标准

    1. WEB标准 WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior).对应的标准也分三方面:结 ...

  6. error: memcached support requires ZLIB. Use --with-zlib-dir=<DIR> to specify the prefix where ZLIB

    yum install zlib-devel

  7. 5.25思考双向绑定为什么容易接收js的方式

    一直在考虑为什么html上面的双向绑定好像比winform上面的好用. 那是因为html可以输入任意的东西,不会有问题.而winform不行.这样导致了.html可以比较直观的处理这类需求. 举个例子 ...

  8. if not aa 表示如果aa等于空就是true 相当于if not aa 相当于 if aa== 空

    aa='tt' print(not aa) #表示 bb是空的 not 表示空 bb='' print(not bb)

  9. python 案例:使用BeautifuSoup4的爬虫

    我们以腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifuSoup4解析器,将招聘网页上的职位名称.职位类别 ...

  10. Fibonacci series(斐波纳契数列)的几种常见实现方式

    费波那契数列的定义: 费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数.斐波那契数列.斐波那契数列.黄金切割数列. 在数学上,费波那契数列是以递归的方法来定义 ...