集成学习将机器学习模型的预测结合起来用于分类和回归。
我们致力于使用集成方法来实现改进的预测性能,而正是这种优于任何贡献模型的性能提升定义了一个集成的好坏。
一个好的集成所具备的特性是贡献模型所做预测的多样性。多样性是一个难以捉摸的概念,因为它没有被精确定义;尽管如此,它为设计好的集成模型提供了有用的实践启发。
在这篇文章中,您将了解机器学习中的集成多样性。
阅读本文后,你将了解:
- 一个好的集成是比任何贡献模型都表现更好的集成。
- 集成多样性是好的集成的一个特性,其中贡献模型对同一输入做出不同的错误。
- 寻求独立的模型和不相关的预测为思考和引入多样性到集成模型提供了指导。
启动您的项目,阅读我的新书《Python集成学习算法》,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。

机器学习集成多样性简介
照片作者:Bernd Thaller,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 什么使集成良好
- 什么是集成多样性
- 增加多样性的方法
什么使集成良好
集成是一种机器学习模型,它结合了多个其他模型的预测。
这通常可以减少预测误差并提高模型的泛化能力。但并非总是如此。
有时,集成模型的性能并不比集成中的一个表现良好的贡献模型更好。更糟糕的是,有时集成模型的性能甚至会比任何贡献模型都差。
这就引出了一个问题:什么使得一个集成模型是好的?
一个好的集成是一个比任何贡献模型都表现更好的集成。也就是说,它是一个回归预测误差更低或分类准确率更高的模型。
- 好的集成:一个比任何单个贡献模型都表现更好的模型。
可以使用训练集和测试集或 k 折交叉验证等重采样技术来实证评估这一点。同样可以估计每个贡献模型的性能,并直接比较结果,以确定是否满足“好的集成”的定义。
一个好的集成与性能相同或更差的其他集成模型相比,具有哪些属性?
这是一个被广泛研究的问题,有很多想法。一致的观点是,一个好的集成具有多样性。
什么是集成多样性
集成多样性是指集成成员所做决策或预测的差异。
集成多样性,即个体学习者的差异,是集成方法中的一个基本问题。
— 第 99 页,《集成方法》,2012。
做出相同预测的两个集成成员被认为是不多样化的。
在所有情况下都做出完全不同预测的集成是最大程度多样化的,尽管这种情况不太可能发生。
在任何给定样本上做出不同错误对于基于集成系统至关重要。毕竟,如果所有集成成员都提供相同的输出,那么它们的组合将毫无益处。
— 第 5 页,《集成机器学习》,2012。
因此,为了构建一个好的集成,期望或甚至需要一定程度的预测多样性。在讨论中,这通常简化为对多样化集成成员(例如模型本身)的期望,从而产生多样化的预测,尽管多样化的预测才是我们真正追求的。
理想情况下,多样性意味着每个集成成员所做的预测是独立且不相关的。
… 分类器的输出应该是独立的,或者最好是负相关的。
— 第 5 页,《集成机器学习》,2012。
独立性是概率论中的一个术语,指的是一个事件的发生不影响另一个事件发生概率的情况。事件可以以许多不同的方式相互影响。一个集成可能会影响另一个集成,如果它试图纠正另一个集成的预测。
因此,根据集成的类型,模型可能是自然依赖的或独立的。
- 独立性:事件的发生是否影响后续事件的概率。
相关性是统计学中的一个术语,指的是两个变量一起变化。通常计算一个归一化的相关分数,范围在 -1.0 到 1.0 之间,其中 0.0 表示无相关性,例如不相关。1.0 或 -1.0 的分数分别表示完美的正相关和负相关,并表示两个模型总是预测相同(或相反)的结果。
… 如果学习者是独立的,即 [相关性] = 0,集成将比个体学习者获得 T 倍的错误减少;如果学习者完全相关,即 [相关性] = 1,那么组合将不会有任何收益。
— 第 99 页,《集成方法》,2012。
在实践中,集成模型在预测中通常表现出弱的或适度的正相关。
- 相关性:变量一起变化的程度。
因此,集成模型由可能具有一些依赖性也可能没有一些依赖性的组成模型构成,并且在所做的决策或预测之间存在一些相关性。构建好的集成是一项具有挑战性的任务。
例如,将一堆表现最好的模型组合起来很可能会导致一个糟糕的集成,因为模型所做的预测将高度相关。出乎意料的是,您可能最好将一些表现最好的模型与一些较弱模型的预测结合起来。
因此,期望个体学习者是准确且多样化的。仅组合准确的学习者通常比组合一些准确的学习者与一些相对较弱的学习者要差,因为互补性比纯粹的准确性更重要。
— 第 100 页,《集成方法》,2012。
不幸的是,没有一个普遍公认的集成多样性度量标准,独立性和相关性的概念仅仅是思考好的集成特性的指导或代理。
不幸的是,尽管多样性至关重要,我们仍然对多样性没有清晰的理解;例如,目前还没有一个被广泛接受的正式的多样性定义。
— 第 100 页,《集成方法》,2012。
尽管如此,作为指导,它们很有用,因为我们可以设计出试图减少模型之间相关性的技术。
想开始学习集成学习吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
增加多样性的方法
通过增加集成成员的多样性来发展好的集成的目标。
集成中的模型可能更具依赖性,如果它们共享相同的模型训练算法和/或相同的模型训练数据集。集成中的模型可能由于相同的原因在其预测之间具有更高的相关性。
因此,使模型和/或训练数据更加不同的方法是可取的。
多样性可以通过输入数据的不同表示(如 bagging)、学习器设计的变化或在输出中添加惩罚项来鼓励多样性来获得。
— 第 93 页,《使用集成方法进行模式分类》,2010。
拥有一个思考管理集成多样性技术的框架会很有帮助,而且有很多选择。
例如,Zhi-Hua Zhou 在他 2012 年的书《集成方法:基础和算法》的第 5 章中,提出了一种生成多样性的四种方法框架。总而言之,它们是:
- 数据样本操作:例如,为每个模型单独采样训练数据集。
- 输入特征操作:例如,对每个模型训练不同的输入特征组。
- 学习参数操作:例如,使用不同的超参数训练模型。
- 输出表示操作:例如,使用修改后的目标值训练模型。
也许最常见的方法是改变训练数据,即数据样本和输入特征,这通常在一个方法中结合。
另一个生成多样化集成的分类示例,Lior Rokach 在他 2010 年的书《使用集成方法进行模式分类》的第 4 章中提出了一个类似的分类,总结如下:
- 操纵诱导器,例如,操纵模型的训练方式。
- 调整超参数。
- 调整起始点。
- 调整优化算法。
- 操纵训练样本,例如,操纵用于训练的数据。
- 重采样。
- 更改目标属性表示,例如,操纵目标变量。
- 改变编码。
- 错误纠正码。
- 标签切换。
- 划分搜索空间,例如,操纵输入特征的数量。
- 随机子空间。
- 特征选择。
- 混合,例如,改变模型类型或上述方法的组合。
混合方法在流行的集成方法中很常见,这些方法在单个算法中结合多种生成多样性的方法,以及简单地改变构成集成的算法(模型类型)。
将竞争模型捆绑到集成中几乎总能提高泛化能力——使用不同的算法作为扰动算子是获得组件所需多样性的一种有效方法。
— 第 89 页,《数据挖掘中的集成方法》,2010。
这突显了尽管我们可以研究如何量化集成集成的多样性,但实际上大多数努力都集中在开发生成多样性的技术上。
我们可以利用这些知识来开发自己的集成方法,首先尝试标准且易于理解的集成学习方法,然后针对我们的特定数据集进行定制,同时考虑模型独立性和预测相关性,以期最大限度地发挥其作用。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 使用集成方法进行模式分类, 2010.
- 集成方法, 2012.
- 集成机器学习, 2012.
- 数据挖掘中的集成方法, 2010.
文章
总结
在这篇文章中,您了解了机器学习中的集成多样性。
具体来说,你学到了:
- 一个好的集成是比任何贡献模型都表现更好的集成。
- 集成多样性是好的集成的一个特性,其中贡献模型对同一输入做出不同的错误。
- 寻求独立的模型和不相关的预测为思考和引入多样性到集成模型提供了指导。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
感谢这篇有教育意义的文章。
我对“输出表示操作”很好奇,其中目标被修改,比如说为了集成中的每个成员,有什么实现方法吗?
不客气。
是的,请看这个
https://machinelearning.org.cn/error-correcting-output-codes-ecoc-for-machine-learning/
感谢有关机器学习的信息。
不客气!
那么,有没有量化集成多样性的资源?
你好 Roger…您可能会发现以下内容很有趣
http://ceur-ws.org/Vol-2916/paper_8.pdf