ML_集成学习与Boosting模型

集成学习概念:

集成学习:顾名思义就是构建并结合多个学习器来完成学习任务,这样学习出来的效果比一个学习器的效果好!
集成学习的一般结果如下所示:先产生一系列的“个体学习器”,再通过某种策略将他们结合起来
在这里插入图片描述
集成学习又分为同质集成异质集成

同质集成: 个体学习器通常是由一种学习算法训练产生的,如C4.5决策树算法,集成中包含决策树算法;BP神经网络算法,集成中只包含神经网络。此时,对应的每一个个体学习器称为“基学习器”

异质集成: 异质集成中的个体由不同的学习算法生成,如同时包含决策树和神经网络算法,这时就不再有基学习器了,个体学习器就称为“个体学习器”

意义

集成学习的意义到底是什么呢?有时候想想,一个学习算法就已经挺复杂了,还要学习这么多的学习算法,最后还要制定规则把这些学习器联系起来,这样想是挺复杂的。
如果一个学习器就能够达到我们的要求,肯定不用更加复杂的集成学习,集成学习就好比 “三个臭皮匠顶个诸葛亮”,诸葛亮少之甚少啊,所以这时多个臭皮匠(一般的学习器)就起作用了,这也是集成学习的意义所在。脑子不聪明,但好在人多力量大!

深入分析

一般经验中,我们把好坏不等的东西掺到一起,那么结果会比最好的坏点,比对坏的好点,那么集成学习是如何做到比单一学习器更好的效果呢??
举一个简单的例子,在一个二分类任务中,假设三个分类器在三个测试样本上的表现如下图所示,其中√表示分类正确,×表示分类错误,集成学习通过投票法产生,即“少数服从多数”,如下图所示,有三种情况:
在这里插入图片描述
(a)每一种学习器的准确率是66%,但是最后的集成学习准确率是100%
(b)每一种学习器的准确率是66%,最后的集成学习准确率依旧是66%
(c)每一种学习器的准确率是33%,最后的集成学习准确率是0,效果更差。

从这结果来看:要想获得好的结果,集成个体学习器应 “好而不同”,即个体学习器要有一定的 “准确性”,即学习器不能太坏,并且要有 “多样性”,即学习器具有差异。

在这里插入图片描述
从上式可以看出,随着集成学习个体分类器的数目T的增大,集成学习的错误率将指数级下降!!最终趋于零!!!!

但是上面的分析有一点需要注意,我们是假设:基学习器的误差互相独立 ,在现实中,个体学习器是为了解决同一个问题而提出来的,它们显然不可能相互独立!

事实上,个体学习器的 “准确性”“多样性” 本身就存在矛盾,一般情况下,准确性很高之后,要增加多样性就必须牺牲准确性。所以,如何产生并结合 “好而不同” 的个体学习器,恰恰是集成学习的研究核心。

根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类:
* 个体学习器间存在 “强依赖” 关系、必须 串行 生成的序列化方法;代表算法: “Boosting”
* 个体学习器间 不存在强的依赖 关系、可同时生成的 并行 化方法;代表算法:Bagging和随机森林(Random Forest)

Boosting

Boosting是一种串行的工作机制,即个体学习器之间存在依赖关系,必须一步一步的序列化的进行。

基本思想

先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本在后续可以得到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器的数量达到指定的数量T,最终将这T个基学习器进行加权结合。

详细过程

Boosting算法族中最著名、使用最广的算法就是AdaBoost。在训练过程的每一轮中,根据样本分布为每个训练样本的重新赋值一个权重,对无法接受带权样本的基学习器算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新采样,再用重采样的样本集对基学习器进行训练。
一般情况下,这两种做法没有显著的优劣差别,需注意的是,Boosting算法在训练的每一轮都要检查当前生成的基学习器是否比随机猜想要好,一旦条件不满足,则当前基学习器被抛弃,且学习过程终止,在这种情况下,如何基学习器的数量还没有达到初设的数量T,则采用“重采样法”可以重启动算法,避免训练过早停止。

偏差-方差

从偏差-方差的角度来看,Boosting主要关注 降低偏差,举个简单的例子,Boosting的过程就像人看一本书一样,刚开始时大致看一遍,其中有一部分不是很懂,再看第二遍时,就会着重看不懂的那一部分,如此反复就可以把这本书完全的看懂!!
这就是一个减少偏差的过程,不断逼近正确值

Bagging与随机森林

从上文可知,想得到泛化能力强的集成算法,集成算法中的个体学习器应尽可能相互独立;虽然独立在现实任务中无法做到,但是可以设法使基学习器尽可能具有较大的差异。
首先像到的是:对给定的一个训练集进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器,由于训练子集不同,我们就可以训练出差距较大的基学习器。然而,为了获得好的集成,我们还希望个体学习器不能太差,如果采样出的每一个样本子集都完全不同,则每一个基学习器只用到一小部分的数据,甚至不足以有效的学习,故我们可以使用 相互有交叠 的采样子集。

Bagging

Bagging是并行式集成学习算法著名的代表,它是基于自助采样法,给定含有m个样本的数据集,我们有放回的每一次抽取一个样本放入采样集中,经过m次随机采样的操作,我们得到含m个样本采样集,数据集中的样本有的在采样集中多次出现,有的则一次都没有!

问题:在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少的数据从未被选择过?
答:一个样本在一次抽样过程中未被抽到的概率是:
在这里插入图片描述
n次抽样均未抽到的概率为:
在这里插入图片描述
当n趋于无穷大时,概率为
在这里插入图片描述
所以有:
在这里插入图片描述
因此,当样本数很大时,有36.8%的样本从未被选择过,可作为验证集

按照上面的,我们可以采样出T个含m个训练样本的采样集,然后基于每一个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是bagging的基本流程。
在预测输出进行结合时,bagging对于分类问题采用简单的投票法;对于回归问题采用简单的平均法

偏差-方差方向考虑:Bagging主要关注于 降低方差

随机森林(Random Forest)

随机森林(RF)是Bagging的一个扩张变体,RF在以决策树为基学习器的基础上,进一步在决策树的训练过程中加入属性扰动。即随机森林中基学习器的 多样性不仅来自样本扰动,还来自属性扰动。
具体来说:传统的决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优秀的属性;而在RF中,对基决策树的每一个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再在这个子集中选择一个最优的属性。
这里的参数k控制了随机性的引入程度:若令k=d,则和传统的决策树一样;若令k=1,则随机选择一个属性用于划分;一般情况下,推荐值k = log2 d.

对于Bagging和随机森林,随机森林的训练效率常常优于Bagging,因为在个体决策树的构建中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的是“随机型”决策树则只考虑一个属性的子集。

结合策略

结合策略就是在基学习器训练好之后,以什么方法将这些学习器结合起来产生模型的最终输出,下面是一些常用的结合策略:

平均法(回归问题)
  • 简单平均法:
    在这里插入图片描述
  • 加权平均法:
    在这里插入图片描述
    显然,简单的平均法是加权平均法的特例,一般而言,在个体学习器性能相差较大时宜使用加权平均法,在个体学习器性能相差较小时宜使用简单平均法。
投票法(分类问题)
  • 绝对多数投票法:必须要占一半以上
    在这里插入图片描述
  • 相对多数投票法:最多票数即可
    在这里插入图片描述
  • 加权投票法:
    在这里插入图片描述
    注意: 对于分类任务,各个基学习器的输出值有两种类型,分别为类标记和类概率:
    在这里插入图片描述
    一般基于类概率进行结合往往比基于类标记进行结合的效果更好,需要注意的是对于异质集成学习算法,其类概率不能直接进行比较,此时需要将类概率转换为类标记输出,然后再投票。
学习法

学习法是一种更加高级的结合策略,即学习出一种“投票”的学习器,Stacking是学习法的代表。Stacking的基本思想是:首先训练出T个基学习器,对于一个样本它们产生T个输出,将这T个基学习器的输出与该样本的真实标记作为新的样本,m个样本就会产生一个m×T的样本集,来训练一个新的“投票”学习器。
投票学习器采样类概率作为输入属性,选用多响应线性回归(MLR)一般效果会更好。
在这里插入图片描述

多样性

在集成学习中,基学习器之间的多样性是影响集成器泛化能力的重要因素。因此增加多样性对于集成学习研究十分重要,常见的增加多样性的方法:

  • 数据样本的扰动:即利用具有差异的数据集来训练不同的基学习器。如:有放回的自助采样,但此类做法只对不稳定的学习算法非常有效,例如:决策树、神经网络
  • 输入属性扰动:即随机选取原数据属性的一部分,如:随机森林,从初始数据集中抽取子集,再在子集中抽取部分属性来训练基学习器。
  • 输出表示扰动:此类做法对训练样本的类标稍微变动、或者基学习器的输出进行转化
  • 算法参数扰动:通过随机设置不同的参数,例如:神经网络中,随机初始化权重与随机设置隐含层节点数。

总结

集成学习主要分为BaggingBoosting两种框架。
Boosting:降低 偏差串行,个体学习器 强依赖
Bagging: 降低 方差并行,个体学习器 弱依赖

Boosting模型中的GBDT后面再来总结,,,,,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值