Bootstrap 聚合集成方法的精髓

Bootstrap aggregation,或简称 bagging,是一种流行的集成方法,它在训练数据集的不同自助样本上拟合决策树。

它易于实现,对各种问题都有效,重要的是,对该技术的适度扩展会产生一些最强大的集成方法,例如随机森林,它们在各种预测建模问题上都表现良好。

因此,我们可以将 bagging 方法推广为集成学习的框架,并比较和对比属于“bagging 家族”的一系列常见集成方法。我们还可以使用这个框架来探索进一步的扩展以及如何根据项目数据集或选择的预测模型进一步定制该方法。

在本教程中,您将发现机器学习集成中 Bootstrap aggregation 方法的本质。

完成本教程后,您将了解:

  • 使用自助样本和决策树进行机器学习的 Bagging 集成方法。
  • 如何从 Bagging 方法中提取基本要素,以及随机森林等流行扩展如何与 Bagging 直接相关。
  • 如何通过为该方法的基本要素选择新的过程来设计 Bagging 的新扩展。

使用我的新书《使用 Python 的集成学习算法启动您的项目,其中包括分步教程和所有示例的 Python 源代码文件。

让我们开始吧。

Essence of Bootstrap Aggregation Ensembles

Bootstrap 聚合集成方法的精髓
图片由 GPA Photo Archive 提供,部分权利保留。

教程概述

本教程分为四个部分;它们是

  1. Bootstrap 聚合
  2. Bagging 集成的本质
  3. Bagging 集成家族
    1. 随机子空间集成
    2. 随机森林集成
    3. Extra Trees 集成
  4. 定制 Bagging 集成

Bootstrap 聚合

Bootstrap Aggregation,简称 bagging,是一种集成机器学习算法。

该技术涉及为每个集成成员创建训练数据集的自助样本,并在每个样本上训练决策树模型,然后使用平均预测值等统计数据直接组合预测。

Breiman 的 Bagging(Bootstrap Aggregation 的缩写)算法是最早、最简单但有效的基于集成的算法之一。

— 第 12 页,《集成机器学习》,2012 年。

训练数据集的样本是使用自助法创建的,该方法涉及有放回地随机选择示例。

有放回地选择意味着相同的示例被比喻性地返回到候选行的池中,并且可能在训练数据集的任何单个样本中再次或多次被选择。训练数据集中的一些示例也可能根本没有被选入一些自助样本。

一些原始示例出现多次,而一些原始示例则不存在于样本中。

— 第 48 页,《集成方法》,2012 年。

自助法具有使数据集的每个样本都大不相同,或者说在创建集成时有用不同的预期效果。

然后,在每个数据样本上拟合决策树。考虑到训练数据集的差异,每棵树都会略有不同。通常,决策树被配置为可能增加深度或不使用剪枝。这可以使每棵树对训练数据集更专业,进而进一步增加树之间的差异。

树的差异是可取的,因为它们会增加集成的“多样性”,这意味着产生预测或预测误差相关性较低的集成成员。普遍认为,由熟练且多样化(以不同方式熟练或犯不同错误)的集成成员组成的集成表现更好。

集成的多样性通过在每个分类器训练的自助复制中的变化以及使用相对较弱的分类器来确保,该分类器的决策边界相对于训练数据中相对较小的扰动而显着变化。

— 第 12 页,《集成机器学习》,2012 年。

Bagging 的一个好处是它通常不会过拟合训练数据集,并且集成成员的数量可以继续增加,直到在保留数据集上的性能停止提高为止。

这是 Bagging 集成方法的一个高级概述,但我们可以推广该方法并提取其基本要素。

想开始学习集成学习吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

Bagging 集成的本质

Bagging 的本质在于利用独立模型。

通过这种方式,它可能是“群体的智慧”这一比喻最接近的实现,特别是如果我们考虑到性能随着独立贡献者的增加而持续提高的话。

不幸的是,我们无法开发真正独立的模型,因为我们只有一个训练数据集。相反,Bagging 方法通过随机性来近似独立模型。具体来说,通过在用于训练每个模型的数据集采样中使用随机性,强制模型之间存在一定的半独立性。

虽然要获得真正独立的基学习器实际上是不可能的,因为它们是从同一个训练数据集中生成的,但通过在学习过程中引入随机性,可以获得依赖性较小的基学习器,并且可以期望集成具有良好的泛化能力。

— 第 48 页,《集成方法》,2012 年。

Bagging 过程的结构可以分为三个基本要素;它们是

  • 不同的训练数据集:为每个集成模型创建不同的训练数据集样本。
  • 高方差模型:在训练数据集的每个样本上训练相同的高方差模型。
  • 平均预测:使用统计数据组合预测。

我们可以将典型的 Bagging 方法映射到这些元素,如下所示

  • 不同的训练数据集:自助样本。
  • 高方差模型:决策树。
  • 平均预测:回归的均值,分类的众数。

这提供了一个框架,我们可以考虑模型每个基本元素的替代方法。

例如,我们可以将算法更改为另一种高方差技术,该技术具有某种不稳定的学习行为,例如 K 近邻,其 K 超参数值适中。

通常,Bagging 产生的组合模型优于使用原始数据的单个实例构建的模型。 […] 这尤其适用于不稳定归纳器,因为 Bagging 可以消除它们的不稳定性。在这种情况下,如果学习集中的扰动会导致构建的分类器发生显着变化,则归纳器被认为是不稳定的。

— 第 28 页,《使用集成方法的模式分类》,2010 年。

我们还可以将采样方法从自助法更改为另一种采样技术,或者更普遍地,完全不同的方法。实际上,这是文献中描述的许多 Bagging 扩展的基础。具体来说,是为了尝试获得更独立但仍具有技能的集成成员。

我们知道,独立基学习器的组合将导致误差大幅减少,因此,我们希望基学习器尽可能独立。

— 第 48 页,《集成方法》,2012 年。

让我们仔细看看其他可能被认为是 Bagging 家族一部分的集成方法。

Bagging 集成家族

许多集成机器学习技术可以被认为是 Bagging 的后代。

因此,我们可以将它们映射到我们的基本 Bagging 框架。这是一个有益的练习,因为它既突出了方法之间的差异,也突出了每种技术的独特性。也许更重要的是,它还可以激发您可能希望在自己的预测建模项目中探索的其他变体。

让我们仔细看看与 Bagging 相关的三种更流行的集成方法。

随机子空间集成

随机子空间方法,或随机子空间集成,涉及为每个集成成员选择训练数据集中特征(列)的随机子集。

每个训练数据集都有所有行,因为只有列是随机采样的。

  • 不同的训练数据集:随机采样列。

随机森林集成

随机森林方法可能是最成功和最广泛使用的集成方法之一,因为它易于实现并且在各种预测建模问题上通常具有卓越的性能。

该方法通常涉及选择训练数据集的自助样本和一小部分随机列子集,以便在每个集成成员中选择每个分裂点时考虑。

通过这种方式,它类似于 Bagging 与随机子空间方法的组合,尽管随机子空间仅用于决策树的构建方式。

  • 不同的训练数据集:自助样本。
  • 高方差模型:在随机列子集上具有分裂点的决策树。

Extra Trees 集成

Extra Trees 集成使用整个训练数据集,但它配置决策树算法以随机选择分裂点。

  • 不同的训练数据集:整个数据集。
  • 高方差模型:具有随机分裂点的决策树。

定制 Bagging 集成

我们简要回顾了典型的随机子空间、随机森林和 Extra Trees 方法,尽管这些方法没有理由不能共享更多的实现细节。

事实上,Bagging 和随机森林等算法的现代实现提供了足够的配置来组合许多这些功能。

与其详尽地介绍文献,不如我们自己设计映射到 Bagging 框架的扩展。这可能会激励您探索一种不那么常见的方法,或者设计一种针对您数据集或模型选择的 Bagging 方法。

Bagging 可能有数十或数百种扩展,它们对每个集成成员的训练数据集的准备方式或从训练数据集构建模型的具体细节进行了微小修改。

这些更改围绕着基本 Bagging 方法的三个主要元素构建,并且通常通过探索足够熟练的集成成员与保持预测或预测误差之间足够多样性之间的平衡来寻求更好的性能。

例如,我们可以将训练数据集的采样更改为无放回的随机样本,而不是自助样本。这被称为“粘贴”。

  • 不同的训练数据集:行的随机子样本。

我们可以更进一步,为每棵决策树选择行的随机子样本(如粘贴)和列的随机子样本(随机子样本)。这被称为“随机补丁”。

  • 不同的训练数据集:行和列的随机子样本。

我们也可以考虑我们自己的简单扩展。

例如,通常使用特征选择技术来选择输入变量的子集,以降低预测问题的复杂性(更少的列)并实现更好的性能(更少的噪声)。我们可以想象一个 Bagging 集成,其中每个模型都在由不同的特征选择或特征重要性方法选择的训练数据集的不同“视图”上进行拟合。

  • 不同的训练数据集:由不同特征选择方法选择的列。

作为建模管道的一部分,用许多不同的数据转换测试模型也很常见。这样做是因为我们无法事先知道训练数据集的哪种表示将最好地向学习算法揭示数据集未知的底层结构。我们可以想象一个 Bagging 集成,其中每个模型都在训练数据集的不同转换上进行拟合。

  • 不同的训练数据集:原始训练数据集的数据转换。

这些是 Bagging 方法本质如何被探索的一些可能显而易见的例子,希望能激发更多的想法。我鼓励您集思广益,思考如何将这些方法应用于您自己的特定项目。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

教程

书籍

文章

总结

在本教程中,您发现了机器学习集成中 Bootstrap aggregation 方法的本质。

具体来说,你学到了:

  • 使用自助样本和决策树进行机器学习的 Bagging 集成方法。
  • 如何从 Bagging 方法中提取基本要素,以及随机森林等流行扩展如何与 Bagging 直接相关。
  • 如何通过为该方法的基本要素选择新的过程来设计 Bagging 的新扩展。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握现代集成学习!

Ensemble Learning Algorithms With Python

在几分钟内改进您的预测

...只需几行python代码

在我的新电子书中探索如何实现
使用 Python 实现集成学习算法

它提供**自学教程**,并附有关于以下内容的**完整工作代码**:
堆叠、投票、提升、装袋、混合、超级学习器等等……

将现代集成学习技术带入
您的机器学习项目


查看内容

Bootstrap Aggregation 集成的本质的 8 条回复

  1. G 2021 年 8 月 5 日 下午 4:31 #

    感谢这个很棒的教程。如果我理解正确的话,对于作为随机森林一部分的决策树,该树是在从总批次中随机挑选的训练示例集(自举)上训练的,并且在树的每次分裂中,用于进行分类的特征也是随机挑选的?

    每次分裂通常使用哪种分类算法?

    再次感谢

  2. Kamal Oyebola 2022 年 1 月 19 日 下午 11:34 #

    你好,我正在做一个机器学习项目,我想使用随机森林或决策树。我还在处理时间序列股票市场数据。我认为数据的按时间顺序排列很重要,因此,使用 Bagging 是否明智?鉴于在新数据集形成时时间顺序会改变。

    我是机器学习新手,我非常需要你的帮助。
    此致

  3. azadeh 2022 年 11 月 29 日 上午 8:23 #

    感谢您的精彩收集,
    我有一个关于“平均预测”的不同方法的问题,有一些统计指导的预测方法吗?比简单的平均更有效吗?

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。