使用集成学习提升机器学习算法性能

译者注:这篇文章是对 PythonWeekly 推荐的一篇讲集成模型的文章的翻译,原文为 Ensemble Learning to Improve Machine Learning Results,由 Vadim Smolyakov 于 2017 年 8 月 22 日发表在 Medium 上,Vadim Smolyakov 是一名 MIT 的研究生。水平有限,如有错误,欢迎评论区或者邮件或者私信指出。建议阅读英文原文。

集成学习(Ensemble Learning)通过联合几个模型来帮助提高机器学习结果。与单一模型相比,这种方法可以很好地提升模型的预测性能。这也是为什么集成模型在很多著名机器学习比赛中被优先使用的原因,例如 Netflix 比赛,KDD 2009 和 Kaggle。

集成方法是一种将几种机器学习技术组合成一个预测模型的元算法(meta-algorithm),以减小方差(bagging),偏差(boosting),或者改进预测(stacking)。

集成方法可以分为两类:

  • 序列集成方法(sequential ensemble methods),基学习器(base learner)顺序生成。序列方法的基本动机是利用基学习器之间的依赖关系。算法可以通过提高被分错样本的权重来提高性能。
  • 并行集成方法(parallel ensemble methods),基学习器并行生成。并行方法的基本动机是利用基学习器之间的独立性,因为可以通过平均来显著降低误差。

大多数集成方法使用一个基学习算法来产生多个同质基学习器(homogeneous base learners),即相同类型的学习器,这就是同质集成(homogeneous ensembles)。

也有一些方法使用的是异质学习器(heterogeneous learner),即不同类型的学习器,这就是异质集成(heterogeneous ensembles)。为了使集成方法能够比任何构成它的单独的方法更准确,基学习器必须尽可能的准确和多样。

Bagging

bagging 使用自助抽样法(bootstrapping)来为每个基学习器获得一个数据集的子集。对于如何聚合多个基学习器的结果,bagging 在分类任务中使用投票,而在回归任务重使用平均。

我们可以通过在 Iris 数据集上执行分类任务来学习 bagging。我们选择两种基学习器:决策树(decision tree)和 kNN 分类器。下图显示了基学习器在 Iris 上学习到的决策边界和他们 bagging 集成之后学习到的决策边界。

  • 决策树准确率:0.63(+/- 0.02)
  • kNN 准确率:0.70(+/- 0.02)
  • bagging 树准确率:0.64(+/- 0.01)
  • bagging kNN准确率:0.59(+/- 0.07)

Bagging

决策树的边界与轴平行,而 k=1k=1 时的 kNN 算法与数据点紧密贴合。该集成方法使用了 10 个基学习器,训练子集由原训练数据和特征的 80% 构成。

决策树集成相对于 kNN 集成达到了较高的准确率。kNN 对训练样本的扰动不敏感,因此也被称为稳定学习器(stable learner)。

稳定学习器的集成不太有利,因为这样的集成并不会提升泛化性能。

图一也显示了集成大小是如何提高测试准确率的。基于交叉验证的结果,我们可以看到在大约 10 个基学习器前准确率一直在增加,随后趋于平缓,在 0.7 左右上下波动。因此,再增加超过 10 个基学习器不仅没有得到准确率的提升,反而增加了计算复杂度。

我们也可以看到 bagging 树集成的学习曲线。注意到训练数据的平均误差为 0.3 和 测试数据的 U 型误差曲线。训练和测试误差差距最小时发生在 Training set size in percent 为 80% 左右。

一种常用的集成算法是随机森林。

在随机森林算法中,每个树都是基于从原训练数据集中有放回抽样(即自助抽样法)得到的子集训练的。另外,也对特征进行自助抽样,而不是使用全部特征。

最终随机森林的偏差可能会轻微增大,但是由于平均了几个不相关的树的结果,降低了方差,导致最终模型的整体性能更好。(译者注:个人觉得类似于时间序列分析中的移动平均

极限随机树(extremely randomized tree)算法中,随机性更近了一步:分裂阈值是随机选取的。与寻找最具有判别性的阈值不同,极限随机树为每个候选特征选取一个阈值,并将这些阈值的最佳值作为最终的分割阈值。这通常会降低方差,偏差会稍微增大。

Boosting

Boosting 指的是能够将弱学习器转化为强学习器的一系列算法。Boosting 的主要原理是给一系列的弱学习器赋予权重,这些弱学习器各自的性能仅仅比随机猜测高一些,例如小的决策树。先前被分错的样本会被给予更多权重。

在进行分类任务时,使用一个加权投票来决定最终的预测,而在回归任务时使用加权和。Boosting 和其他方法例如 bagging 的主要区别是基学习器使用加权版本的数据集来顺序生成。

下面的算法是 AdaBoost(ADAptive BOOSTing),这是目前使用最广泛的 boosting 算法:

AdaBoost

如上图所示,每一个基学习器由一个深度为 1 的决策树组成,因此当 n_est=1 时模型只是基于一个特征阈值将样本空间分为两部分。上图也显示了集成大小是如何提高测试准确率的以及训练样本和测试样本的学习曲线。

梯度树提升(Gradient Tree Boosting)是 boosting 在任意可微分损失函数的一种推广,既可用于回归也可用于分类,同样是顺序生成基学习器。

Stacking

Stacking 是一种通过元分类器(meta-classifier)或者元回归器(meta-regressor)来综合几个分类模型和回归模型的集成学习技术。基模型(base level model)基于整个数据集进行训练,然后元模型(meta-model)将基模型的输出作为特征来进行训练。( 译者注:个人觉得和 stacking-autoencoder 一个思想 )

基模型通常由不同的学习算法组成,因此 stacking 集成通常是异构的。下面的算法总结了 stacking :

  • KNN 准确率:0.91(+/- 0.01)
  • 随机森林 准确率:0.91(+/- 0.06)
  • 朴素贝叶斯 准确率:0.92(+/- 0.03)
  • Stacking 准确率:0.95(+/- 0.03)

Stacking

如上图所示,该 stacking 集成由 KNN、随机森林和朴素贝叶斯这几个基分类器构成,其预测输出再由逻辑斯底回归综合构成一个元分类器。我们可以看到 stacking 实现了决策边界的混合。上图还显示了 stacking 的准确率要高于单独的分类器,且基于学习曲线,模型没有过拟合的迹象。

Stacking 在 Kaggle 比赛中经常被用到。例如,在 Otto Group Product Classification 比赛中第一名就使用了超过 30 个模型,这些模型的输出又被作为特征来训练得到 3 个元分类器:XGBoost、神经网络和 AdaBoost。可以在 这里 查看细节。

译者注:为了直观,我把获胜者所使用的模型结构图放在下面。

模型结构

Code

生成本文所用图片的代码在这个 jupyter notebook 上。

Conclusion

除了本文研究的方法外,集成学习也通常用于深度学习来训练多样化和高准确率的分类器。可以通过不同的网络结构、超参数设置和训练技巧来达到多样性。

集成方法在比赛数据集中获得创纪录的性能方面非常成功,也是 Kaggle 数据科学比赛中优胜者常用的算法。

Recommended reading

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

CNN神经网络内部知识表达的“黑”与“白“

来源:知乎-Qs.Zhang张拳石 https://zhuanlan.zhihu.com/p/31365150 ▌前言 ---- 关于神经网络内部的知识表达,深...

3478
来自专栏Fish

Andrew Ng的机器学习课程概述(三)

第十三章 无监督学习 首先讲的K-mean聚类原理还是挺简单的。就是你要分K个类,你就选择K个点做中心点,然后让所有的点进行计算,离哪个点最近,就选择成为这个点...

1938
来自专栏杨熹的专栏

强化学习 10: 实践中的一些技巧

1. 我们知道在交叉熵方法中,例如进行一百次实验,那么只需要选择其中最好的25次。这样的采样其实是效率很低的。

651
来自专栏AI研习社

语义分割研究党福利来袭,谷歌宣布开源 DeepLabv3+

DeepLab 是一种用于图像语义分割的顶尖深度学习模型,其目标是将语义标签(如人、狗、猫等)分配给输入图像的每个像素。 经过三年左右的发展,目前 DeepLa...

4767
来自专栏新智元

Ian Goodfellow:生成对抗网络 GAN 的公式是怎样推导出来的

2275
来自专栏ATYUN订阅号

谷歌大脑团队新尝试 用奇异向量典型相关分析解释深度神经网络

深度神经网络(DNNs)在视觉、语言理解和语音识别等领域取得了前所未有的进展。但这些成功也带来了新的挑战。与许多以前的机器学习方法不同的是,深度神经网络可以很容...

3848
来自专栏AI科技评论

王宇龙:如何通过关键数据通路去理解网络行为?

AI科技评论按:神经网络长久以来的“黑盒”属性,导致人们一直无法理解网络的内部是如何运作的,针对这个困扰已久的问题,学界主要存在三种研究方向:数据归因模式、特征...

623
来自专栏计算机视觉战队

什么促使了候选目标的有效检测?

首先,把之前推送的关于大数据问题与解决办法的内容上传给大家,供大家去学习去挖掘有用的知识。 网址:http://pan.baidu.com/s/1nvwoQ0p...

2949
来自专栏人工智能LeadAI

LSTM模型在问答系统中的应用

在问答系统的应用中,用户输入一个问题,系统需要根据问题去寻找最合适的答案。 1、采用句子相似度的方式。根据问题的字面相似度选择相似度最高的问题对应的答案,但是采...

4757
来自专栏专知

【明星自动大变脸,嬉笑怒骂加变性】最新StarGAN对抗生成网络实现多领域图像变换(附代码)

【导读】图像之间的风格迁移和翻译是近年来最受关注的人工智能研究方向之一,这个任务在具有趣味性的同时也是很有挑战的。相关的研究成果也层出不穷,有的甚至引起了全世界...

4739

扫码关注云+社区

领取腾讯云代金券