提升机器学习技术:提高准确性并减少错误
已发表: 2025-01-16Boosting 是机器学习 (ML) 中一种强大的集成学习技术,可通过减少错误来提高模型准确性。通过训练序列模型来解决先前的缺点,Boosting 创建了强大的预测系统。本指南介绍了 boosting 的工作原理;其优点、挑战和应用;以及它与 bagging 的比较。
目录
- 什么是提升?
- 偏差与方差
- Boosting 与 bagging
- 提升如何运作
- 增强算法的类型
- 升压的应用
- 升压的优点
- boosting 的挑战和局限性
什么是提升?
Boosting 是一种集成学习技术,可训练新的顺序模型来纠正集成中先前模型的错误。集成学习技术是使用多个相似模型来提高性能和准确性的方法。在提升过程中,新模型仅根据集成的先前错误进行训练。然后,新模型加入到集成中,帮助其给出更准确的预测。任何新输入都会通过模型进行聚合,以减少所有模型的错误。
准确度是一个广泛的概念。 Boosting 通过减少模型偏差(以及较小程度上的方差)来专门提高模型性能。方差和偏差是我们将在下一节中介绍的两个重要的 ML 概念。
偏差与方差
偏差和方差是整个机器学习的两个基本属性。任何机器学习算法的目标都是减少模型的方差和偏差。鉴于它们的重要性,我们将详细解释它们以及为什么它们通常彼此不一致。
为了解释每个概念,我们以给定有关房屋特征的数据(例如,平方英尺、卧室数量等)来预测房屋的销售价格为例。
偏见
偏差是衡量模型平均错误程度的指标。如果一栋房子的实际售价为 400,000 美元,而模型预测为 300,000 美元,则该数据点的偏差为 -100,000 美元。对整个训练数据集的偏差进行平均,就得到了模型的偏差。
偏差通常是由于模型太简单而无法理解特征和输出之间的复杂关系造成的。过于简单的模型可能会只关注平方英尺,并且即使在训练数据上也会始终出错。用机器学习的术语来说,这称为欠拟合。
方差
方差衡量在给定相似输入的情况下模型输出的差异程度。在大多数情况下,位于相似社区、面积、卧室数量和浴室数量相似的房屋应该有相似的价格。但具有高方差的模型可能会给出截然不同的价格。为什么?
该模型可能从训练数据中学到了虚假关系(例如,认为房屋号码影响价格)。这些虚假关系可能会淹没数据中有用的关系。一般来说,复杂的模型会利用这些不相关的关系,这称为过度拟合。
偏差-方差权衡
理想情况下,您需要一个低偏差、低方差的 ML 模型,该模型能够识别数据中的真实关系,但仅此而已。然而,这在实践中很难做到。
提高模型的复杂性可以通过赋予模型在数据中发现更深层模式的能力来减少其偏差。然而,同样的能力也可以帮助它找到不相关的模式,反之亦然,使得这种偏差与方差的权衡难以解决。
提升可以改善偏差和方差
Boosting 是一种非常流行的集成学习技术,因为它可以减少偏差和方差(尽管方差减少并不常见)。
通过纠正先前的错误,提升可以降低平均错误率和模型集合的大小,从而降低偏差。
通过使用多个模型,可以消除各个模型的错误,从而可能导致方差降低。
Boosting 与 bagging
在集成学习中,两种最常见的技术是 boosting 和 bagging。 Bagging 获取训练数据集,生成其随机子集,并在每个子集上训练不同的模型。然后结合使用这些模型来进行预测。这导致 bagging 和 boosting 之间存在相当多的差异,我们将在下面详细介绍。
套袋 | 提升 | |
模型训练 | 模型在不同的数据子集上并行训练。 | 模型按顺序进行训练,每个模型都关注前一个模型的错误。 |
减少错误焦点 | 减少方差 | 减少偏差 |
常用算法 | 随机森林、袋装决策树 | AdaBoost、梯度提升、XGBoost |
过拟合风险 | 随机抽样降低了过度拟合的风险 | 过度拟合的风险较高 |
计算复杂度 | 降低 | 更高 |
这两种技术都很常见,但提升是更流行的选择,因为它可以减少偏差和方差。
提升如何运作
让我们了解一下 boosting 是如何工作的。本质上,提升包括在先前模型出错的数据点上训练每个新模型。共有三个部分:
- 按误差对训练数据进行加权
- 在此加权误差数据集上训练新模型
- 将新模型添加到集成中
首先,假设我们已经训练了初始模型(一个模型的集合)。
按误差对训练数据进行加权
我们通过现有的集成运行训练数据,并注意集成对哪些输入给出了错误的预测。然后,我们创建训练数据集的修改版本,其中那些麻烦的输入更具代表性或更重要。
训练新模型
我们使用创建的修改数据集来训练新模型,该模型与集成中的其他模型类型相同。然而,这个新模型更关注训练数据中的困难示例,因此它可能会在这些示例上表现更好。这种错误性能的改进是减少偏差的重要组成部分。
融入新模式
新训练的模型被添加到集成中,并且其预测根据其准确性进行加权。同时,新的输入被传递到集成中的每个模型,并且每个模型的最终输出被加权以获得集成的输出。
对于分类任务(通常在提升问题中在两个标签之间进行选择),加权投票总和最高的类被选择作为集成的预测。
对于回归任务,集成的预测是每个模型预测的加权平均值。
增强算法的类型
增强算法有多种变体,它们之间存在一些巨大差异。最流行的是自适应增强 (AdaBoost)、梯度增强、极限梯度增强 (XGBoost) 和猫增强。我们将依次介绍每个内容。
阿达助推器
AdaBoost 与我们之前提出的 boosting 算法非常相似:在训练下一个模型时,对早期集成带来问题的训练数据会被赋予更多的权重。 AdaBoost 是最初的 boosting 算法之一,以其简单性而闻名。
与其他增强算法相比,AdaBoost 不太容易出现过度拟合,因为新模型会看到训练数据集的不同变化(硬数据点更为常见)。但是,与其他增强技术相比,它对异常数据更敏感,并且不会减少太多偏差。
梯度提升
梯度提升是一种独特的提升方法。与自适应增强相比,新模型不会获得训练数据集的误差加权版本。他们获得原始数据集。然而,他们不是尝试预测数据集中输入的输出,而是尝试预测每个输入上的前一个集合的负梯度。
负梯度本质上是集成模型权重和预测需要移动以减少误差的方向,以更接近正确的答案。将负梯度添加到先前集成的输出预测中(应用加权因子),以使其更接近正确。
梯度提升的性能远高于 AdaBoosting,尤其是在复杂数据上。还有更多的超参数需要调整,这给了人们更多的控制权,但也增加了实验的需要。
XGBoost
XGBoost(或极限梯度提升)是梯度提升的高度优化版本。 XGBoost 使梯度提升训练和推理更加并行。 XGBoost 还增加了正则化(即复杂性惩罚)以防止过度拟合并更好地处理丢失数据。最后,XGBoost 对于大型数据集或工作负载来说更具可扩展性。
XGBoost 的性能甚至比梯度提升还要高,是 2010 年代最流行的 ML 算法之一。但它也更难解释并且运行起来计算成本更高。
猫助推器
CatBoost 是一种梯度增强形式,旨在处理分类数据。分类数据是指值可以属于少数几个有限组的数据。以下是一些示例:
- 是 - 没有数据(例如,房子有车库吗?)
- 颜色类别(例如红色、蓝色、绿色)
- 产品类别(例如电子产品、服装、家具)
梯度增强模型通常不能很好地处理分类数据,而 CatBoost 可以。 CatBoost 还可以处理连续数据,使其成为另一个流行的 boost 选择。与其他梯度增强模型一样,CatBoost 也存在计算复杂性和过度拟合的问题。
升压的应用
Boosting 几乎可以应用于任何机器学习问题,因为错误和偏差通常比我们想要的要高。分类和回归是机器学习的两个重要分支,Boosting 对这两个分支都适用。内容推荐和欺诈检测是公司面临的机器学习问题的两个例子,boosting 也可以提供帮助。
分类和回归
分类和回归是机器学习的两个核心任务。用户可能想要预测图像是否包含狗或猫(分类),或者他们可能想要预测房屋的售价(回归)。 Boosting 对于这两项任务都很有效,特别是当底层模型较弱或不复杂时。
内容推荐
Boosting 通过迭代提高用户偏好的预测准确性来增强内容推荐(例如,Netflix 为您推荐的电影)。当推荐模型无法捕获某些观看模式(例如季节性偏好或上下文相关的选择)时,提升会创建专门关注这些错过的模式的额外模型。序列中的每个新模型都会对之前预测不佳的用户偏好给予额外的权重,从而降低错误率。
欺诈检测
在欺诈检测(金融公司的常见用例)中,通过逐步从错误分类的交易中学习来提高表现。如果初始模型错过了复杂的欺诈模式,则更新的增强模型专门针对这些麻烦的情况。该技术特别适合不断变化的欺诈策略,为最近的错误分类赋予更高的权重,使系统能够保持高检测率。
升压的优点
Boosting 非常适合减少模型偏差,并在较小程度上减少方差。与其他集成技术相比,它需要更少的数据,并且可以让人们更好地控制过度拟合。
减少偏差和方差
高偏差意味着模型经常是错误的。 Boosting 是一种减少模型偏差的好技术。由于每个模型都专注于纠正先前模型的错误,因此整体上降低了错误率。
减少方差也会产生副作用:较新的模型可能具有不同的训练数据混合,从而允许不同模型中的错误相互抵消。
需要更少的数据
与其他集成技术不同,Boosting 不需要庞大的数据集即可正常工作。由于每个新模型主要关注旧模型的错误,因此它的目标很窄,并且不需要大量数据。新模型可以使用现有的训练数据并针对错误进行重复训练。
更好地控制过度拟合
Boosting 有一些超参数,用于控制每个新模型对集成预测的贡献程度。通过修改这些超参数,用户可以减轻新模型的影响。这会增加偏差,但可能会降低方差,让用户可以控制他们想要在偏差与方差之间进行权衡的位置。
boosting 的挑战和局限性
不过,Boosting 也有其注意事项。它需要更多的时间来训练和使用,对异常数据敏感,并且需要更多的超参数调整。
训练时间更长
在提升过程中,每个新模型都取决于之前的集成错误。这意味着必须一次训练一个模型,从而导致训练时间较长。另一个缺点是,顺序训练意味着你可能不知道提升是否有效,直到你训练了十几个模型。
异常值敏感性
在提升过程中,新模型仅关注先前模型的错误。训练集中一些本应被忽略的离群数据可能反而成为后续模型的唯一焦点。这会降低集成的整体性能并浪费训练时间。可能需要仔细的数据处理来抵消异常值的影响。
更多超参数调整
让用户更好地控制过度拟合的优势也意味着用户需要调整更多的超参数以在偏差和方差之间找到良好的平衡。通常需要进行多次增强实验,这使得顺序训练变得更加繁琐。 Boosting 需要大量的计算资源。