集成学习可结合多个学习器来提高预测性能。采用这种方法是为了解决数据集有限造成的问题。
集成学习是一种机器学习技术,它利用两个或多个学习器(例如回归模型、神经网络)来生成更好的预测。换句话说,集成模型将多个单独的模型组合在一起,以产生比单独使用单个模型更准确的预测。 1有时,资料来源可能会将这种技术称为基于委员会的学习。集成学习基于这样一个原则,即学习器的集体比单个学习器产生更高的整体准确性。 2事实上,研究通过机器学习模型和卷积神经网络 (CNN) 支持其功效。
术语说明:基础学习器、基础模型以及(某些情况下的)基础估算器是指在集成算法中使用的单个模型或多个模型。文献进一步将基础学习器划分为强学习器和弱学习器。弱模型或学习器被定义为那些表现比随机猜测好一点的模型或学习器。对于二元分类问题,更正式地说,弱分类器是那些准确率达到大约 50% 的分类器。相比之下,强大的模型或学习器可实现出色的预测性能,在二元分类中,预测性能被正式确定为准确率等于或大于 80%。3
请注意,一些资源将弱学习器和基础学习器混为一谈,因为集成方法(尤其是顺序方法)可以有效地将弱学习器提升为强学习器。4
偏差-方差权衡是机器学习中一个众所周知的问题,也是许多正则化技术背后的激励原则。我们可以将它们定义为:
- 偏差可衡量预测值与真实值之间的平均差异。随着偏差的上升,模型对训练数据集的预测精度会降低。高偏差是指训练中的高误差。优化意味着尝试减少偏差。
- 方差可衡量给定模型的不同实现中各预测之间的差异。随着方差的上升,模型对未知数据的预测精度会降低。高方差是指测试和验证期间的误差较大。泛化是指试图减少差异。
因此,偏差和方差分别反向表示对训练和测试数据的模型准确性。5它们是构成模型总误差率的三个项中的两个,第三个是不可约误差。第三个项表示数据集固有随机性造成的误差。总模型误差可以通过以下公式定义:6
任何一种模型训练算法都由许多变量组成,例如训练数据、超参数等,这些因素会影响后续模型的总误差。因此,即使是单一的训练算法也可以生成不同的模型,每个模型都有自己的偏差、方差和不可约错误率。通过组合多个不同的模型,集成算法可以产生较低的总体错误率,同时保留每个模型自身的复杂性和优势,例如特定数据子集的偏差非常低。7
研究表明,一般来说,组合模型之间的多样性越大,得到的集成模型就越准确。因此,集成学习可以解决过拟合等回归问题,而无需消除模型偏差。事实上,研究表明,由不同的欠规范化模型(即过拟合训练数据的模型)的性能优于单个正则化模型。8此外,集成学习技术可以帮助解决源于高维数据的问题,因此可以有效地作为降维的替代方案。
文献广泛地将机器学习中的集成学习方法分为两组:并行和顺序。
-并行方法将每个基本学习器与其他学习器分开训练。顾名思义,并行集合就是并行地、独立地训练基础学习器。
-顺序方法训练一个新的基础学习器,使其最大限度地减少上一步训练的前一个模型所产生的误差。换句话说,顺序方法分阶段按顺序构建基础模型。9
并行方法进一步分为同质方法和异构方法。同构并行集成使用相同的基础学习算法来生成所有组件基础学习器。异构并行集成使用不同的算法来生成基础学习器。10
集成方法如何将基础学习器合并到最终学习器中?某些技术,例如Stacking — 使用单独的机器学习算法从基本学习器中训练集成学习器。但是,合并基本学习器预测的一种常见方法是投票,更准确地说,是多数投票。
多数投票考虑每个基础学习器对给定数据实例的预测,并输出最终预测,该预测由大多数学习器的预测所决定。例如,在二元分类问题中,多数投票从每个基础分类器中针对给定数据实例进行预测,并将多数派预测作为最终预测。加权多数投票是这种技术的延伸,它赋予某些学习器的预测比其他预测更大的权重。11
也许最流行的三种集成学习技术是 bagging、boosting 和 stacking。事实上,这些共同体现了顺序、并行、同质和异构类型的集成方法之间的区别。
请注意,本概述并不详尽;还有其他几种集成方法,例如混合和加权平均集合。这只是为了调查文献中一些比较突出的方法。
装袋是一种同构的并行方法,有时也称为自助法聚合。它使用给定训练数据集的修改后重复来训练具有相同训练算法的多个基础学习器。12Scikit-learn 的 Python 集成模块包含用于实现装袋的函数,例如 BaggingClassifier。
更具体地说,装袋方法使用一种称为自助法重采样的技术从一个初始训练数据集获得多个新数据集,从而训练多个基础学习器。这是如何工作的?假设一个训练数据集包含 n 个训练示例。自助法重采样将该数据集中的 n 个数据实例复制到一个新的子样本数据集中,其中一些初始实例会出现不止一次,另一些则完全排除在外。这些是自助法样本。重复此过程 x 次会产生原始数据集的 x 次迭代,每次迭代包含来自初始集合的 n 个样本。然后,使用初始集的每次迭代来训练具有相同学习算法的单独基础学习器。13
随机森林是装袋方法的扩展,具体表示使用装袋方法构建随机决策树的集合。这与标准决策树不同,因为后者对每个特征进行采样以确定最佳分割。相比之下,随机森林以迭代方式对特征的随机子集进行采样以创建决策节点。 14
堆叠或堆叠泛化 15 是一种异构并行方法,是所谓的元学习的例证。元学习包括从多个基础学习器的输出中训练元学习器。堆叠对每个学习器使用不同的训练算法,专门训练来自同一数据集的多个基础学习器。每个基础学习器都会对未知的数据集进行预测。然后编译这些首个模型预测并用于训练最终模型,即元模型。16
请注意,使用与用于训练基础学习器的数据集不同的数据集来训练元学习器非常重要。使用相同的数据集来训练基础学习器和元学习器可能会导致过拟合。这可能需要从基础学习器训练数据中排除数据实例,以作为其测试集数据,这些数据反过来又成为元学习器的训练数据。文献通常建议使用交叉验证等技术,以确保这些数据集不会重叠。17
与 Bagging 非常相似,Python 中的 sklearn.ensemble 模块也提供了用于实现 Stacking 技术的各种函数。
提升算法是一种顺序集成方法。提升方法有许多不同的方法,但都遵循相同的一般程序。提升方法在某个初始数据集 d 上训练学习器。生成的学习器通常很弱,对数据集中的许多样本进行了错误分类。提升方法与装袋方法非常相似,也会从初始数据集中对实例进行采样,创建新的数据集 (d2)。但是,与装袋方法不同的是,提升方法会优先考虑来自第一个模型或学习器的错误分类数据实例。新的学习器将在此新数据集d 2上进行训练。然后,从d1和d2编译第三个数据集 (d 3),优先考虑第二个学习器的误分类样本以及d1和d2不一致的实例。这个过程重复 n 次,以产生 n 个学习器。然后,提升方法将所有学习器组合在一起并加权,以生成最终预测。18
Boosting 算法在创建新数据集时如何确定错误预测的数据实例的优先级方面存在很大差异。有两种最突出的 Boosting 方法可以说明这一点:
-自适应 Boosting(AdaBoost) 权重模型错误。也就是说,在创建数据集的新迭代以训练下一个学习器时,AdaBoost 会为前一个学习器的错误分类样本添加权重,从而使下一个学习器优先考虑这些错误分类样本。
- 梯度提升方法在训练新学习器时使用残差。梯度提升方法不是对错误分类的样本进行加权,而是使用前一个模型的残差来为下一个模型设置目标预测。通过这种方式,它试图缩小一个模型留下的误差差距。19
遗憾的是,sklearn 不包含用于实现 Boosting 的预定义函数。然而,极端 Gradient boosting (XGBoost) 开源库提供了在 Python 中实现 Gradient boosting 的代码。
鉴于很难为训练学习器获得大型、合理使用、带标记的数据集,集成学习已应用于许多领域,试图用更少的数据提高学习器的表现。例如,最近的几项研究表明,使用集成方法来完成计算机视觉任务,例如使用数据集20的不同表示形式训练多个模型或组合多个有偏见的模型,可以提高模型的泛化性。21
尽管集成方法能够提高泛化性,但它们仍然可能会遭受不公平。在机器学习中,公平性是指尝试减轻自动化系统中的算法偏见(通常是针对少数群体),这些算法偏见通常是由使用敏感数据进行训练的学习器造成的。一些研究提出了提高集成模型公平性的指标、预处理和后处理技术。22继续努力改善 AI 的公平性和道德实践仍然是未来研究急需的领域。
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。