梯度提升 vs 随机森林

2025年1月7日 | 阅读15分钟

如今,机器学习凭借其强大的数据处理和预测能力,正在改变着许多领域。在所有可用的算法中,用于分类和回归问题的算法,尤其是梯度提升和随机森林,是最受欢迎的算法之一。Adaboost 和 SMS 从弱学习器到强学习器模型的建立,但它们在使用的技术上差异很大。本文非常详细地解释了梯度提升和随机森林,并提供了便于比较这两种算法、理解它们的区别、各自的挑战以及各自的应用场景的信息。

集成学习简介

这意味着在集成学习中,训练了多种类型的模型,或者在这样的上下文中,通常称为“弱学习器”或“基础学习器”,以构建一个最终的更强的模型。本质上,其理念是,模型的集合比任何单一模型都能提供更好的结果。

集成学习的类型

  1. Bagging (Bootstrap Aggregating): 在这里,bagging 使用多个模型,这些模型在训练数据的不同子集上并行构建,然后对结果进行平均。这种方法有助于降低方差,从而提高模型的准确性和稳定性。随机森林是 bagging 的一个典型例子,其中通过使用不同样本进行训练来生成多个决策树,因此,所有这些树的结果被组合起来以得出最终决策。
  2. Boosting: 为了提高训练模型的准确性,每个训练模型会尝试改进其前一个模型的错误。该方案的基本理念在于它将关注难以预测的样本,因此,这些样本包含在前一个模型的错误中。Boosting 算法通常被称为梯度提升、AdaBoost,并且最近,XGBoost 尤其受到关注。在 boosting 中,每个后续模型的权重会根据前一个模型的错误进行调整,这意味着我们得到的最终模型是最准确的。
  3. Stacking: Stacking 还包括训练多个模型,然后将这些多个模型的预测作为另一个称为合并模型的模型的特征,该模型做出最终决策。因此,stacking 涉及训练多个模型,然后将这些多个模型的结果用作另一个称为元学习器模型的预测变量,该模型做出最终预测。这种方法可以利用其他算法的优点来提高学习模型的性能。元学习器在基础模型的预测上进行训练,因此它学会了如何最好地组合基础模型的输出。

随机森林:概述

随机森林是一种基于决策树的提升方法,它在训练阶段创建多个决策树,在测试阶段,它给出最常见的类别或所有决策树预测的平均值。它由 Leo Breiman 和 Adele Cutler 于 2001 年开发。

随机森林的工作原理

  • Bootstrap 采样: 使用 Bootstrap 样本来构建多个决策树并构成随机森林。两个子集均通过在给定研究中对原始数据进行有放回抽样来生成。这意味着某些样本可以重复出现,而其他样本可能被排除。
  • 决策树: 为每个数据子集构建决策树。在构建每棵树时,在节点选择分裂点时只考虑部分特征。此过程称为特征 bagging,有助于减少树之间的相关性。每条路径都启用的树都会生长到最大深度,不进行剪枝。
  • 聚合: 最后,当所有树都构建完成后,单个树会达成共识并给出最终结果。应用于训练集的算法用于预测类别或值。对于未知数据的分类,选择具有最高投票数的类别;对于回归,取预测的平均值。这种聚合在估计权重时非常有用,因为它有助于降低方差,从而提高模型的性能。

随机森林的优点

  • 鲁棒性: 与其他基于决策树的算法类似,随机森林算法不会过拟合,并且随着树的数量 T 的增加,它相当稳定。在数据采样和特征选择中使用随机选择,随机性的引入最大限度地降低了模型方差。
  • 通用性: 它们还学习到它在处理分类和回归任务方面都很高效,并且在分类和数值数据方面都具有良好的功能。
  • 特征重要性: 出于此原因(以及其他原因),它会记录特征的重要性,并有助于特征选择。每个特征的重要性是通过置换该特征的值来计算精度降低而确定的。
  • 处理缺失值: 这意味着随机森林可以通过代理分裂来很好地处理缺失数据,代理分裂是在由于某个特征存在缺失值而无法基于该特征进行主要分裂时创建的子分裂。

随机森林的缺点

  • 复杂性: 树的大小取决于数据的大小,这会导致树的数量增加,并使模型解释起来更加复杂。要理解每棵树的决策过程以及它们是如何帮助得出上述最终决定的,可能会有些困难。
  • 预测速度慢: 事实上,由于需要询问森林中的所有树,因此预测可能需要很长时间。这在需要快速预测的实时应用等某些应用中可能是不利的。
  • 内存密集: 当以自监督的方式存储大量树时(这在实践中很常见),它们会占用大量内存。每棵树都为其结构和每个节点的数据存储空间,并且随着树的增长,这些空间会迅速增加。

随机森林的应用

  • 医疗诊断: 用于预测疾病状况和患者对疾病的反应。例如,随机森林可以应用于根据病历和诊断结果对患者患有某种疾病的可能性进行分类。
  • 金融: 应用于欺诈和风险管理。随机森林还具有利用学习到的模式轻松从过去数据中找出欺诈性交易的潜力。
  • 营销: 包括客户细分和流失客户预测。它还可以应用于区分不同客户群体(基于其行为模式),并找出哪些客户可能会离开。

梯度提升:概述

梯度提升是一种卓越的提升算法,以构建一系列模型而闻名,其中每个模型都试图最小化其前一个模型所犯的错误。它由 Jerome Friedman 于 1999 年融合。

梯度提升的工作原理

初始化:过程始于第一个模型,通常是目标值的均值,或其他简单模型。这是其他模型必须在此基础上构建的初始模型。

  • 顺序学习: 新模型逐渐引入,即顺序引入。下一个模型是构建来预测前一个模型组合的残差的。这里,残差是指实际目标与当前模型集合的预测之间的差距。
  • 梯度下降: 除了使用决策树之外,梯度提升还采用梯度下降来构建模型,以最小化损失函数。每个新模型都经过训练,以估计误差度量相对于当前模型预测的负导数。梯度指示损失函数最陡峭上升的方向和量,然后模型试图做与梯度相反的操作,即通过从权重中减去它来下降。
  • 更新: 将这些预测累加到现有模型中以创建新的、更准确的模型。新模型的预测如下:此过程执行一定次数的步骤或称为 epoch,这是一个预定义数量,或者直到模型质量停止改进。
  • 学习率: 还使用一个适应率来调节每个新模型的积极性。它会减弱每个模型的影响以避免过拟合。较低的学习率可能会导致更多的迭代,但能提供更好的泛化性能。

梯度提升的优点

  • 准确性: 梯度提升模型通常比随机森林等其他模型获得更高的准确性。这是因为模型采用迭代结构,纠正所犯的错误并确保预测的精确性。
  • 灵活性: 它还可以用于优化各种损失函数并处理不同的数据分布,使其适用于各种任务和问题类型。
  • 特征重要性: 可以获得用于特征选择的特征重要性指标。了解每个特征如何影响模型有助于处理重要特征,从而增强模型。
  • 正则化: 诸如收缩(有助于学习率)和子采样(每次模型使用一部分数据)之类的技术可以解决过拟合问题。正则化还控制模型可以估计的参数数量,从而增强模型的泛化能力。

梯度提升的缺点

  • 训练时间: 训练时间相对较慢,因为模型是在梯度提升中增量构建的。每次迭代都使用残差,其中一个模型拟合残差,这会带来高计算成本。
  • 复杂性: 模型可能会变得非常大且过度指定,导致难以解释其结果。分析模型和该模型产生的多个顺序校正如何工作并不总是容易的。
  • 参数调优: 其收敛性取决于超参数,这些超参数有时需要花费大量时间进行优化。必须对学习率、估计器数量和树的最大深度等限制进行微调以达到所需结果。
  • 过拟合: 如果没有正确正则化,它很容易过拟合,并且随着迭代次数的增加,情况会更糟。过拟合源于模型在噪声上进行训练,因此在处理新数据时可能会表现不佳。

梯度提升的应用

  • 金融: 信用评分和风险评估是标准。梯度提升也可用于信用评分和风险评估,以根据过去的信息评估个人的信用worthiness 以及金融世界中风险的存在和可能性。
  • 医疗保健: 疾病诊断和患者健康状况的预后。它可以利用患者的病史和实验室结果,帮助确定疾病的大致可能性以及患者的预后。
  • 营销: 客户选择和个性化目标营销。该模型还可用于客户细分,并因此根据客户偏好调整营销策略。
  • 保险: 理赔预测和欺诈活动检测。参考历史记录在估计潜在的保险索赔和发现欺诈案件时很有帮助。
  • 性能比较: 梯度提升在模型中起着核心作用,并与随机森林进行了比较。
  • 准确性: 通常,如果算法的参数得到良好优化,梯度提升的准确性会高于随机森林。这是因为在梯度提升中,模型是连续开发的,其中每个新模型都致力于最小化序列中前一个模型留下的错误。随机森林的工作方式不同,它独立地生长树木,这在某些情况下可能不是最佳的。
  • 训练时间: 随机森林通常比梯度提升花费更少的时间进行训练,因为树是并行创建的。梯度提升顺序形式的另一个缺点是当使用许多迭代时算法速度缓慢。尽管如此,随着时间的推移,已经进行了改进,例如 XGBoost 和 LightGBM,它们提高了梯度提升的训练速度。
  • 预测时间: 由于必须为森林中的每一棵树进行一次查询,因此在预测期间速度也较慢。由于梯度提升通常树的数量较少,因此有时可以更快地提供预测。然而,只有在需要实时预测时,这才会成为一个需要考虑的问题,因为总的来说,每种算法的预测时间差异可能很小。
  • 可解释性: 与许多其他方法一样,随机森林和梯度提升可能很复杂,并且有点难以理解。尽管如此,由于随机森林由多棵独立的决策树组成,因此它比梯度提升稍容易理解。与梯度提升通过顺序添加决策树的模型相比,可解释性略低。

处理不平衡数据

在处理不平衡数据时,梯度提升在处理不平衡数据方面通常比随机森林表现更好,因为它专注于学习错误以解决不平衡问题。如果需要,随机森林也可以通过过采样、欠采样或使用类别权重来处理不平衡数据。

  1. 超参数调优: 还需要提到的是,与随机森林相比,使用梯度提升时需要调整更多的超参数。为了获得最佳结果,可以设置以下参数:学习率、估计器数量和最大深度。随机森林的超参数较少,并且被认为非常敏感,因此易于控制。
  2. 对过拟合的鲁棒性: 因此,由于使用了 bagging 和特征的随机性,随机森林比 Adam 更不容易过拟合。关于梯度提升的一个重要事实是,如果未经适当正则化,它倾向于过拟合。为了调整梯度提升中的过拟合,可以使用诸如提前停止、收缩和子采样之类的技巧。

如何有效地使用梯度提升和随机森林

当预测变量集对结果影响较小(导致错误)时,当分布不典型时,当均值函数为正但轻微倾斜时,以及当可用的重采样技术难以获得时,可以使用随机森林。

  • 快速基线模型: 随机森林在构建相对快速且稳健的基线模型方面具有优势。
  • 可解释模型: 当需要可解释性时,可以检查随机森林中的单个树。
  • 大型数据集: 随机森林能够处理大量数据,并且对过拟合问题不那么敏感。

何时使用梯度提升

  • 高精度: 在需要最高精度的场合,可以对模型进行微调。
  • 复杂问题: 实际上,梯度提升适用于涉及分散数据分布的问题。复杂性是梯度提升的附加优势。
  • 处理不平衡: 在处理过的数据集时,梯度提升由于其纠正错误预测的能力而变得尤为突出。

超参数调优

随机森林

  • 树的数量('n_estimators'):当它们表现更好时,使用更多的树更好,但训练速度会变慢。
  • 最大深度('max_depth'):它控制每棵树的深度,以防止模型过拟合。
  • 最小样本分割('min_samples_split'):分裂树的内部节点所需的最小样本数。
  • 最小叶子样本('min_samples_leaf'):节点必须拥有的最小样本数才能合格为叶子节点。
  • 最大特征数('max_features'):在寻找最佳分割点时要考虑的特征数量。
  • 梯度提升
  • 学习率('learning_rate'):有助于调节每棵树的贡献。另一方面,较低的值需要更多的树来弥补差异。
  • 估计器数量('n_estimators'):要一个接一个构建的树的数量。
  • 最大深度('max_depth')控制每棵树的深度,并防止模型对其数据集过拟合。
  • 子采样('subsample'):用于构建每棵树的样本百分比。
  • 最小样本分割('min_samples_split')和最小叶子样本('min_samples_leaf'):与随机森林一样,或称为“随机森林分类器”。

正则化技术

  1. 随机森林
    • 为了保证稳定性,必须使用大量的树。
    • 一般步骤包括剪枝树以防止过拟合。
  2. 梯度提升
    • 降低学习率,同时增加树的数量/迭代次数。
    • 建议使用提前停止技术来避免过拟合。
    • 使用子采样将随机性引入样本,以尽量减少过拟合。

随机森林的基本算法

随机森林源于 bagging 原理(Bootstrap Aggregating),这是构建决策树并通过组合它们来获得输出的路径。以下是基本随机森林算法的分步概述:

输入: 包含训练样本的描述性特征及其分类的数据集。

Bootstrap 采样: 执行 bootstrap 过程,从给定数据集中生成多个 bootstrap 样本。每个样本使用对总体中的数据点的随机选择(有放回)来生成。

训练决策树: 关于每个 bootstrap 样本

  • 相反,在树的每次分割时只选择一个随机特征子集;这就是特征 bagging。
  • 训练一个决策树,使其生长到最大复杂度,而无需对树进行任何修剪。

聚合预测

  • 对于分类,通过投票平均任何树的结果以获得最终结果。对于回归,通过对单个树计算出的输出进行平均来汇总所有树的输出。

输出: 大规模决策树的最终实现,形成最终预测,它是所有树的集成。

梯度提升基本算法

梯度提升家族中的第一个算法是基本算法。

梯度提升涉及分步构建模型,其中新模型旨在最小化前一个模型产生的错误。以下是梯度提升基本算法的分步概述:

输入: 训练集的特征和标签,可微分的损失函数,n_estimators(迭代次数)和学习率。

初始化: 第一阶段使用最简单的模型,该模型提供目标变量的平均值(回归)或常数(分类)。

迭代

  • 每次都为下一次迭代执行当前模型的残差。
  • 通过训练一个新模型来预测这些残差,该模型通常是决策树。
  • 通过将新模型的预测乘以学习率来更新当前模型。

输出: 第 n 次迭代后的生产模型。

关键组件解释

Bootstrap 采样: 在随机森林中,用于生成不同的训练数据集以获得一致的树。

特征 bagging: 特征选择是随机进行的,在随机森林的情况下,选择一定数量的特征来分割每棵树的节点。

残差: 在梯度提升中,使用以下各项的平均值来训练下一个模型:实际值和预测值。

学习率: 梯度提升中使用的一个调优参数,它决定了每个后续模型对模型的影响程度。

损失函数: 在梯度提升算法中使用,以确定未来值与实际或目标对应物的偏差,用于调整模型的训练。

这些是构建随机森林和梯度提升机的简单基本算法,了解了这些基本算法后,很容易理解其他变体和实现。

梯度提升 vs 随机森林

方面随机森林梯度提升
概念使用 bagging 和特征随机性构建的决策树集成。顺序构建的集成,其中每个模型使用梯度下降纠正前一个模型的错误。
初始模型不适用从一个初始模型开始。
数据采样Bootstrap 采样每次迭代都使用整个数据集,重点关注残差。
特征选择每次节点分割时,会考虑一个随机特征子集。使用所有特征,但新模型是在残差上训练的。
聚合方法分类:多数投票。
回归:平均。
分类:最终模型结合了所有树的预测。
回归:最终模型结合了所有树的预测,并由学习率加权。

结论

尽管梯度提升和随机森林都是集成学习模型,但它们都有各自的优点和缺点。随机森林通常被选择是因为它不像梯度提升那样复杂,相对稳定且易于应用,而后者则非常适合实现高精度和解决高度复杂的问题。使用其中一个而不是另一个取决于特定的应用标准,例如精度、结果的可读性或可解释性,甚至数据类型。

理解和了解每种方法最适合的原理及其优缺点非常重要,以便做出正确的决策并最有效地制定机器学习模型。梯度提升和随机森林是两个算法,如果通过超参数进行良好调整并应用于正确的正则化类型,则可以在多个应用中获得出色的性能。

机器学习通过提供强大的工具来帮助数据分析甚至做出预测,极大地改变了许多领域。有相当多的算法,而在所有类别中,梯度提升和随机森林是在分类和回归任务的集成学习中最常用的两种算法。这两种方法都基于将多个弱学习器聚合成一个强学习器的思想;然而,这两种方法在方法和细节上有所不同。本文对梯度提升和随机森林算法进行了详细分析,并提供了指导性的比较,以使您的生活更轻松。


下一个主题图、网络和算法