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

译者注:这篇文章是对 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 条评论
登录 后参与评论

相关文章

来自专栏生信小驿站

文献翻译A 15-gene signature for prediction of colon cancer recurrence and prognosis based on SVM(1)Abstr

从Gene Expression Omnibus数据中收集5个结肠癌样本微阵列数据和癌症基因组图谱(TCGA)。在预处理之后,GSE17537中的数据是使用用于...

492
来自专栏PaddlePaddle

卷积神经网络的经典结构(二)

正文部分系《解析卷积神经网络——深度学习实践手册》基础理论篇部分,本次将详细介绍卷积神经网络中经典网络模型案例分析,包括Alex-Net、VGG-Nets、Ne...

872
来自专栏人工智能

深度学习如何在医学影像分割上大显神通?——分割网络的三个改进思路

一、医学影像分割有助于临床工作 图像分割在影像学诊断中大有用处。自动分割能帮助医生确认病变肿瘤的大小,定量评价治疗前后的效果。除此之外,脏器和病灶的识别和甄别也...

1K10
来自专栏机器之心

继1小时训练ImageNet之后,大批量训练扩展到了3万2千个样本

3415
来自专栏AI研习社

CVPR 2017精彩论文解读:综合使用多形态核磁共振数据的3D生物医学图像分割方法 | 分享总结

论文的故事还在继续 相对于 CVPR 2017收录的共783篇论文,即便雷锋网(公众号:雷锋网) AI 科技评论近期挑选报道的获奖论文、业界大公司论文等等是...

3456
来自专栏媒矿工厂

视频编码性能提升新途径——面向编码的动态预/后处理技术

2017年9月17日至20日,IEEE国际图像处理会议(ICIP 2017)在北京国家会议中心举办,国内外许多学术界以及工业界的专家学者们都与会进行交流与讨论。...

4025
来自专栏量子位

清华段路明组自然子刊发文,揭深度神经网络和量子多体问题关联

转载自 清华大学交叉信息研究院官网 清华大学量子信息中心段路明教授和其博士研究生郜勋发现深度神经网络和量子多体问题存在紧密关联,证明利用深度神经网络模型可以有效...

2433
来自专栏企鹅号快讯

简析集成学习

当我们第一次接触机器学习问题的时候,面对着大量的数据和一个分类/回归的机器学习任务,我们本能地会采取这样的方式:选择一个决策树分类器或一个Lasso回归模型,将...

2119
来自专栏机器学习算法与Python学习

集成学习(EL)综述

机器学习方法在生产、科研和生活中有着广泛应用,而集成学习则是机器学习的首要热门方向。集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而...

2768
来自专栏量化投资与机器学习

【深度研究】Stacking 集成学习在多因子选股中的应用

2192

扫码关注云+社区