作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
胡安·曼努埃尔·奥尔蒂斯·德·萨拉特的头像

胡安是布宜诺斯艾利斯大学的讲师. 他的研究重点是人工智能、自然语言处理和社交网络. 他有十多年的数据科学经验,并在ML会议上发表过论文, 包括SPIRE和ICCS.

以前在

布宜诺斯艾利斯大学
分享

“三个臭皮匠胜过一个诸葛亮”这句谚语在涉及到问题时就有了新的含义 机器学习 乐团. 在Kaggle比赛中,集合方法是一些最受欢迎的ML家族, 在那里他们经常以令人印象深刻的成绩赢得比赛.

但在卡格尔之前一个世纪,统计学家弗朗西斯•高尔顿爵士(Sir Francis Galton)就注意到了聚合智能的潜力. 他偶然在一个牲畜集市上看到一个比赛,参赛者必须猜测一头牛的重量. 800人提交了猜测, 但他们的技能水平各不相同:农民和屠夫与从未近距离见过牛的城市居民一起猜测, 所以高尔顿认为一般的猜测是错误的.

It 结果 that the mean of the crowd’s guesses was off by less than a pound (< 0.1%). 然而,即使是最好的个人预测也偏离了目标.

这怎么可能?? 是什么使这样一个意想不到的结果成为可能?

是什么让机器组合如此有效

这件事迫使高尔顿质疑自己的信仰,也说明了是什么让合奏团如此强大:如果你有 不同的 以及独立模型,训练使用 数据的不同部分 对于同样的问题,他们在一起工作会比单独工作更好. 的原因? 每个模型将学习概念的不同部分. 因此,每个模型都会根据其“知识”产生有效的结果和错误.”

但最有趣的是,每一个正确的部分都是互补的,而错误的部分则相互抵消:

这张图描绘了八种不同模型的概念, 每个人都学习一组不同的事实,这些事实可能重叠,也可能不重叠. 结果结合了每个模型所学到的知识,并消除了它们的一些错误.

您需要在不同的数据子集上训练具有高方差的模型(如决策树). 这种增加的方差意味着每个模型过拟合不同的数据, 但是当结合在一起时, 方差消失了, 仿佛被施了魔法. 这创建了一个新的、更健壮的模型.

就像高尔顿的例子一样, 当来自所有数据源的所有数据被合并时, 结果比孤立的数据点更“聪明”.

Kaggle竞赛中集成学习的深入研究

奥托集团产品分类挑战赛, 参与者必须建立一个能够区分主要产品类别的预测模型.

这里你可以看到 获胜的模型已经建立. 这是一个三层的堆叠:第一层有33个模型, 第二个增加了三个(XGBoost), 神经网络, 和演算法), 第三个是前一层输出的加权平均值. 这是一个非常复杂的模型,也是一个整体.

Kaggle的另一个成功案例是由陈成龙创建的模型 众花搜索结果相关性竞赛. 挑战在于创造一个可以用来衡量搜索结果相关性的预测器. 你可以阅读完整的 解释他的方法, 但我们感兴趣的是合奏, 这个故事的关键部分是获胜的解决方案使用了35个模型的集合, 它们中的许多也是集合——一个元集合, 可以这么说.

整体方法

在机器学习中有许多实现集成方法的方法. 我们将探索一些最流行的方法:

  • 装袋
    • 随机森林
  • Boosting
    • 演算法
    • 梯度增强和XGBoost
  • 混合系综方法
    • 投票
    • 叠加
    • 级联

装袋

如前所述,您需要在不同的数据子集上训练许多模型. 在实践中, 这并不容易,因为与单个模型相比,多个模型需要更多的数据, 有时,获得高质量的数据集并不容易. 这时bagging(引导聚合)就派上了用场, 因为它通过自举分割数据:一个随机样本与替换, 产生重叠的不同子集.

一旦你训练了你的整体模型, 您可以通过您喜欢的任何度量(即平均值)来聚合每个模型预测,从而构建最终预测, 中位数, 模式, 等等......。. 您还可以使用模型预测概率来制作加权度量:

图表显示使用bagging技术通过Bootstrap拆分数据, 汇总来自各个子集的每个模型预测以产生最终输出.

如果我们想用 决策树 作为模型,但是我们的数据中没有很强的预测属性,所有的树都是相似的. 这是因为相同的属性往往位于根节点中, 在树的每个分支上产生相似的结果.

随机森林

解决这个问题的一个技巧是 随机森林. 它使用树来制作套袋集成,但每个节点将其可能的属性限制为一个随机子集. 这迫使模型不同,从而解决了前面的问题. 这也使得随机森林成为一个很好的模型 特征选择.

随机森林是最流行的机器学习模型之一,因为它具有低方差和低训练时间的良好性能.

Boosting

boost也使用bootstrapping来训练模型, 主要区别在于它根据模型预测误差为每个实例添加权重. 而装袋是一个平行的过程, 助推是一个连续的过程, 每个模型都有更多的概率. 这允许它访问以前模型预测的一些实例.

经过这样的修改, boost试图增加对错误分类实例的关注,以达到更好的全局性能:

这张图描绘了装袋和增压所使用的不同方法, 说明装袋的平行性质和助推的顺序性质.

它也增加了模型的权重. 训练时表现较好的预测者在预测阶段的权重较高.

让我们仔细看看一些最流行的助推模型:

演算法

演算法是最早实现boost的公司之一. 它几乎完全符合我们概述的一般提升,并使用决策树作为模型. 让我们用一些伪编码来解释训练阶段:

对于每个实例
    赋值w[i](权重,所有值相同)
对于每个迭代t
    通过加权增强生成子集s[t](使用w[i]权重)
    用s[t]训练模型m[t]
    商店m [t]
    计算e[t] (m[t]的错误率)
    将错误率e[t]赋给存储的m[t]模型
    If (e[t] <= a_threshold)
        退出
    使用m[t]个误差更新权重

在预测时,它根据错误率对每个预测进行加权 e[t] 为每一个计算. 错误率高的结果比准确率高的结果权重小.

梯度增强和XGBoost

在训练这么多模型并使它们协同工作时,一个主要问题是找到最佳的超参数配置. It is difficult to find the best configuration for a single 模式l; finding the best configuration for n 模型的复杂性呈指数增长. 孤立模型的理想配置可能与必须与其他模型协同工作的模型的配置不同. 因此,您应该同时搜索所有模型的配置,但是如何搜索呢?

梯度增强为这个问题提供了一个优雅的解决方案. 它产生了一个损失函数, 作为输入, 所有模型的所有超参数值和, 作为输出, 整个集合的误差. 通过 梯度下降法,求函数(i)的最小值.e.(误差最小),从而得到每个模型的最佳超参数配置.

这种方法引入了缩放问题. 进入结构化数据的机器学习之王:极端梯度增强,简称XGBoost. 这是一个非常有效的梯度增强实现, 多亏了各种技术, 比如并行计算, 内置交叉验证功能, 正则化以避免过拟合, 硬件优化. XGBoost提供了出色的性能.

当它的创造者将它用于Kaggle挑战并以较大优势获胜时,XGBoost变得流行起来. 他发布了结果,并创建了一个Python包装器,以便让更多人使用它. 当许多人认识到它的潜力时,XGBoost很快就成为了热门产品 毫升冠军.

混合系综方法

但故事并没有就此结束. 我们已经看到许多类型的组合都使用同一种模型——为什么不尝试不同模型的组合呢? 如果你做得好,你可以创建一个更强大的机器学习方法 混合合奏.

投票

投票是创建混合集成的最简单方法之一. 它训练了许多不同的模型算法,并让它们在预测阶段“投票”:

图表显示数据流到三个训练模型:支持向量机, 逻辑回归, ,然而,. 前者和后者的输出为1,而Logistic回归的输出为0. 最终结果是1.

您可以根据每个模型的性能或预测概率为其添加权重,并生成加权投票.

叠加

通过在基本模型上添加一个新的层来进行最终预测,而不仅仅是计算平均值或多数,堆叠改进了投票的思想. 它增加了元学习的概念, 由于新层不是从数据中学习,而是从模型预测中学习:

显示数据流到三个训练过的基本模型的图表, 在显示最终输出之前,将它们的输出组合在一个堆叠模型中.

您可以堆叠您喜欢的所有元层,从而产生具有许多级别的模型. 对于堆叠模型,我建议使用决策树、svm或感知器. 对于基本模型, 你可以用任何你想用的方法, 甚至是另一个组合, 创建集合的集合. 对于像决策树这样的基础模型,堆叠的效果甚至更好,决策树不仅可以生成一个值预测, 还有它正确的概率.

堆叠不如套袋或提升流行,因为更难以解释堆叠模型正在学习什么,而且有更多的变体:您可以使用许多模型算法的组合, hyperparameter配置, 和堆叠层. 然而, 使用正确的模型组合, 堆垛甚至可以比提升和装袋更强大.

级联

当您希望在预测中具有很大程度的确定性时,可以使用级联. 它使用堆叠方法,但每层只有一个模型. 在每个级别上,模型都会丢弃它们认为不属于所需类的实例.

使用级联,简单模型在复杂模型之前评估数据. 在预测步骤中,第一个模型接收数据. 如果确定性不大于 x (值必须很大,大于0.9),它将实例传递给下一个模型. 否则,级联将返回该模型的预测输出. 如果没有层可以高度确定地预测所需的类, 集合返回负类.

该模型的一个经典用例是预测何时交易可能是欺诈性的. 让我们假设一个系统每天计算数百万个事务,并且不可能手动控制每一个事务. 使用级联集成可以以非常高的概率丢弃非欺诈性的事务, 只留下一小部分事务需要手工检查:

描述使用级联来检测欺诈交易的图表. 有两个模型排除了欺诈的可能性,其确定性大于0.9,而随后的一个模型检测到一个较低的确定性,提示手动检查.

当你需要一款优秀的手机时,这些型号都是不错的选择 回忆 度规.

不像投票和堆叠, 级联集成使用多状态方法而不是多专家方法. 对于非常深的级联非常重要,因为它可能会产生过拟合.

集成方法的价值

将许多模型结合起来,我们可以创建更好、更强大的预测器, 就像人类一起工作一样. 我们概述了三个家族的合奏-装袋, Boosting, 还有杂交种,看看它们是如何训练和预测的.

决策树可能是一个非常弱且不稳定的模型(具有很高的方差)。, 但是一群不同的树(随机森林)可以是一个非常准确和稳定的预测器. 集成的主要优点之一是它们构建的模型具有低方差和低偏差, 这是机器学习中最大的权衡之一. 在大多数情况下,它们优于其他方法,有时甚至比深度学习更好. 它们只有在处理非结构化数据时才比深度神经网络弱.

如果我们继续与深度神经网络进行比较, 我们也可以说,在训练和测试阶段,集成往往更轻、更快. 此外,它们不需要昂贵的硬件来运行,比如功能强大的独立gpu.

的确,集合缺乏被人类直观理解的可能性,因为同时工作的数十或数百个模型创建了一个庞大而复杂的工具. 值得庆幸的是,一些技术允许我们理解这些方法是如何做出决策的. 其中最受欢迎的是 石灰, 一种在任何机器学习模型上为特定实例创建可解释解释的方法.

Kaggle竞赛的存在并不仅仅是为了让开发者获得乐趣、学习新技能或赢得奖品. 最终目标是创建强大的模型并将其释放到野外, 让他们在现实世界中施展魔法. 这些类型的模型被处理关键问题的组织所使用. 例如, 欺诈检测是银行和旅游等行业的常见用例, 哪些交易在单笔交易中转移了大量资金.

与其他模型相比,集成模型的方差和偏差更小,预测效果更好. 然而, 很难解释他们正在学习什么, 这在一些敏感的应用中是至关重要的. 这方面的一个例子是个人贷款行业:ML模型可以确定个人是否有资格获得贷款. 然而, 如果客户询问金融机构拒绝贷款的原因, 应该有详细的解释, 而不仅仅是“因为我们的机器学习模型是这么说的.”

最终, 是否要为企业应用程序创建强大的ML模型, 大银行或小企业, 或者只是参加比赛来Boosting你的职业声誉, 乐团 应该是你选择的工具吗.

了解基本知识

  • 为什么我们使用集成学习?

    集成学习使用许多不同的机器学习方法同时一起工作. 这使得它成为当今最强大、最容易训练的预测器家族之一.

  • 决策树是集成学习吗?

    当决策树被孤立时,它们不是集合,但是一组决策树一起工作可以创建不同类型的集合, 比如梯度增强或随机森林.

  • 有哪些不同类型的模型组合?

    有五种类型的模型集合:袋装、提升、投票、堆叠和级联.

  • 什么是Kaggle比赛?

    Kaggle比赛是由Kaggle组织的比赛, 参与者试图创建最好的机器学习模型来解决给定的问题. 许多竞赛提供可观的经济奖励,并由想要实施这些解决方案的公司赞助.

就这一主题咨询作者或专家.
预约电话
胡安·曼努埃尔·奥尔蒂斯·德·萨拉特的头像

位于 布宜诺斯艾利斯城,阿根廷布宜诺斯艾利斯

成员自 2019年11月6日

作者简介

胡安是布宜诺斯艾利斯大学的讲师. 他的研究重点是人工智能、自然语言处理和社交网络. 他有十多年的数据科学经验,并在ML会议上发表过论文, 包括SPIRE和ICCS.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

以前在

布宜诺斯艾利斯大学

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.