第八章 集成学习
- 个体与集成
- Boosting
- Bagging 与随机森林
-
- 结合策略
-
- 多样性
个体与集成
集成学习通过构建并结合多个学习器来完成学习任务,也被称为多分类器系统。
集成学习的一般结构:先学习一组个体学习器,再用某种策略将他们结合起来。
若集成中只包含同种类型的个体学习器,则这样的集成是同质。同质集成中的个体学习器亦称为基学习器。相应的学习算法称为基学习算法。不同的称为异质,称为组件学习器。
那么集成学习如何获得比最好的单一学习器更好的性能呢?
集成学习器的结果通过投票法产生,少数服从多数。因此,要获得好的集成,个体学习器应该好而不同。即个体学习器要有一定的准确性,并且有多样性。而因为训练数据相同,多样性和准确性相斥。
根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类。即个体学习器问存在强依赖关系、必须串行生成的序列化方法,以及个体学习器
间不存在强依赖关系、可同时生成的并行化方法;前者的代表是 Boosting ,后者的代表是 Bagging 和"随机森林"。
Boosting
Boosting是一族可以将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复直到基学习器数目达到事前指定的T,最终将这T个基学习器进行加权结合。
Boosting族算法中最著名的是AdaBoost。
AdaBoost算法有多种推导方式,比较容易理解的是基于加性模型,即基学习器的线性组合:
来最小化指数损失函数:
看到这里回想一下之前的机器学习算法,不难发现机器学习的大部分带参模型只是改变了最优化目标中的损失函数:如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是log-Loss,那就是Logistic Regression了。
具体说来,整个Adaboost 迭代算法分为3步:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。
因此最重要的就是学习基分类器的权重和下一次训练样本的权重。这两个权重都是基于加性模型迭代式优化指数损失函数的角度推导出来的,具体过程不再赘述。
学习基分类器的权重:是根据分类器的错误率更新的
每个训练样本在下一次的权重:
在训练的每一轮中,根据样本分布为每一个训练样本重新赋予一个权重,这叫做重赋权法。对无法接受带权样本的基学习算法,则可通过重采样法处理。
**重赋权法 **: 对每个样本附加一个权重,这时涉及到样本属性与标签的计算,都需要乘上一个权值。
重采样法 : 对于一些无法接受带权样本的及学习算法,适合用“重采样法”进行处理。方法大致过程是,根据各个样本的权重,对训练数据进行重采样,初始时样本权重一样,每个样本被采样到的概率一致,每次从N个原始的训练样本中按照权重有放回采样N个样本作为训练集,然后计算训练集错误率,然后调整权重,重复采样,集成多个基学习器。
第五行:检验此时基分类器是否比随机猜测好,若不是则停止训练。
从偏差-方差分解来看:Boosting算法主要关注于降低偏差,每轮的迭代都关注于训练过程中预测错误的样本,将弱学习提升为强学习器。从AdaBoost的算法流程来看,标准的AdaBoost只适用于二分类问题。
Bagging 与随机森林
由于集合中的个体学习器要尽可能相互独立来获得多样性,但训练样本又不能少。这两种算法都是通过互有交叠的采样子集解决的。
Bagging
Bagging是并行式集成学习方法的代表。它基于自主采样法:给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。约有63.2%的样本出现在采样集中。
这样,我们采样出T个含m个训练样本的采样集,然后学习出T个基学习器,再将其结合。在预测输出是,对分类任务采用简单投票法,对回归任务采用简单平均法。
可以看出Bagging主要通过样本的扰动来增加基学习器之间的多样性,因此Bagging的基学习器应为那些对训练集十分敏感的不稳定学习算法,例如:神经网络与决策树等。从偏差-方差分解来看,Bagging算法主要关注于降低方差,即通过多次重复训练提高稳定性。不同于AdaBoost的是,Bagging可以十分简单地移植到多分类、回归等问题。总的说起来则是:AdaBoost关注于降低偏差,而Bagging关注于降低方差。
随机森林
随机森林RF是Bagging的一个扩展变体。他进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性;而在RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,再从子集中选择一个最优属性进行划分。一般推荐k=logd。这使得随机森林的多样性不仅来自于样本扰动,还来自于属性扰动。
一般来说,随机森林的训练效率会由于Bagging。
结合策略
平均法
加权平均法的权重一般是从训练数据中学习得到,训练样本的不充分或噪声会使得学习的权重不可靠,学习的权重较多时也容易出现过拟合,因此加权未必一定优于平均。一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
投票法
绝对多数投票法(majority voting)提供了拒绝选项,这在可靠性要求很高的学习任务中是一个很好的机制。同时,对于分类任务,各个基学习器的输出值有两种类型,分别为类标记和类概率。
一些在产生类别标记的同时也生成置信度的学习器,置信度可转化为类概率使用,一般基于类概率进行结合往往比基于类标记进行结合的效果更好,需要注意的是对于异质集成,其类概率不能直接进行比较,此时需要将类概率转化为类标记输出,然后再投票。
学习法
在训练数据很多时,可以通过另一个学习器来进行结合。
Stacking是学习法的典型代表。Stacking的基本思想是:首先训练出T个基学习器,对于一个样本它们会产生T个输出,将这T个基学习器的输出与该样本的真实标记作为新的样本,m个样本就会产生一个m*T的样本集,来训练一个新的“投票”学习器。投票学习器的输入属性与学习算法对Stacking集成的泛化性能有很大的影响,书中已经提到:投票学习器采用类概率作为输入属性,选用多响应线性回归(MLR)一般会产生较好的效果。
多样性
数据样本扰动,即利用具有差异的数据集来训练不同的基学习器。例如:有放回自助采样法,但此类做法只对那些不稳定学习算法十分有效,例如:决策树和神经网络等,训练集的稍微改变能导致学习器的显著变动。
输入属性扰动,即随机选取原空间的一个子空间来训练基学习器。例如:随机森林,从初始属性集中抽取子集,再基于每个子集来训练基学习器。但若训练集只包含少量属性,则不宜使用属性扰动。
输出表示扰动,此类做法可对训练样本的类标稍作变动,或对基学习器的输出进行转化。
算法参数扰动,通过随机设置不同的参数,例如:神经网络中,随机初始化权重与随机设置隐含层节点数。
参考文献https://blog.csdn.net/u011826404/article/details/70172971
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)