为什么使用集成学习?

集成方法对机器学习有什么好处?

集成模型是结合两个或更多其他模型的预测结果的预测模型。

集成学习方法很受欢迎,当预测建模项目上获得最佳性能是最重要的结果时,它们是首选技术。

然而,它们并非总是最合适的应用技术,应用机器学习领域的新手会期望集成或特定集成方法总是最好的方法。

集成在预测建模项目上提供两种特定的好处,了解这些好处是什么以及如何衡量它们以确保在您的项目中正确使用集成非常重要。

在本教程中,您将了解在机器学习中使用集成方法的好处。

阅读本教程后,您将了解

  • 使用集成模型的最低好处是减少预测模型平均技能的分布范围。
  • 使用集成的关键好处是提高集成中任何组成成员的平均预测性能。
  • 集成模型性能提高的机制通常是减少组成模型所做预测误差的方差部分。

通过我的新书《使用Python的集成学习算法》启动您的项目,其中包括所有示例的**分步教程**和**Python源代码文件**。

让我们开始吧。

Why Use Ensemble Learning

为什么使用集成学习
照片来源 Juan Antonio Segal,保留部分权利。

教程概述

本教程分为四个部分;它们是

  1. 集成学习
  2. 使用集成以提高鲁棒性
  3. 偏差、方差和集成
  4. 使用集成以提高性能

集成学习

集成是一个机器学习模型,它结合了两个或更多模型的预测结果。

构成集成的模型,被称为集成成员,可以是相同类型或不同类型,并且可能在相同或不同的训练数据上进行训练。

集成成员做出的预测可以使用统计方法(如众数或均值)进行组合,也可以使用更复杂的方法来学习在何种条件下以及信任每个成员的程度。

集成方法的研究在20世纪90年代真正兴起,那十年间发表了关于最流行和广泛使用的方法的论文,如核心的装袋(bagging)、提升(boosting)和堆叠(stacking)方法。

在2000年代末,集成方法的采用有所增加,部分原因是它们在机器学习竞赛中取得了巨大成功,例如Netflix大奖和后来的Kaggle竞赛。

在过去的几十年中,多分类器系统,也称为集成系统,在计算智能和机器学习社区中受到了越来越多的关注。

— 第1页,《集成机器学习》,2012年。

集成方法大大增加了计算成本和复杂性。这种增加来自于训练和维护多个模型而不是单个模型所需的专业知识和时间。这引出了一个问题:

  • 我们为什么要考虑使用集成?

使用集成而非单个模型有两个主要原因,它们是相关的;它们是:

  1. 性能: 集成可以比任何单个组成模型做出更好的预测并实现更好的性能。
  2. 鲁棒性:集成减少了预测和模型性能的离散度或分散度。

集成用于在预测建模问题上获得比单个预测模型更好的预测性能。实现这一点的方式可以理解为模型通过增加偏差(即在偏差-方差权衡的背景下)来减少预测误差的方差分量。

最初开发是为了减少自动化决策系统的方差,从而提高其准确性……

— 第1页,《集成机器学习》,2012年。

集成方法还有一个重要但较少讨论的好处,那就是模型平均性能的鲁棒性或可靠性得到改善。

这些在机器学习项目中都是重要的问题,有时我们可能偏爱模型的一个或两个属性。

让我们仔细看看这两个属性,以便更好地理解在项目中使用集成学习的好处。

想开始学习集成学习吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

使用集成以提高鲁棒性

在预测建模项目中,我们经常评估多个模型或建模管道,并选择一个表现良好或最佳的模型作为我们的最终模型

然后,该算法或管道将在所有可用数据上进行拟合,并用于对新数据进行预测。

我们通过测试工具对模型平均性能有一个大致的了解,通常使用重复的k折交叉验证作为黄金标准进行估算。问题是,平均性能可能不足够。

模型的平均准确度或误差是预期性能的总结,而实际上,有些模型在数据的不同子集上表现更好,有些模型则表现更差。

标准差是观测值与均值之间的平均差异,它总结了数据的离散度或分布。对于模型的准确度或误差度量,它可以让您了解模型行为的分布情况。

查看模型的最小和最大性能分数将使您了解模型可能的最差和最佳性能,这可能无法满足您的应用程序要求。

最简单的集成方法是在训练数据集上多次拟合模型,并使用汇总统计量(例如回归的均值或分类的众数)组合预测。重要的是,由于随机学习算法、训练数据集组成的不同或模型本身的不同,每个模型都需要略有不同。

这将减少模型预测的离散度。平均性能可能大致相同,但最差和最佳情况下的性能将更接近平均性能。

实际上,它平滑了模型的预期性能。

我们可以将其称为模型预期性能的“鲁棒性”,这是使用集成方法的最低好处。

集成可能提高或不提高建模性能,使其优于任何单个组成成员(稍后将进一步讨论),但至少它应该减少模型平均性能的离散度。

欲了解更多关于此主题的信息,请参阅教程

偏差、方差和集成

用于分类和回归的机器学习模型学习从输入到输出的映射函数。

此映射是从问题域中的示例(训练数据集)中学习的,并在训练期间未使用的数据(测试数据集)上进行评估。

机器学习模型产生的误差通常用两个属性来描述:**偏差**和**方差**。

偏差衡量模型捕捉输入和输出之间映射函数的紧密程度。它捕捉了模型的刚性:模型对输入和输出之间映射函数形式的假设的强度。

模型的方差是模型在不同训练数据上拟合时性能的变化量。它捕捉了数据特异性对模型的影响。

方差指的是 [模型] 在使用不同的训练数据集进行估计时会发生变化的程度。

— 第34页,《使用R进行统计学习的介绍及应用》,2014年。

模型的偏差和方差是相互关联的。

理想情况下,我们更喜欢低偏差和低方差的模型,尽管在实践中这非常具有挑战性。事实上,这可以被描述为针对给定预测建模问题的应用机器学习的目标。

通过增加方差通常可以很容易地减少偏差。相反,通过增加偏差可以很容易地减少方差。

这被称为权衡,因为很容易获得一个偏差极低但方差高的方法 […] 或者一个方差极低但偏差高的方法 ……

— 第36页,《使用R进行统计学习的介绍及应用》,2014年。

有些模型天生具有高偏差或高方差,这通常可以通过改变算法学习行为的超参数来放宽或增加。

集成提供了一种减少预测方差的方法;也就是说,预测误差中可归因于“方差”的误差量。

这并非总是如此,但当它发生时,这种方差的减少反过来会导致预测性能的提高。

经验和理论证据表明,一些集成技术(如装袋法)起到了方差减少机制的作用,即它们减少了误差的方差分量。此外,经验结果表明,其他集成技术(如AdaBoost)减少了误差的偏差和方差部分。

— 第39页,《使用集成方法进行模式分类》,2010年。

使用集成方法来减少预测误差的方差属性,从而带来了最初使用集成方法的关键好处:提高预测性能。

使用集成以提高性能

减少预测误差的方差成分可以提高预测性能。

我们明确使用集成学习来寻求更好的预测性能,例如更低的回归误差或更高的分类准确性。

……有一种方法可以提高模型准确性,它比明智地选择算法更容易、更强大:可以将模型组合成集成。

— 第2页,《数据挖掘中的集成方法》,2010年。

这是**集成学习方法的主要用途**,也是Netflix大奖和Kaggle竞赛等机器学习竞赛大多数获胜者通过使用集成方法所展示的好处。

在Netflix大奖赛中,一场为期两年的竞赛,第一个提交模型,将其对Netflix内部推荐系统的改进达到10%的团队将赢得1,000,000美元。 […] 最终的优势是通过权衡来自多达30个竞争对手的模型贡献获得的。

— 第8页,《数据挖掘中的集成方法》,2010年。

这一优势也通过学术竞赛得到了证明,例如计算机视觉领域著名ImageNet数据集的顶级解决方案。

这些残差网络的集成在ImageNet测试集上取得了3.57%的误差。这一结果赢得了ILSVRC 2015分类任务的第一名。

用于图像识别的深度残差学习,2015年。

以这种方式使用时,只有当集成模型平均表现优于集成中的任何组成成员时,才应采用它。如果情况并非如此,则应使用表现更好的组成成员。

考虑模型在测试工具上计算出的预期得分分布,例如重复的 k 折交叉验证,就像我们上面在考虑集成所提供的“鲁棒性”时所做的那样。一个减少误差方差的集成,实际上会移动分布,而不仅仅是缩小分布的范围。

这可以带来比任何单个模型更好的平均性能。

情况并非总是如此,抱有这种期望是初学者常犯的错误。

集成模型的性能与集成中性能最佳的成员表现相同的情况是可能甚至常见的。如果集成中有一个表现最好的模型,而其他成员没有提供任何好处,或者集成无法有效利用它们的贡献,就可能发生这种情况。

集成模型也可能表现比集成中表现最好的成员更差。这种情况也很常见,通常涉及一个表现最好的模型,但其预测结果被一个或多个表现不佳的其他模型所恶化,并且集成无法有效利用它们的贡献。

因此,测试一系列集成方法并调整其行为非常重要,就像我们对任何单个机器学习模型所做的那样。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

相关教程

书籍

文章

总结

在这篇文章中,您发现了在机器学习中使用集成方法的好处。

具体来说,你学到了:

  • 使用集成模型的最低好处是减少预测模型平均技能的分布范围。
  • 使用集成的关键好处是提高集成中任何组成成员的平均预测性能。
  • 集成模型性能提高的机制通常是减少组成模型所做预测误差的方差部分。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握现代集成学习!

Ensemble Learning Algorithms With Python

在几分钟内改进您的预测

...只需几行python代码

在我的新电子书中探索如何实现
使用 Python 实现集成学习算法

它提供**自学教程**,并附有关于以下内容的**完整工作代码**:
堆叠、投票、提升、装袋、混合、超级学习器等等……

将现代集成学习技术带入
您的机器学习项目


查看内容

对《为什么要使用集成学习?》的14条回复

  1. Rafael 2020年10月26日上午11:01 #

    感谢您的又一篇优秀文章。
    我想知道为回归问题构建不同模型的集成时,最好的方法是什么。
    我们能否采用加权平均值,其中权重例如是模型的平均绝对误差(即,MAE较小的模型将具有更大的权重)?或者是否有更合适的加权指标?

    • Jason Brownlee 2020年10月26日下午1:07 #

      不客气。

      我们无法事先知道什么会是最好的。我建议测试一系列不同的方法,并找出最适合您特定数据集的方法。

  2. Thiru 2020年10月27日上午1:31 #

    有没有办法确定(测量)单个模型的偏差和方差?python中有可用的函数吗?

  3. Sharu 2021年1月25日上午2:42 #

    先生,我想开始我的集成学习博士研究,我应该选择什么课题?

  4. Jessy 2021年4月19日下午4:14 #

    嗨,杰森,
    最大投票集成可以用于多阶段分类(五阶段)吗?

  5. AHWAS 2021年11月22日下午10:36 #

    我希望您能看到这个。我是机器学习的初学者,也是一名自由职业者。我想请求您的允许,使用您文章中的各种模型知识。

  6. Amirtha 2022年3月5日下午11:12 #

    感谢这篇优秀的文章!我是机器学习概念的初学者,正在寻找集成学习,这篇文章让我对集成学习有了清晰的认识。
    我有一个疑问,我们可以将任何机器学习分类器与其他任何机器学习分类器组合吗?它们是否有特定的组合?另外,请您明确说明哪种集成方法适用于哪些分类器?

  7. Cat 2022年3月10日下午5:40 #

    你好,我是机器学习的初学者。我想问,我可以在小数据集上使用集成分类器吗?假设我有一个265×3的数据框,其中两列是特征,另一列是目标。使用集成分类器会导致过拟合吗?

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。