社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习中的梯度提升机

新机器视觉 • 1 年前 • 257 次点击  

机器学习是为各种复杂的回归和分类任务构建预测模型的最流行的技术之一。梯度提升机(Gradient Boosting Machine,GBM)被认为是最强大的提升算法之一。

尽管机器学习中使用的算法非常多,但Boosting算法已成为全球机器学习社区的主流。Boosting 技术遵循集成学习的概念,因此它结合了多个简单模型(弱学习器或基础估计器)来生成最终输出。GBM 还用作机器学习中的集成方法,将弱学习器转换为强学习器。在本主题“机器学习中的 GBM”中,我们将讨论梯度机器学习算法、机器学习中的各种 boosting 算法、GBM 的历史、它的工作原理、GBM 中使用的各种术语等。但在开始之前,首先,了解机器学习中的 boosting 概念和各种 boosting 算法。

什么是机器学习中的Boosting?

Boosting 是流行的学习集成建模技术之一,用于从各种弱分类器构建强分类器。它首先根据可用的训练数据集构建主要模型,然后识别基本模型中存在的错误。识别错误后,建立第二个模型,并进一步在此过程中引入第三个模型。这样,引入更多模型的过程就会持续下去,直到我们得到一个完整的训练数据集,模型可以通过该数据集进行正确的预测。

AdaBoost(自适应增强)是机器学习历史上第一个将各种弱分类器组合成单个强分类器的增强算法。它主要致力于解决二元分类等分类任务。

Boosting算法的步骤:

增强算法有以下几个重要步骤:

  • 考虑具有不同数据点的数据集并对其进行初始化。

  • 现在,为每个数据点赋予相同的权重。

  • 假设该权重作为模型的输入。

  • 识别错误分类的数据点。

  • 增加步骤 4 中数据点的权重。

  • 如果获得适当的输出,则终止此过程,否则再次执行步骤 2 和 3。

例子:

假设我们有三个不同的模型及其预测,并且它们以完全不同的方式工作。例如,线性回归模型显示数据中的线性关系,而决策树模型尝试捕获数据中的非线性关系,如下图所示。

此外,如果我们以系列或组合的形式使用这些模型,而不是单独使用这些模型来预测结果,那么我们会得到一个比所有基本模型具有正确信息的结果模型。换句话说,如果我们使用这些模型的平均预测,而不是使用每个模型的单独预测,那么我们将能够从数据中捕获更多信息。它被称为集成学习,Boosting 也是基于机器学习中的集成方法。

增强机器学习中的算法

机器学习中主要有 4 种 boosting 算法。具体如下:

  • 梯度提升机(GBM)

  • 极限梯度提升机(XGBM)

  • 轻型GBM

  • 猫助推器

机器学习中的 GBM 是什么?

梯度提升机(GBM)是机器学习中最流行的前向学习集成方法之一。它是构建回归和分类任务预测模型的强大技术。

GBM 帮助我们获得弱预测模型(例如决策树)集合形式的预测模型。每当决策树作为弱学习器执行时,生成的算法就称为梯度增强树。

它使我们能够结合来自各种学习器模型的预测,并构建具有正确预测的最终预测模型。

但这里可能会出现一个问题,如果我们应用相同的算法,那么多个决策树如何能够比单个决策树提供更好的预测?此外,每个决策树如何从相同的数据中捕获不同的信息?

因此,这些问题的答案是每个决策树的节点采用不同的特征子集来选择最佳分割。这意味着每棵树的行为不同,因此从相同的数据中捕获不同的信号。

GBM 是如何运作的?

一般来说,大多数监督学习算法都基于单一预测模型,例如线性回归、惩罚回归模型、决策树等。但是机器学习中也有一些监督算法依赖于通过集成将各种模型组合在一起。换句话说,当多个基本模型贡献其预测时,所有预测的平均值将通过增强算法进行调整。

梯度增强机由以下 3 个要素组成:

  • 损失函数

  • 学习能力较弱

  • 加法模型

让我们详细了解这三个要素。

1.损失函数:

尽管如此,机器学习中有很多损失函数,可以根据要解决的任务类型来使用。 损失函数的使用是根据条件分布的鲁棒性等具体特征的需求来估计的。在我们的任务中使用损失函数时,我们必须指定损失函数和计算相应负梯度的函数。一旦我们得到了这两个函数,它们就可以很容易地实现到梯度提升机中。然而,已经为 GBM 算法提出了几种损失函数。

损失函数的分类:

根据响应变量y的类型,损失函数可以分为以下不同类型:

  1. 连续响应,y ∈ R:


  • 高斯 L2 损失函数

  • 拉普拉斯 L1 损失函数

  • Huber 损失函数,指定 δ

  • 分位数损失函数,指定 α

  • 分类响应,y ∈ {0, 1}:


    • 二项式损失函数

    • Adaboost 损失函数

  • 其他响应变量系列:


    • 生存模型的损失函数

    • 损失函数计数数据

    • 自定义损失函数

    2. 弱学习者:

    弱学习器是基础学习器模型,可以从过去的错误中学习,并帮助构建强大的预测模型设计,以增强机器学习中的算法。一般来说,决策树在增强算法中充当弱学习器。

    Boosting 被定义为持续改进基础模型输出的框架。许多梯度增强应用程序允许您“插入”各种类别的弱学习器供您使用。因此,决策树最常用于弱(基础)学习器。

    如何训练弱学习者:

    机器学习使用训练数据集来训练基础学习器,并根据先前学习器的预测,通过关注先前树具有最大错误或残差的训练数据行来提高性能。例如,浅树被认为是决策树的弱学习者,因为它包含一些分裂。一般来说,在 boosting 算法中,具有最多 6 个分割的树是最常见的。

    下面是训练弱学习器以提高其性能的序列,其中每棵树都与前一棵树的残差位于序列中。此外,我们引入每棵新树,以便它可以从前一棵树的错误中学习。 具体如下:

    1. 考虑一个数据集并在其中拟合决策树。

      F1(x)=y

    2. 用前一棵树的最大误差来拟合下一棵决策树。

      h1(x)=y?F1(x)

    3. 通过在步骤 1 和 2 中添加这棵新树,将其添加到算法中。

      F2(x)=F1(x)+h1(x)

    4. 再次将下一个决策树与前一个决策树的残差进行拟合。

      h2(x)=y?F2(x)

    5. 重复我们在步骤 3 中所做的相同操作。

      F3(x)=F2(x)+h2(x)

    继续这个过程,直到某种机制(即交叉验证)告诉我们停止。这里的最终模型是 b 个个体树的阶段性加性模型:

    f(x)=BΣb=1fb(x)

    因此,树是贪婪地构建的,根据基尼等纯度分数选择最佳分割点或最小化损失。

    3. 加法模型:

    加性模型被定义为向模型添加树。尽管我们不应该一次添加多棵树,但必须只添加一棵树,这样模型中的现有树就不会改变。此外,我们还可以通过添加树来选择梯度下降法来减少损失。

    过去几年,梯度下降法被用来最小化神经网络中回归方程的系数和权重等参数集。计算出误差或损失后,使用权重参数来最小化误差。但最近,大多数机器学习专家更喜欢弱学习子模型或决策树作为这些参数的替代品。其中,我们必须在模型中添加一棵树来减少误差并提高模型的性能。这样,新添加的树的预测与现有树系列的预测相结合,得到最终的预测。此过程持续进行,直到损失达到可接受的水平或不再需要改进。

    该方法也称为函数梯度下降或函数梯度下降。

    极限梯度提升机 (XGBM)

    XGBM 是梯度增强机的最新版本,其工作原理也与 GBM 非常相似。在 XGBM 中,树是按顺序添加的(一次一棵),从先前树的错误中学习并改进它们。虽然 XGBM 和 GBM 算法在外观和感觉上很相似,但它们之间仍然存在一些差异,如下所示:

    • XGBM 使用各种正则化技术来减少模型的欠拟合或过拟合,这也比梯度增强机更能提高模型性能。

    • XGBM 遵循每个节点的并行处理,而 GBM 则不然,这使得它比梯度增强机更快。

    • XGBM 帮助我们摆脱缺失值的插补,因为默认情况下模型会处理它。它自行了解这些值是否应该位于右侧节点或左侧节点中。

    光梯度增强机(Light GBM)

    Light GBM 是梯度增强机的升级版,因其效率高且速度快。与GBM和XGBM不同,它可以处理大量数据而没有任何复杂性。另一方面,它不适合那些数量较少的数据点。

    Light GBM 更喜欢树节点的叶向生长,而不是水平生长。此外,在light GBM中,主节点被分裂为两个辅助节点,然后选择一个辅助节点进行分裂。辅助节点的这种分裂取决于两个节点之间哪个具有更高的损耗。

    因此,由于叶向分割,在给定大量数据的情况下,光梯度提升机(LGBM)算法始终优于其他算法。

    CATBOOST

    catboost 算法主要用于处理数据集中的分类特征。尽管 GBM、XGBM 和 Light GBM 算法适用于数值数据集,但 Catboost 旨在将分类变量处理为数值数据。因此,catboost 算法包含一个重要的预处理步骤,用于将分类特征转换为任何其他算法中不存在的数值变量。

    Boosting算法的优点:

    • 增强算法遵循集成学习,这使得模型能够给出更准确的预测,这是不可超越的。

    • Boosting 算法比其他算法灵活得多,因为它可以优化不同的损失函数并提供多种超参数调整选项。

    • 它不需要数据预处理,因为它适用于数值变量和分类变量。

    • 它不需要对数据集中的缺失值进行插补,它会自动处理缺失的数据。

    Boosting算法的缺点:

    以下是 boosting 算法的一些缺点:

    • 提升算法可能会导致过度拟合以及过分强调异常值。

    • 梯度提升算法不断关注最小化错误,并且需要多个树,因此计算成本很高。

    • 这是一种耗时且内存耗尽的算法。

    • 尽管可以使用各种工具轻松解决这个问题,但本质上解释性较差。

    结论:

    通过这种方式,我们学习了机器学习中预测建模的增强算法。此外,我们还讨论了 ML 中使用的各种重要的 boosting 算法,例如 GBM、XGBM、light GBM 和 Catboost。此外,我们还了解了各种组件(损失函数、弱学习器和加性模型)以及 GBM 如何与它们配合使用。Boosting 算法如何有利于在现实场景中的部署等。

    来源:毛毛虫大侠

    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/165692
     
    257 次点击