201119西瓜书系列博客---8、集成学习

201119西瓜书系列博客---8、集成学习

一、总结

一句话总结:

8.1、个体与集成:集成如何获得比单一学习器更好的性能
8.2、Boosting;8.3、Bagging与随机森林
8.4、结合策略:模型集成在一起的策略
8.5、多样性:增强多样性

1、集成学习 介绍?

集成学习(ensemble learning)通过【构建并结合多个学习器】来完成学习任务,常可获得比单一学习器显著优越的泛化性能。
理论上,集成学习对于【弱学习器】的集成效果最明显,故许多理论研究都是以弱学习器作为基学习器进行的。
但是实践中往往【使用比较强的学习器】,这样就可以使用较少的学习器,或者重用常见学习器的一些经验等等。

2、【8.1、个体与集成】 集成如何获得比单一学习器更好的性能?

若集成的结合策略是投票法,则有以下这些情况:(a)集成提升性能(b)集成不起作用(c)集成起负作用
上图说明,【要获得好的集成,个体学习器应“好而不同”】,即个体学习器在保持一定准确性的同时,要保证不同个体学习器之间有一定的差异,即【多样性(diversity)】。

3、【8.1、个体与集成】 集成的错误率?

假设基分类器的错误率【互相独立】,则由Hoeffding不等式可知,集成的错误率为:$$P ( H ( x ) eq f ( x ) ) = sum _ { k = 0 } ^ { lfloor T / 2 floor } left( egin{array} { l } { T } \ { k } end{array} ight) ( 1 - epsilon ) ^ { k } epsilon ^ { T - k }leq exp ( - frac { 1 } { 2 } T ( 1 - 2 epsilon ) ^ { 2 } )$$
由式可知,随着基学习器数量T的增加,集成的错误率将【以指数级下降】,最终趋向于0
但是以上的证明是以基学习器的【误差相互独立】这个假设为前提而进行的,而在现实任务中这显然不可能(个体学习器都是为了解决同一个问题训练出来的,不可能相互独立)。
一般的,个体学习器的准确性和多样性是互有冲突的。集成学习的研究核心就在于【如何产生并结合好而不同的个体学习器】

4、【8.2、Boosting】 ?

Boosting族算法最著名的代表是AdaBoost

5、【8.2、Boosting】 Boosting算法要点?

【重采样】:为了【避免训练过程过早停止】,则可采用重采样法(re-sampling)来处理,即根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。
使用重采样法,则【在抛弃不满足条件的当前基学习器后】,可根据当前的数据分布重新对训练样本进行采样,再基于新的采样结果重新训练新的基学习器,从而使得学习过程可以持续到预设的T轮完成。
【降低偏差】:从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能【基于泛化性能相当弱的学习器构建出很强的集成】。

6、【8.3、Bagging与随机森林】 Bagging?

Bagging是【并行式集成学习方法】最著名的代表,直接基于自助采样法(bootstrap sampling),即不放回抽样(详见2.2.3节),经过计算可知,初始训练集中约有63.2%的样本出现在采样集中。
从方差-偏差分解的角度看,【Bagging主要关注降低方差】,因此它在不剪枝决策树,神经网络等易受样本扰动的学习器上学习效果更为显著。

7、【8.3、Bagging与随机森林】 Bagging基本流程?

用自助法采样出T个含有m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再【将这些基学习器进行结合】。

8、【8.3、Bagging与随机森林】 Bagging的结合策略?

分类任务:简单投票法;若票数相同则随机选择其中一个或者考察学习器投票的置信度
回归任务:简单平均法

9、【8.3、Bagging与随机森林】 Bagging的优点?

由Bagging算法的过程可见,若基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T(O(m)+O(s)),T通常是个不太大的常数,因此【训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶】,着说明Bagging是一个很高效的集成学习算法。
与标准AdaBoost只适用于二分类任务不同,【Bagging能不经修改地用于多分类、回归等任务】
自助采样使得有剩下约36.8%的样本可【用作验证集来对泛化性能进行包外估计】

10、【8.3、Bagging与随机森林】 随机森林(决策树+样本扰动,属性扰动)?

随机森林是Bagging的一个扩展变体,基学习器采用的是【决策树】,在决策树的训练过程中引入【随机属性选择】:在当前结点的d个划分属性中随机选择k个属性,再计算出这k个属性之间的最优划分属性。
注:k值的取值控制了随机性的引入程度:若k=d,则基决策树的构建与传统决策树相同;若k=1,则是随机选择一个属性进行划分;一般情况下,【推荐值k=log_2d】
随机森林的【多样性】不仅来自样本扰动(自助采样),还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器间的差异度进一步提升

11、【8.3、Bagging与随机森林】 随机森林的特点和优点?

特点:随机森林在训练的【初始阶段(个体学习器少)性能往往较差】,这是因为属性扰动带来的影响;但当个体学习器数目逐渐增加,随机森林通常会收敛到更低的泛化误差。
优点:随机森林的【训练效率常优于Bagging】,这是因为属性扰动使得随机森林在训练每个个体学习器时,使用的是【属性子集】,而Bagging使用的是【属性全集】。

12、【8.4、结合策略】 学习器结合三方面的好处?

统计方面:学习任务的假设空间往往很大,这就使得有可能有多个假设能达到同等性能,【使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则能减小这一风险】
计算方面:学习算法往往会陷入局部极小(缓解方法见第5章神经网络的学习笔记),有的局部极小对应的泛化性能可能很糟糕,而【通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险】
某些学习任务的真实假设可能不在当前算法所考虑的假设空间中,若使用单学习器肯定无效,而【结合多个学习器可以扩大假设空间,有可能学得更好的近似】。

13、【8.4、结合策略】 平均法?

对【数值型】输出,最常见的结合策略是使用平均法 。
【简单平均法(simple averaging)】:$$H ( x ) = frac { 1 } { T } sum _ { i = 1 } ^ { T } h _ { i } ( x )$$
【加权平均法(weighted averaging)】:$$H ( x ) = sum _ { i = 1 } ^ { T } w _ { i } h _ { i } ( x )$$

14、【8.4、结合策略】 简单平均与加权平均的应用场景?

现实任务中的训练样本通常不充分或有噪声,这使得学习出的权重不完全可靠。尤其是对大规模的集成来说,【要学习的权重过多,较容易导致过拟合】。也就是说,【加权平均不一定优于简单平均】。
在【个体学习器性能相差较大】时宜使用【加权平均法】
在【个体学习器性能相差较小】时宜使用【简单平均法】

15、【8.4、结合策略】 投票法?

绝对多数投票法(majority voting):【绝对多数投票法要求预测标记票数比例超过50%,若没有则拒绝预测】;
相对多数投票法(plurality voting):相对多数投票法只要求选择的预测标记得票数最多,【无论怎样都会选出一个标记作为预测标记】,适用于必须产生预测的任务。
加权投票法:

16、【8.4、结合策略】 学习法(Stacking算法)?

除了平均法和投票法,对于数据量很大的场景,还可以使用另一个学习器来将个体学习器进行结合,此即为【学习法】,典型代表之一为【Stacking】
在学习法下,个体学习器称为【初级学习器】,用于结合的学习器称为【次级学习器或元学习器(meta-learner)】
要注意的是,在训练阶段,【次级训练集是利用初级学习器产生】的,若直接用初级学习器的训练集来产生次训练集,则【过拟合风险较大】。
因此,一般是通过使用交叉验证法或留一法这样的方式,【用训练初级学习器未使用的样本来产生次级学习器的训练样本】。

17、【8.4、结合策略】 Stacking集成的泛化性能的重要影响因素?

次级学习器的【输入属性表示】和【次级学习算法】对Stacking集成的泛化性能有很大的影响。
将【初级学习器的输出类概率作为次级学习器的输入属性】,用多响应线性回归(MLR)作为次级学习算法效果较好;在MLR中使用不同的属性集更佳。

18、【8.5、多样性】 误差-分歧分解?

之前我们从理论上说明了好的集成需要【好而不同的个体学习器】,这一小节运用【误差-分歧分解】通过对回归任务证明了该结论。

19、【8.5、多样性】 多样性度量?

多样性度量(diversity mearsure)是用于度量【集成中个体分类器的多样性】,即估算个体学习器的多样化程度。

20、【8.5、多样性】 多样性增强?

【数据样本扰动(适合不稳定基学习器,如决策树、神经网络等)】:数据样本扰动通常是基于采样法,如在Bagging中使用自助采样,在AdaBoost采用序列采样
【输入属性扰动(适合包含大量冗余属性的数据)】:随机子空间(random subspace)算法就是用的输入属性扰动:从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器。
【输出表示扰动】:对输出表示进行操纵可以增强多样性
【算法参数扰动】:基学习器算法一般都有参数需要进行设置,例如神经网络的隐层神经元,初始连接权等,通过【随机设置不同的参数】,往往可产生差别较大的个体学习器。

21、【8.5、多样性】 属性扰动适用于包含大量冗余属性的数据,原因如下?

包含大量冗余属性的数据,在其子空间训练个体学习器不仅能【产生多样性大的个体】,还会因属性数的减少而缩短训练时间
由于冗余属性较多,【减少一些属性之后训练出的个体学习器也不会太差】

二、201119西瓜书系列博客---8、集成学习

转自或参考:西瓜书学习笔记——第八章:集成学习_Andrewings-CSDN博客
https://blog.csdn.net/shichensuyu/article/details/93312974

 
我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
博主25岁,前端后端算法大数据人工智能都有兴趣。
大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
聊技术,交朋友,修心境,qq404006308,微信fan404006308
26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
人工智能群:939687837

作者相关推荐

原文地址:https://www.cnblogs.com/Renyi-Fan/p/14014717.html