《机器学习》第8章——集成学习

周志华《机器学习》西瓜书

第8章 集成学习



一、什么是集成学习

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。
集成学习示意图

集成学习分类

  • 根据个体学习器是否为同种类型,可分为同质集成(例如决策树集成:随机森林)和异质集成。
  • 根据个体学习器的生成方式,可分为序列化方法(个体学习器间存在强依赖关系,必须串行生成)和并行化方法(个体学习器间不存在强依赖关系,可以同时生成)。前者的代表是Boosting,后者的代表是Bagging和随机森林(Random Forest)。
    在这里插入图片描述

二、如何得到好的集成

集成学习把多个学习器结合起来,想要获得比单一学习器更好的结果,个体学习器需要满足“好而不同”的要求

在这里插入图片描述

  • 同质集成由于个体学习器为同一类型,怎么令个体学习器不同变成了难题。通常的做法是使用自助采样或调整一些样本的权重(改变训练样本分布)产生多个个体学习器。
  • 异质集成由于个体学习器为不同类型,容易满足令个体学习器不同,但是不同类型的个体学习器产生的输出通常是无法直接比较的,要想对不同类型的个体学习器作比较需要对它们的输出结果做配准(alignment)。

三、Boosting

什么是Boosting

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

在这里插入图片描述

如何实现Boosting

Boosting 算法要求基学习器能对特定的数据分布进行学习

  • 这可通过“重赋权法”(re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重.
  • 对无法接受带权样本的基学习算法,则可通过“重采样法”(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练.
  • 一般而言,这两种做法没有显著的优劣差别.需注意的是, Boosting 算法在训练的每一轮都要检查当前生成的基学习器是否满足基本条件(检查当前基分类器是否是比随机猜测好),一旦条件不满足,则当前基学习器即被抛弃,且学习过程停止.
  • 在此种情形下,初始设置的学习轮数T也许还远未达到,可能导致最终集成中只包含很少的基学习而性能不佳
  • 若采用“重采样法”可获得“重启动”机会以避免训练过程过早停止[Kohavi and Wolpert, 1996],
    即在抛弃不满足条件的当前基学习器之后,可根据当前分布重新对训练样本进行采样,再基于新的采样结果重新训练出基学习器,从而使得学习过程可以持续到预设的T轮完成.

怎么评价Boosting

在这里插入图片描述


四、Bagging

什么是Bagging

  • 欲得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立 虽然“独立”在现实任务中无法做到,但可以设法使基学习器尽可能具有较大的差异.
  • 给定一个训练数据集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器.
  • 这样,由于训练数据不同,我们获得的基学习器可望具有比较大的差异. 然而,为获得好的集成,我们同时还希望个体学习器不能太差.
  • 如果采样出的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,甚至不足以进行有效学习,这显然无法确保产生出比较好的基学习器.
  • 为解决这个问题,我们可考虑使用相互有交叠的采样子集,(自助采样)
    在这里插入图片描述

Bagging是怎么工作的

自助采样出多个基学习器

  • Bagging [Breiman, 1996a] 是并行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法 (bootstrap sampling).
  • 给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中
  • 这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。可知,初始训练集中约有63.2%的样本出现在采样集中.
  • 照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器.

再将这些基学习器进行结合

  • 在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者.

怎么评价Bagging

在这里插入图片描述
在这里插入图片描述


五、随机森林

什么是随机森林

随机森林(Random Forest,简称RF) 是 Bagging 的一个扩展变体.RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择.
具体来说:

  • 传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性;
  • 而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分.这里的参数k控制了随机性的引入程度:
    • 若令 k = d, 则基决策树的构建与传统决策树相同;
    • 若令 k = 1, 则是随机选择一个属性用于划分;
    • 一般情况下,推荐值k = l o g 2 d log_2d log2d.

如何评价随机森林

随机森林简单、容易实现、计算开销小,令人惊奇的是,它在很多现实任务中展现出强大的性能,被誉为“代表集成学习技术水平的方法”.可以看出,随机森林对 Bagging只做了小改动,但是与Bagging 中基学习器的“多样性”仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.


六、结合策略

为什么要组合学习器(必要性)

学习器结合可能会从三个方面带来好处:

  • 首先,从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时着使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会小这一风险;
  • 第二,从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险;
  • 第三,从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。在这里插入图片描述

平均法

对于数值型输出,最常见的结合策略是使用平均法

  • 简单平均法
  • 加权平均法(必须使用非负权重才能确保集成性能优于单一最佳个体学习器,因此对学习器的权重加以非负约束)

加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本的误差,通常不充分或存在噪声,这将使得学出的权重不完全可靠. 尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合,因此,实验和应用均显示出,加权平均法未必一定优于简单平均法。一般而言,在个体学习器性能相差较大时宜使用加权平均法 ,而在个体学习器性能项近时宜使用简单平均法.

投票法

对分类任务来说,学习器 h i h_i hi将从类别标记集合 { c 1 , c 2 , … , c N } \{c_1,c_2,\dots,c_N\} {c1,c2,,cN}中预测出一个标记,最抽奖的结合策略是投票法。

  • 绝对多数投票法:得票过半,预测为该标记。可以提供“拒绝预测”选项
  • 相对多数投票法:得票最多,预测为标记。
  • 加权投票法:与加权平均法类似,权重不能为负

不同个体学习器输出值的类型:

  • 类标记(硬投票): h i j ( x ) ∈ { 0 , 1 } h_i^j(x)\in\{0,1\} hij(x){0,1},若将 h i h_i hi将样本x预测为类别 c j c_j cj则取值为1,否则为0。
  • 类概率(软投票): h i j ( x ) ∈ { 0 , 1 } h_i^j(x)\in\{0,1\} hij(x){0,1},相当于对后验概率 P ( c j ∣ x ) P(c_j | x) P(cjx)的一个估计。
    不同类型的 h i j ( x ) h_i^j(x) hij(x)值不能混用。
不同输出值的学习器处理方法
能在预测出类别标记的同时给出分类置信度的学习器必须使用如Platt缩放、等分回归等技术进行“校准”后才能作为类概率使用(此类做法估计出的类概率值一般都不太精准,但基于类概率进行结合比直接基于类标记进行结合的性能更好)

需要注意的是:若基学习器的类型不同,则其类概率值不能直接进行比较;在此情形下,通常可将类概率输出转化为类标记输出再投票(将类概率最高的设为1,其余为0)

学习法

当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合的工作。Stacking是学习法的典型代表。这里将个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。

  1. 从初始数据集训练出初级学习器
  2. “生成”一个新的数据集来训练次级学习器。这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。在生成次级学习器的过程中,由于次级训练集是由初级学习器的输出而产生的,若直接使用过拟合的风险过大。因此,通常使用交叉验证或留一法的方式,用初级学习器未使用的样本来产生次级学习器。直白理解:用初级学习器在测试集的输出来作为次级学习器的训练集
    次级学习器的输入属性和次级学习算法对Stacking集成的泛化性能影响很大。

七、(个体学习器)多样性

误差-分歧分解

由Krogh and Vedelsby于1995年给出的公式: E = E ‾ − A ‾ E = \overline E - \overline A E=EA。其中
E :集成的泛化误差 E:集成的泛化误差 E:集成的泛化误差
E ‾ :个体学习器泛化误差的加权平均值 \overline E:个体学习器泛化误差的加权平均值 E:个体学习器泛化误差的加权平均值
A ‾ :个体学习器的加权分歧值 \overline A:个体学习器的加权分歧值 A:个体学习器的加权分歧值
该公式指出:个体学习器准确性越高,多样性越大,则集成越好。这个分析被称为“误差-分歧分解”。需要注意的是:该推导过程仅适用于回归学习,很难推广到分类学习中去
现实操作的难点是: A ‾ \overline A A不是一个可直接操作的多样性度量,它仅在集成构造好之后才能进行估计。

多样性度量

顾名思义,多样性度量是用于度量集成中个体学习器的多样性。经典做法做法是:考虑个体分类器的两两相似/不相似性

常用的多样性度量有:

  • 不合度量
  • 相关系数
  • Q-统计量
  • k-统计量

但他们都不能很好的表征个体学习器的多样性

如何增强(个体学习器)多样性

常见做法有:

  • 数据样本扰动:从给定的初始训练集中产生多个不同的数据集子集,再利用这些不同的数据集训练出不同的个体学习器。
采样方法算法
自助采样Bagging
序列采样AdaBoost
基学习器是否稳定基学习器
稳定线性学习器、支持向量机、朴素贝叶斯、k近邻学习器
不稳定决策树、神经网络

数据样本扰动对不稳定的基学习器很有效,对稳定的基学习器不太有效

  • 输入属性扰动:训练样本通常由一组属性描述,不同的属性子集提供了观察数据的不同视角。显然不同属性子集训练出的个体学习器必然有所不同。

例如著名的随机子空间算法。就依赖于输入属性扰动,该算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器,算法描述如图8.11所示.对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅节省时间开销,同时,由于冗余属性多,减少一些属性后训练出的个体学习器也不至于太差,若数据只包含少量属性,或者冗余属性很少,则不宜使用输入属性扰动法。
入属性扰动法.
在这里插入图片描述

  • 输出表示扰动:此类做法的基本思路是对输出表示进行操纵以增强多样性.
    • 可对训练样本的类标记稍作变动,如“翻转法”(Flipping Output)随机改变一些训练样本的标记;
    • 也可对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建个体学习器;
    • 还可将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器
  • 算法参数扰动:基学习算法一般都有参数需进行设置,
    • 例如神经网络的隐层神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。“负相关法”显式地通过正则化项来强制个体神经网络使用不同的参数
    • 对参数较少的算法,可通过将其学习过程中某些环节(属性选择环节)用其他类似方式代替,从而达到扰动的目的,例如可将决策树使用的属性选择机制替换成其他的属性选择机制.

值得指出的是,使用单一学习器时通常需使用交叉验证等方法来确定参数值。这事实上已使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来由此也可看出,集成学习技术的实际计算开销并不比使用单一学习器大很多.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值