集成学习提高机器学习效果

集成学习通过综合多个模型来帮助改进机器学习结果。与单一模型相比,这种方法可以产生更好的预测性能。这就是为什么集成方法被广泛应用在许多著名的机器学习竞赛中,比如Netflix Competition,KDD 2009和Kaggle。

这里Stats bot团队将会向你介绍这个方法的优点,并且数据科学家瓦迪姆Smolyakov会深入介绍三个基本集成学习技术。

集成方法是将多种机器学习技术结合成一个预测模型的元算法,例如常用于减少方差的bagging算法、减小偏差的boosting算法或用于提升预测性能的stacking方法。

集成方法大致可分为两大类:

  • 顺序集成方法,其中基学习方法是顺序生成的(例如AdaBoost)。顺序方法的基本思想是利用个体学习器之间的依赖关系,因此可以通过剔除之前错误标记的例子来提高性能。
  • 并行集成方法,其中基学习方法可并行生成(例如随机森林)。并行方法的基本思想是利用个体学习器之间的相互独立性,因此通过平均可以显著降低误差。

大多数集成方法仅使用一种基学习算法来生成一组“个体学习器”,此时集成中只包含同种类型的个体学习器,这样的集成是同质的(homogeneous)。

也有一些集成方法使用不同类型的学习算法,即会产生不同类型的个体学习器,导致异质(heterogenous)集成。为了使集成方法比其任何成员方法更精确,个体学习器必须尽可能准确和尽可能多样化。

Bagging

Bagging基于自助聚合。降低估算方差的一种方法是将多个估算值平均在一起。例如我们可以在数据的不同子集上训练M个不同的树(随机选择替换)并计算集合:

Bagging使用自助采样法来获取训练基学习器的数据子集。为了汇总基础学习器的输出,bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

我们可以通过在Iris数据集的分类任务学习bagging。我们可以选择两个基本估计器:决策树和k-NN分类器。图1显示了基础估计器的学习决策边界以及应用于Iris数据集的bagging集成。

准确度:0.63(+/- 0.02)[决策树] 准确度:0.70(+/- 0.02)[K-NN] 准确度:0.64(+/- 0.01)[Bagging Tree] 准确度:0.59(+/- 0.07)[Bagging K-NN]

如图可以看到决策树显示的轴线平行边界,同时K-NN分类器在这里选取1作为k值。采用10个基本估计量对训练数据和特征进行占比80%的抽样。

与k-NN的bagging集成相比,决策树bagging集成的准确度更高。K-NN对训练样本的波动较不敏感,因此被称为稳定学习器。稳定学习器之间几乎没有差异性,因此集成稳定学习器不会提高泛化性能。

该图还显示了测试精度如何随着集成的大小而提高。在交叉验证的结果中,我们可以看到准确性增加到大约10个基本估计值,然后趋于平稳。因此,将基本估计量添加到10以上仅增加了Iris数据集的计算复杂度,而没有提高准确性。

我们也可以看到bagging tree集成的学习曲线。注意训练数据的平均误差为0.3,测试数据为U形误差曲线。训练和测试错误之间的最小偏差产生在训练集大小的80%左右。

常用的一类集成算法是随机森林。在随机森林中,集合中的每棵树都是从训练集中的替换样本(即自助采样方法所获得的样本)中生成的。另外,不使用所有的特征,而是选择一个随机的特征子集,进一步增大树之间的差异性。

因此,随机森林的偏差略有增加,但由于相关性较小的树的平均使其方差减小,致使整体具有较好增益效果。

在一个极其随机的树算法中,随机性更进一步:分裂阈值是随机的。而不是寻找最具判别力的阈值,对于每个候选特征随机选取阈值,并且将这些随机生成的阈值中的最好的挑选为分割规则。通常这样做可以减少模型的方差,代价是稍微增加偏差。

Boosting

Boosting是指能够将弱学习器转化为强学习器的一系列算法。提升的主要原则是将一系列弱学习者-比随机猜测稍好的模型,如小型决策树-拟合数据的加权版本。在boosting算法中前几轮基学习器的错误分类例子会很重要。

然后通过加权多数表决(分类)或加权平均(回归)将结果结合起来以产生最终的预测。Boosting和并行学习方法(如bagging)之间的主要区别在于,基础学习器将按照数据的加权版本顺序进行训练。

下面的算法描述了Boosting最著名的代表AdaBoost算法:

我们看到第一个基本分类器y1(x)是使用完全相等的加权系数进行训练的。在随后的增加轮次中,针对被错误分类的数据点的权重系数增加,并且针对正确分类的数据点的权重系数减小。

ε表示每个基础分类器的加权错误率。因此,加权系数α给予更准确的分类器更大的权重。

AdaBoost算法如上图所示。每个基础学习器由一个深度为1的决策树组成,因此根据一个特征阈值对数据进行分类,该特征阈值将空间划分为两个与同一个轴平行的由线性决策表分隔开的区域。该图还显示了测试精度如何随着集成的大小以及训练和测试数据的学习曲线而改善。

梯度树提升算法是任意可微损失函数的推广。它可以用于回归和分类问题。梯度提升按顺序构建模型:

在每个阶段,选择决策树hm(x)以使给定当前模型Fm-1(x)的损失函数L最小化:

用于回归和分类的算法在所使用的损失函数类型不同。

Stacking

Stacking是一种通过元分类器或元回归器组合多个分类或回归模型的集成方法。初级模型是基于一个完整的训练集进行训练,然后元模型是特征训练基础层模型的输出。

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

以上精确度在上图的右上图中可见:

准确度:0.91(+/- 0.01)[KNN] 准确度:0.91(+/- 0.06)[随机森林] 准确度:0.92(+/- 0.03)[朴素贝叶斯] 准确度:0.95(+/- 0.03)[stacking分类器]

上图展示了一个stacking集成方法的例子。它将k-NN,随机森林和朴素贝叶斯作为初级学习器,它们的生成结果结合Logistic回归作为元分类器。我们可以看到stacking分类器实现的决策边界的混合。从图中还可以看出,stacking比单独的分类器具有更高的准确性,并且,在学习曲线中没有显示过度拟合的迹象。

stacking是赢得Kaggle数据科学竞赛的常用方法。例如,奥托集团产品分类挑战赛的第一名使用了30多个模型的stacking集成,其输出被用作三个元分类器的特征:XGBoost、神经网络和Adaboost。详细信息请参阅以下链接

代码

本文中用于生成图像的所有代码,可见于这个ipython笔记本

总结

除了本文所研究的方法之外,通常在深度学习中使用集成学习来训练兼具多样性和准确度的分类器

。个体学习器的多样性可以通过改变体系结构、超参数设置和训练技术来实现。

集成方法在测试数据集上创造了良好的性能记录,并且是Kaggle数据科学竞赛的获胜的常用方法。

推荐阅读

这篇文章首发于Stats and Bots

本文的版权归 hzr 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏媒矿工厂

HDR关键技术:逆色调映射(二)

HDR技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前HDR内容非常短缺,限制了HDR视听节目的广泛应用。逆色调映射(Inverse Tone Ma...

4216
来自专栏云时之间

机器学习常用算法分类(2)

感谢大家的关注,在上一篇文章中发布后很多热心的小伙伴建议我可以改进下分类的方式,一种是根据学习的方式分类,另外一种是根据类似的形式或者功能进行分类,我几天一直在...

2828
来自专栏磐创AI技术团队的专栏

深度学习之视频人脸识别系列四:人脸表征-续

【磐创AI导读】本文是深度学习之视频人脸识别系列的第四篇文章,接着第三篇文章,继续介绍人脸表征相关算法和论文综述。在本系列第一篇文章里我们介绍了人脸识别领域的一...

3681
来自专栏大数据挖掘DT机器学习

Deep Learning论文笔记之K-means特征学习

自从Deep Learning之风盛起之时到现在,江湖上诞生了很多都可以从无标签数据中学习到深度的分级的特征的算法。大部分情况,这些算法都涉及到一个...

3807
来自专栏数据派THU

一文读懂最近流行的CNN架构(附学习资料)

来源: 机器学习算法全栈工程师 本文长度为4259字,建议阅读6分钟 本文为你介绍CNN架构,包括ResNet, AlexNet, VGG, Inception...

1K5
来自专栏数据科学与人工智能

【机器学习】模型选择的一些基本思想和方法

作者:高涛 编辑:王小宁 0. 引言 有监督学习是日常使用最多的建模范式,它有许多更具体的名字,比如预测模型、回归模型、分类模型或者分类器。这些名字或来源统计...

4739
来自专栏机器学习算法工程师

ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构

作者:叶 虎 编辑:王抒伟 本文翻译自ResNet, AlexNet, VGG, Inception: Understanding various ar...

1.3K6
来自专栏机器之心

AAAI 2018 | 阿里iDST联合华东师大提出τ-FPL: 线性时间的约束容忍分类学习算法

41710
来自专栏个人分享

最大期望算法 Expectation Maximization概念

在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中...

1552
来自专栏机器之心

从贝叶斯角度,看深度学习的属性和改进方法

选自arXiv.org 机器之心编译 参与:蒋思源、吴攀 深度学习是一种高效的非线性高维数据处理方法,它可以更自然地解释为一种工程或算法,而本论文希望从贝叶斯...

46713

扫码关注云+社区

领取腾讯云代金券