使用 Bagging 构建强大的 AI 模型:技术、优势和应用
已发表: 2025-01-09Bagging 是一种集成机器学习 (ML) 技术,可提高预测模型的一致性。本指南描述了 bagging 的工作原理,讨论了它的优点、挑战和应用,并将其与 boosting 等相关技术进行了比较。
目录
- 什么是套袋?
- 方差与偏差
- Bagging 与 boosting
- 套袋的工作原理
- bagging 算法的类型
- 装袋的应用
- 装袋的优点
- 装袋的挑战和局限性
什么是套袋?
Bagging(或更正式地说,bootstrapagg regating)是一种集成学习技术,它通过使用多个相似的 ML 模型来提高输出准确性。其核心是,集成学习结合了多个模型,以实现比任何单个模型更好的性能。
该方法涉及将训练数据分成随机子集,并在每个子集上训练不同的模型。对于新输入,所有模型的预测都会被汇总以产生最终输出。通过利用随机子集,该技术减少了模型之间的差异,从而产生更一致的预测。
Bagging 在通过最小化机器学习系统的方差来提高一致性方面特别有效。
方差与偏差
减少偏差和方差是任何机器学习模型或系统的基本目标。
偏差描述了机器学习系统由于对其所看到的数据的假设而犯下的错误。它通常是通过计算模型的平均错误程度来确定的。方差衡量模型的一致性。它是通过检查相似输入的模型输出的差异来估计的。
高偏差
举个例子,让我们考虑一下根据房屋特征(例如平方英尺和卧室数量)预测房屋售价的问题。一个简单的模型可能会做出很多简化的假设,并且只考虑平方英尺,导致它具有很高的偏差。即使在训练数据上,它也会一直出错,因为现实比它的假设更复杂。因此它无法识别真实的价格预测因素(例如位置、学校质量和卧室数量)。
高方差
更复杂的模型可能会捕捉到训练数据中的每个趋势并具有较高的方差。例如,该模型可能会在训练数据中找到门牌号(本质上是街道地址的数字部分)和价格之间的微小相关性并使用它,即使它不是实际的预测变量。它在训练数据上表现良好,但在现实数据上表现不佳。
方差-偏差权衡
理想的模型应具有低偏差和低方差,能够在相似的输入中一致地生成正确的输出。高偏差通常是由于模型太简单而无法捕获训练数据中的模式(欠拟合)造成的。高方差通常是由于模型捕获训练数据中的虚假模式(过度拟合)造成的。
提高模型的复杂性可以使其捕获更多模式,从而降低偏差。然而,这种更复杂的模型往往会过度拟合训练数据,导致更高的方差,反之亦然。在实践中,很难实现偏差与方差的平衡。
Bagging 的重点是减少方差。集成中的每个模型可能具有高方差,因为它过度拟合其数据集。但由于每个模型都有一个随机数据集,因此他们会发现不同的虚假模式。在房价示例中,一种模型可能会高估偶数房屋的价值,另一种模型可能会低估房屋的价值,而大多数模型可能会完全忽略房屋号码。
当我们对它们的预测进行平均时,这些任意模式往往会平均,从而为我们留下真正的潜在关系。因此,与任何单独的模型相比,该集成实现了较低的方差并减少了过度拟合。
Bagging 与 boosting
您可能会听到在与 boosting 相同的上下文中谈论 bagging。这些是最常见的集成学习技术,是许多流行的 ML 模型的基础。 Boosting 是一种根据先前模型的错误来训练模型的技术。然后这组模型用于响应任何输入。让我们进一步讨论这两种技术之间的差异。
套袋 | 提升 | |
模型训练 | 模型在不同的数据子集上并行训练 | 模型按顺序进行训练,每个模型都关注前一个模型的错误 |
减少错误焦点 | 减少方差 | 减少偏差 |
常用算法 | 随机森林、袋装决策树 | AdaBoost、梯度提升、XGBoost |
过拟合风险 | 由于随机抽样,降低了过度拟合的风险 | 过度拟合的风险较高 |
计算复杂度 | 降低 | 更高 |
这两种技术都很常见,但 boosting 更流行。 Boosting 可以减少偏差和方差,而 bagging 通常只影响方差。
套袋的工作原理
让我们考虑一下 bagging 的实际工作原理。其要点是随机分割训练数据,在分割数据上并行训练模型,并使用所有模型来响应输入。我们将依次解决每个问题。
数据分割
假设我们有一个包含n 个数据点的训练数据集,并且想要制作一个包含m 个模型的 bagged ensemble。然后,我们需要创建m 个数据集(每个模型一个),每个数据集有n 个点。如果每个数据集中的点多于或少于n个,则某些模型将训练过度或训练不足。
为了创建一个新的随机数据集,我们从原始训练数据集中随机选择n 个点。重要的是,我们在每次选择后将点返回到原始数据集。因此,新的随机数据集将具有多个原始数据点的副本,而其他数据点的副本为零。平均而言,该数据集将包含 63% 的唯一数据点和 37% 的重复数据点。
然后我们重复这个过程来创建所有m 个数据集。数据点表示的变化有助于在集成模型之间创建多样性,这是减少总体方差的关键之一。
模型训练
使用m 个随机数据集,我们只需训练m 个模型,每个数据集一个模型。我们应该自始至终使用相同类型的模型,以确保类似的偏差。我们可以并行训练模型,从而实现更快的迭代。
聚合模型
现在我们已经有了m 个经过训练的模型,我们可以将它们用作一个整体来响应任何输入。每个输入数据点都并行馈送到每个模型,每个模型都以其输出做出响应。然后我们汇总模型的输出以得出最终答案。如果是分类问题,我们采用输出的众数(最常见的输出)。如果是回归问题,我们取输出的平均值。
这里减少方差的关键是,由于训练数据的差异,每个模型在某些输入上表现更好,而在其他输入上表现较差。然而,总体而言,任何一种模型的误差都应该被其他模型抵消,从而导致方差降低。
装袋算法的类型
Bagging 作为一种算法可以应用于任何类型的模型。在实践中,有两种非常常见的 bagged 模型:随机森林和 bagged 决策树。让我们简要探讨一下两者。
随机森林
随机森林是决策树的集合,每个决策树都在随机数据集上进行训练。决策树是一种模型,它通过回答有关输入数据的是/否问题来进行预测,直到找到合适的标签。
在随机森林中,每个决策树具有相同的超参数 - 预设配置,例如树的最大深度或每次分割的最小样本 - 但它使用来自训练数据集的不同(随机选择)特征。如果没有特征随机化,尽管训练数据存在差异,但每个决策树可能会收敛到相似的答案。随机森林是 ML 非常流行的选择,通常是解决 ML 任务的良好起点。
袋装决策树
袋装决策树与随机森林非常相似,只是每棵树都使用训练数据集中的相同特征。这减少了树输出的多样性,这有利有弊。从好的方面来说,树木更加稳定,可能会给出类似的答案;这可以用来确定哪些特征是重要的。缺点是方差不会减少那么多。因此,随机森林的使用远多于袋装决策树。
装袋的应用
Bagging 可用于方差高于预期的任何 ML 问题。只要有ML模型,就可以装袋。为了使这一点更加具体,我们将回顾几个示例。
分类和回归
分类和回归是机器学习的两个核心问题。用户可能想要将图像的主题标记为猫或狗——分类。或者用户可能想根据房屋的特征(回归)来预测房屋的售价。正如我们所看到的,装袋可以帮助减少这两者的方差。
在分类中,使用集成模型的模式。在回归中,使用平均值。
特征选择
特征选择是指寻找数据集中最重要的特征——最能预测正确输出的特征。通过删除不相关的特征数据,模型开发人员可以降低过度拟合的可能性。
了解最重要的特征还可以使模型更易于解释。此外,模型开发人员可以利用这些知识来减少训练数据中的特征数量,从而加快训练速度。袋装决策树可以很好地发现重要特征。其中权重较大的功能可能是重要的功能。
电商装袋
电子商务中的装袋对于预测客户流失特别有价值。由于复杂、嘈杂的客户行为模式,基于流失数据训练的 ML 模型通常具有很高的方差;他们可能会过度拟合他们的训练数据集。他们还可能推断出虚假的关系,例如假设客户姓名中的元音数量会影响他们流失的可能性。
训练数据集可能只包含导致这种过度拟合的几个示例。使用袋装模型,集成可以更好地识别真实的流失指标,同时忽略虚假的相关性,从而实现更可靠的流失预测。
装袋的优点
Bagging 可以减少模型方差和过度拟合,并有助于解决数据问题。它也是最可并行化和最高效的装袋技术之一。
减少方差
模型方差表明模型没有学习数据中真实、有意义的模式。相反,它会发现随机相关性,这些相关性意义不大,而且是训练数据不完美的症状。
Bagging 减少了模型的方差;整体上,整体关注输入和输出之间有意义的关系。
很好地推广到新数据
由于袋装模型更有可能发现有意义的关系,因此它们可以泛化到新的或未见过的数据。良好的泛化是机器学习的最终目标,因此装袋对于许多模型来说通常是一种有用的技术。
在几乎每个机器学习问题中,训练数据集并不能完全代表实际数据,因此良好的泛化是关键。在其他情况下,真实的数据分布可能会随着时间的推移而改变,因此需要一个适应性强的模型。装袋对这两种情况都有帮助。
高度并行化
与 boosting 相比,创建 bagged 模型是高度可并行的。每个模型都可以独立且同时进行训练,从而可以进行快速实验和更轻松的超参数调整(当然,前提是您有足够的计算资源来并行训练)。
此外,由于每个模型都独立于其他模型,因此可以换入或换出。例如,可以在不同的随机子集上重新训练弱模型,以提高其性能,而无需触及其他模型。
装袋的挑战和局限性
不幸的是,添加更多模型会增加更多复杂性。额外复杂性的挑战意味着袋装模型需要更多的计算资源,更难以解释和理解,并且需要更多的超参数调整。
需要更多的计算资源
更多模型需要更多资源来运行,通常,bagged ensembles 有 50 多个模型。这对于较小的模型可能很有效,但对于较大的模型,它可能会变得棘手。
随着整体的增长,其响应时间也会受到影响。这些资源也有机会成本:它们可能更适合用来训练更大、更好的模型。
更难解释
机器学习模型作为一个整体,很难解释。单个决策树要容易一些,因为它们显示了决策所基于的特征。但是,当您将一堆树组合在一起时,就像在随机森林中一样,每棵树的相互矛盾的答案可能会令人困惑。
采用预测的众数或平均值本身并不能解释为什么这是正确的预测。群众的智慧虽然常常是正确的,但却很难理解。
更多超参数调整
随着模型的增加,超参数的影响会被放大。超参数中的一个微小错误现在可能会影响数十或数百个模型。调整同一组超参数需要更多时间,这可能会给有限的资源带来更大的负担。