定义

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

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

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

构成集合

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

一般来说,为了获得一个好的集合,基础学习器应该尽可能地更加准确,并尽可能多样化。这已经被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

转载于:https://www.cnblogs.com/yifdu25/p/8598228.html

Ensemble learning(集成学习)相关推荐

  1. Ensemble learning 集成学习(一)

    一.Ensemble learning(集成学习) 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统等.要获得好的集成,个体学习器应"好而不同",意味着个体 ...

  2. 【机器学习】Ensemble Learning 集成学习 + Python代码实战

    文章目录 一.集成学习概述 二.Bagging模型 2.1 随机森林 2.1.1 随机森林介绍 2.2.1 随机森林优势 2.2 KNN 2.3 软投票 2.4 硬投票 2.5 Bagging模型实战 ...

  3. RDKit |基于集成学习(Ensemble learning)预测溶解度

    Ensemble learning 集成学习 集成学习(Ensemble learning)是这样一个过程,按照某种算法生成多个模型,如分类器或者称为专家,再将这些模型按照某种方法组合在一起来解决某个 ...

  4. EL:集成学习(Ensemble Learning)的概念讲解、问题应用、算法分类、关键步骤、代码实现等相关配图详细攻略

    EL:集成学习(Ensemble Learning)的概念讲解.算法分类.问题应用.关键步骤.代码实现等相关配图详细攻略 目录 集成学习Ensemble Learning 1.集成学习中弱分类器选择 ...

  5. 集成学习_GBDT_XGBoost

    1.集成学习(Ensemble Learning) 集成学习就是将多个弱分类器组合成为一个强分类器.比起几千年才出一个的力能扛鼎的项羽来说,我们找十几个匹夫把鼎抬过去会更简单一些.这就是集成学习的思想 ...

  6. # 联邦学习-安全树模型 SecureBoost之集成学习

    文章目录 1 联邦学习背景 2 联邦学习树模型方案 3 Ensemble Learning 3.1 集成学习 3.2 Bagging & Boosting 3.2.1 Bagging (boo ...

  7. 集成学习--基础概述

    集成学习 1.集成学习概述 2.集成学习之基学习器 3.Bagging 4.Boosting 5.结合策略 5.1 均值法 5.2 投票法 5.3 学习法 参考资料 1.集成学习概述 简单来说,集成学 ...

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

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

  9. Ensemble learning 概述

    在机器学习和统计学习中, Ensemble Learning(集成学习)是一种将多种学习算法组合在一起以取得更好表现的一种方法.与 Statistical Ensemble(统计总体,通常是无限的)不 ...

最新文章

  1. 本地Windows 7/8上搭建IIS服务器
  2. 你一定不能错过,Java视频全套
  3. php根据修改时间删除指定目录下文件
  4. python37.dll可能与您正在运行_win7系统提示模块可能与您正在运行的windows版本不兼容如何解决...
  5. 怎么添加本地音乐_展示 | 传一学员优秀项目之音乐播放器
  6. JavaScript(十三)面向对象
  7. source insight 函数不能跳到definition_小技能: Windows10突然不能复制粘贴谁搞鬼
  8. 24v开关电源维修技巧_焊机维修案例汇总6
  9. openssh8.6升级修复(CVE-2020-15778)(CVE-2018-15919)(CVE-2017-15906)等漏洞
  10. three相机在模型上_实例讲解Three.js加载外部模型
  11. php switch正则表达式,switch的用法以及正则表达式简单的用法
  12. android 控件高度和图片一样高,Android 根据图片宽高比例设置控件宽高
  13. windows 编写的硬件驱动_驱动更新有什么好处(一文解读驱动更新细则)
  14. CAN协议详解-01
  15. 软件架构设计思维导图
  16. VMware安装deepin
  17. java文字竖排_Java输出竖排文字
  18. 花生壳配置域名以及公网ip
  19. 往虚拟机中导入虚拟硬盘出现错误 返回 代码: E_INVALIDARG (0x80070057)的解决方法
  20. 当Activity设置为透明主题时,按Home键,Dialog闪烁的解决方法

热门文章

  1. 8位以上 密码 正则表达式
  2. Direct2D (11) : 画刷之 ID2D1LinearGradientBrush
  3. 解决MSSQL MMC企业管理器打开报错问题
  4. Grounded Theory and Coding Lecture Notes
  5. 《工作细胞》电影观后感
  6. Another Rejection from University of Oxford MRes in Engineering
  7. 《Gpu Gems》《Gpu Pro》《Gpu Zen》资源收集
  8. kmp oj 亲和串
  9. 首次提出“智能经济形态”,与实体经济深度融合
  10. 新版微信小程序即将上线 新增微信支付功能