前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简析集成学习

简析集成学习

作者头像
企鹅号小编
发布2018-02-11 10:10:46
8760
发布2018-02-11 10:10:46
举报

当我们第一次接触机器学习问题的时候,面对着大量的数据和一个分类/回归的机器学习任务,我们本能地会采取这样的方式:选择一个决策树分类器或一个Lasso回归模型,将我们的数据全部灌入模型中,然后以看戏的心态看着模型一步步迭代、完成训练,随后我们看了一眼准确率,感叹一下机器学习的神奇,就感觉自己的任务完成了;随着学习的深入,我们了解到训练集/测试集的切分、交叉验证等一系列的评估手段,进而走入了“调参”的深坑,度过了许多个不眠之夜;经过多次的课程作业或实践任务,利用我们学到的方法和技巧,我们似乎已经能够选择出对某个特定问题最有效的模型,并能够很好地优化模型的参数,在单个模型的训练上,我们似乎可以出师了。

这是否代表我们对于提高机器学习任务准确率的追寻之路到此为止了?对于一次学习实践,似乎到此为止也算收获颇丰了,但对于实际数据竞赛的结果调优或科研实验的结果调优,我们可以通过集成学习的方法,最大限度地提升算法的性能,获得更好的结果。集成学习是机器学习的一个重要研究方向,本篇文章将对于集成学习进行简要的介绍。

集成学习简介

集成学习,顾名思义,就是将多种学习方法集合在一起,以生成最终的学习结果。在一个特定数据集上,为解决一个实际的分类/回归问题,传统的机器学习方法的思想是寻找一个分类器,最大程度的拟合数据集的实际分布函数。例如决策树、神经网络、支持向量机都是单个的分类器模型;而集成学习的思想是,将多个分类器的分类结果通过某种方式组合起来,取得比单个分类器更好的性能。集成学习的想法有点类似于俗话说的“三个臭皮匠,赛过诸葛亮”,类比到机器学习的模型,就是对于一个特定问题,单个的模型可能会在某些情况下出错,但是许多模型一起参与决策,相互补充,就不容易出错了。

集成学习在许多数据竞赛上起到了重要的作用,可以显著提高最终的准确率,例如机器学习大牛陈天奇为参加Kaggle竞赛设计的XGBoost【1】项目就是一种基于Boosting(集成学习的一种)思想的算法,直到现在仍被许多参赛队伍使用。

集成学习是由两个大的步骤组成的:首先,我们需要根据训练数据,训练一组不完全相同的分类器(基模型);其次我们需要通过某种策略(集成策略),将这些训练好的分类器组合起来。而通过在这个两个步骤上采取不同的策略,可以将集成学习分为Bagging、Boosting和Stacking三个大类,在对每一类详细介绍前,我们先理清楚几个基本概念。(为避免混淆,本文只以分类为例讲解各方法的原理,对于回归问题,其原理相同,只是具体步骤不同)

图1:集成学习示意图

基本概念

1、模型的偏差与方差

偏差(Bias):描述模型分类的准确程度,偏差越低,模型分类越准;

方差(Variance):描述模型的泛化能力,方差越小,模型泛化能力越强,分类结果越稳定。

模型的偏差和方差可以用《Understanding the Bias-Variance Trade-off》【2】中的一张图形象地展示出来,模型的偏差就好比射箭比赛中选手瞄准是否准确,瞄的越准,偏差越低,而方差好比选手持弓是否稳健,手越稳,方差越低。

图2:偏差(Bias)与方差(Variance)

2、弱模型:在集成学习中,弱模型常常指的是偏差较大但方差较小的模型,虽然分类准确率不足,但泛化能力较好。集成学习中会使用到弱模型,但其分类准确率要高于50%(二分类问题)。

3、交叉验证(Cross Validation)

在给定的样本中,拿出大部分样本进行模型构建,小部分样本用于对建立的模型进行验证评估,循环进行下去,直到所有的样本都被用于验证了一次,这样的方法叫做交叉验证。【3】其中,N折交叉验证(K fold Cross Validation)指的是将样本集合切成相等大小的N等份,其中一份用于验证,其余用于模型构建的交叉验证;而当验证集合只有一个样本,其余样本皆用于模型构建时,称为留一交叉验证(Leave-one-out CrossValidation)。

Bagging

说完上述几个基本概念,我们就可以开始对三种集成学习的方法做一个简要介绍了,首先是Bagging【4】。Bagging的思想是利用抽样生成不同的训练集,进而训练不同的模型,将这些模型的输出结果用投票或平均的方式得到最终的结果。Bagging本质上是利用了模型的多样性,改善算法整体的效果。Bagging的重点在于不同训练集的生成,这里使用了一种名为Bootstrap的方法,即有放回的重复抽样,并进行随机抽样,生成与原数据集大小相同的数据集。

Bagging的流程如下图所示:

图3:Bagging示意图

Bagging是通过降低模型的方差以提高模型的准确率的,直观上讲,若每个基模型的偏差与方差都相同,通过最后一步的平均,总体模型的偏差不变,但方差由于取平均变为原来的1/N。

随机森林【5】是基于Bagging思想的一个改进算法,随机森林中,采用Bootstrap的方式生成多个数据集,基模型全部为决策树,并且,随机森林对于数据集中样本的特征也进行了重采样,每个基模型只会对样本的一部分特征进行训练,从而进一步提高了基模型的多样性。

随机森林算法效果的优越性与决策树的特性和Bagging的特性都是分不开的,我们知道,决策树是一种表示能力很强的模型,具有过拟合的倾向,它的偏差很低,同时方差非常高,而Bagging正好可以帮助整体模型降低方差,提高模型的泛化能力。

Boosting

正如字面意思,Boosting是一种提升算法,其思想是,在算法迭代的过程中,每次迭代构建新的分类器,重点关注被之前分类器分类错误的样本,迭代进行,最终加权平均所有分类器的结果,提升分类精度。Boosting的思想也很直观,比如学生时代大家背单词,反复背诵的过程中,重点关注的应该是之前没有记牢的部分。

Boosting的流程如下图所示:

图4:Boosting示意图

Boosting通过找出自身分错的样本,并不断改正来提升模型精度的,即不断降低模型的偏差,因而理论上Boosting能够在训练集上获得任意高精度的模型;Boosting是串行模型,每一个基模型的生成都依赖于前一步迭代的结果,由于不能并行,Boosting在很长一段时间内都为人诟病。

AdaBoost是最具代表性的Boosting算法,其具体及流程可参考博文:“Adaboost 算法的原理与推导”【6】。

Stacking

如文章开始所述,Bagging和Boosting都是在基模型的生成方面,利用基模型的多样性,互补有无,提升算法性能;与之不同,Stacking则从集成方法的角度对模型提升给出指导。不同于Bagging和Boosting在集成策略上使用的简单的加权平均策略,Stacking【7】使用一个机器学习模型将不同基模型的结果集成起来,降低误差。

Stacking的详细阐述可以参考论文《STACKEDGENERALIZATION》。如下图所示,Stacking主要分为两个部分,第一部分是训练一组不同的基模型(称为L0模型),将这组基模型的分类结果作为新的训练集,训练一个模型(L1模型)给出最终的分类结果。

图5:Stacking示意图(注:LOCV为留一交叉验证)

为避免过拟合的问题,Stacking使用留一交叉验证的方式训练不同的L0模型,并使用留一交叉验证测试集的分类结果及正确标签的集合,作为L1模型的输入。

在《STACKED GENERALIZATION》中,Wolpert谈到,实验证明,根据训练任务,Stacking能够很好地调整对不同基模型的使用,提升分类精度;但同时,Stacking也被他称为Black Art,因为基模型的选择和集成策略中模型的选择都没有明确的限定,大多根据先验知识选择。

总结

本文对集成学习的主要方法做了简要介绍和归纳,其中,Bagging通过构造不同的训练集以提升基模型多样性,加权平均各模型的结果,降低模型方差以提高模型精度;Boosting通过迭代,逐步改善模型缺陷,降低模型偏差以提高模型精度;Stacking通过附加机器学习模型来决定集成策略,从而对基模型结果给出最优化的组合,以减小模型整体的误差。

实验证明,使用Bagging几乎总能得到比任何一个单一的基模型更好的性能,在误差较小的数据集上,Boosting的表现可以比Bagging更好,但Boosting对于噪音很敏感,在噪音较大的数据集上,Boosting的表现甚至会比基模型还差;Stacking的应用虽然需要大量的先验知识,但通过调优,利用Stacking似乎总能得到更好的模型表现,如Wolpert在论文中所说,面对每一个要解决的机器学习问题,似乎都应该使用某一种Stacking策略,以取得更好的模型表现。

参考文献

【1】Chen T, He T, Benesty M, et al. xgboost: Extreme GradientBoosting[J]. 2017.

【2】Fortmannroe S. Understanding the bias-variance tradeoff[J]. 2012.

【3】范永东.模型选择中的交叉验证方法综述[D].山西大学, 2013.

【4】Breiman L. Bagging predictors[J]. Machine Learning, 1996,24(2):123-140.

【5】Breiman L. Random Forests[J]. Machine Learning, 2001, 45(1):5-32.

【6】http://blog.csdn.net/sunshine_in_moon/article/details/46714917

【7】Wolpert D H. Stacked generalization *[M]. Springer US, 2011.

【8】梁英毅.集成学习综述.

推荐:机器学习基石&技法 中国台湾大学 林轩田

《EnsembleMethods: Foundations and Algorithms》 南京大学 周志华

本文来自企鹅号 - PKUFineLab媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - PKUFineLab媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档