菜鸟学习记004 ---------机器学习--------集成学习

本文为学习笔记,供自己复习回顾,分享,交流,如果专家们发现谬误之处欢迎批评与修正。

----------------------------------------------------------------------------------------------------------------------------

1.什么集成学习?

集成学习通过构建并结合多种学习器(模型、算法)来完成学习任务,每种模型也参与 “投票” 也就是说参与其中,所以也叫基于委员会的学习。

1.1 为什么要集成学习?

一般情况下,集成学习通过将多个学习器进行结合,常常可以获得比单一学习器显著优越的成果,也就是说,通过集成学习可以得到较好的结果。但是我们都会想将一堆学习器放在一起,通常通常情况下是比好的坏一点,比坏的好一点,如果才能获得比最好的单一学习器更好的性能呢?来看下面这个例子。

假设我们有五种测试用例和一种模型,那么准确率是百分之六十。

但是如果我们再使用四种模型,他们他们拥有相同的准确率,但是出现情况不同,最后我们将他们采用 “多数选举” 结合起来,最后得到了百分之百的准确率。

上面的例子证明了:

1.没有一种模型是完美的学习到所有。

2.集成学习的性能高于个体学习。

3.通常情况下比个体学习的鲁棒性要高。

上面例子还说明了一点,若想要得到理想的集成学习性能,需要个体学习间 “好而不同”,意思就是说,不能太差,也不能完全一样。

但事实上,”准确性“和”多样性“存在冲突,如何产生并结合”好而不同“的学习器,恰好是集成学习研究的核心。

1.2 一般结构

集成学习一般先产生一组 “个体学习器”,之后再用某种策略将ta'm他们结合起来。

个体学习器通常通常由一个现有的学习算法产生,例如BP神经网络等。

1.同质集成

只包含同种类型的个体学习器叫同质集成,例如 “决策树集成”全都是决策树。

同质集成中的个体学习器也叫  “基学习器”,其算法叫 “基学习算法”。

2.异质集成

包含不同种的的个体学习器,其学习器叫 “组件学习器“

2.集成学习的种类

根据个体学习器的shen生成方式,可以分为两类,一类是个体学习器之间不存在强依赖关系,可同时生成的并行化方法,代表为Bagging,另一类是个体学习器之间存在强依赖关系必须串行生成的序列化方法,代表是Boosting。

2.1 Bagging

想要得到泛化能力强的集成,需要个体学习器间互相独立,也就是”不同“,但在现实任务中很难实现,所以我们设法让学习器尽可能很大差异,一种方法是,对训练集采样,形成若干不同子集,之后再分别训练,这样所以虽然有很大差异了,但是训练样本减少,满足不了 ”好“的要求了,所以另一种方法,我们采用互相有重叠的子集,就可以满足 ”好而不同“了。

Bagging就是Bootstraping Aggregating 自助采样,采用有放回的采样,这样可以保证下次采样时相同样本仍有机会可以被拿出。

由周老师西瓜书上的公式可知,训练集中约有63.2% 的样本出现在采样集中,这样剩下的样本可以zuo'做验证集来对泛化性能进行包外估计。

之后基于我们每个采样集进行训练,再将学习器进行结合,结合方法一般分类任务就是投票,回归任务就是平均,具体还可以分什么多数选举等更详细的结合方法。

一般情况下,小于五十个模型效果会很好,小于25个也还行。

BaggIng说白了,其实就是样本扰动,来控制样本的不同。

2.2 随机森林

其实,随机森林是Bagging的一个扩展变体,以决策树为基学习器构建Bagging的基础上,进一步再决策树的训练过程训练过程中引入了随机属性选择,也就是属性扰动,所以随机森林是将属性扰动和样本扰动结合,更加不同了。

随机森林开销小,容易实现,简单,被称为”代表集成学习技术水平的方法“。

随机森林的收敛性与Baggingxian相似,起始性能往往较差,因为只包含决策树一种学习器,然而随着学习器数目的增加,随机森林往往会收敛到更低的泛化误差,一般优于Bagging。

2.3 Boosting

boosting是一族可将弱学习器提升为强学习的算法,这族算法的工作工作机制类似于:先从初始训练集训练出一个基学习器,再根据其表现对训练样本分布进行调整,使得先前的学习做错的样本在后面得到更多关注,如此反复进行,直到学习器数目达到事先指定的值T,最后将这T个学习器进行加权结合。

最著名的是,AdaBoost(Adaotive Boosting)

Boosting要求基学习器对特定的数据分布进行学习,通过重赋权法实施,即在每轮中根据样本分布为每个训练样本chon重新赋予权重,对于无法接受带权重样本的学习算法,可采用重抽样。

2.4 Stacking  (AKA. Blending)

Stacking 是一种组件学习器的结合方法,将不同模型进行组合,具体过程如下,

1.划分训练集为两个不相交的集合

2.在第一个集合上训练多个学习器

3.在第二个集合上测试这几个学习器

4.把第三步骤的的结果当作输入,把正确的回应作为输出,训练出一个高层学习器

参考:1. 周志华《机器学习》

猜你喜欢

转载自blog.csdn.net/qweqwrfdsf/article/details/81160564
今日推荐