集成学习

集成学习简介

集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统。集成学习的结构示意图如下所示:

连载|集成学习(简介)_算法

如图所示我们把多个“个体学习器“通过某种策略组合在一起来执行学习任务,当我们的“个体学习器”都是同类的时候(比如:决策树、神经网络)我们可以说这个集成是“同质的”,此时的个体学习器我们通常叫做“基学习器”;反之如果“个体学习器”是多种类型的学习器,我们可以说这个集成是“异质的”,此时的个体学习器我们通常叫做“组件学习器”。

集成学习通过将多个学习器进行组合,常常可以获得比单一学习器显著优越的泛化性能,这对“弱学习器(返回能力略优于随机猜测的学习器)”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。

对于集成学习我们通常要关注两个重要的概念:准确性多样性

准确性:个体学习器不能太差,要有一定的准确度。

多样性:个体学习器之间的输出要具有差异性。

下图举例说明了不同准确性和多样性的集成模型的结果(最终的集成结果通过投票法产生,即“少数服从多数”):

连载|集成学习(简介)_深度学习_02

图(a):准确度高、差异度高

图(b):准确度高、差异度低

图(c):准确度低、差异度高

通过一个例子来做一个简单的分析,考虑二分类问题连载|集成学习(简介)_机器学习_03和真实函数连载|集成学习(简介)_集成学习_04,假定基分类器的错误率为连载|集成学习(简介)_深度学习_05,即对每个基分类器连载|集成学习(简介)_算法_06有:

连载|集成学习(简介)_算法_07

假设我们通过简单的投票法结合T个基分类器(为了便于讨论,我们假设T为基数),若有超过半数的基分类器正确,则集成分类就正确(个体分类器为连载|集成学习(简介)_人工智能_08):

连载|集成学习(简介)_深度学习_09

假设基分类器的错误率相互独立,则由Hoeffding不等式可以得到集成的错误率为(理解不等式右边的内容即可):

连载|集成学习(简介)_算法_10

连载|集成学习(简介)_机器学习_11

根据上面的结果可以看出随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋向于0。

事实上,个体学习器“准确性”和“多样性”本身就是存在冲突的,一般情况下,当我们准确性很高之后,要增加多样性就需牺牲准确性,事实上如何产生并结合“好而不同”的个体学习器,恰是集成学习研究的核心。现阶段有三种主流的集成学习方法:Boosting、Bagging、随机森林(Random Forest),下面让我们来介绍一下这三种方法。

Boosting

Boosting 是一种可以将弱学习器提升为强学习器的算法。这是一种串行的思想,序列化进行。基本思想是:增加前一个基学习器预测错误的样本的权值,使得后续的基学习器更加关注于这些打错标注的样本,尽可能的纠正这些错误。直到训练出了T个基学习器,最终将这T个基学习器进行加权结合。

连载|集成学习(简介)_集成学习_12

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解相关的Boosting算法。

Bagging

Bagging是一种并行的集成学习方法,基学习器的训练没有先后顺序,同时进行。Bagging 采用“有放回”采样,对于包含m 个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,按照这样的方式重复进行,我们就可以得到 T 个包含m个样本的训练集,训练出来T个基学习器,然后对这些基学习器的输出进行结合。

连载|集成学习(简介)_人工智能_13

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解相关的Bagging算法。

随机森林(Random Forest)

RF是Bagging的一个变体。它的基学习器固定是决策树,所以多棵树就叫做森林。而“随机” 体现在属性选择的随机性上。
RF 在训练基学习器时候,也采用了自助取样法增加样本扰动;除此之外,RF还引入了一种属性扰动:对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含K个属性的子集,然后在子集中选取一个最优的属性用于该结点的划分。而这里的参数K控制了随机性的程度,令k=d,则就是传统的决策树;令k=1,就是随机选择一个属性用于结点划分。一般情况下,推荐的K值是 k=log2d。
与Bagging相比,RF由于随机属性引入的多样性,使得其在多样性上有了进一步提升。相比于 Bagging,由于属性扰动的加入,其初始泛化性能较差(基决策树的准确度有一定的下降),但是随着集成数目的增多,其往往可以收敛到更低的泛化误差。同时 RF,由于属性选择,训练效率更高。

连载|集成学习(简介)_机器学习_14

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解随机森林算法。

结合策略

理论上来看,学习器结合会带来3个方面的好处,如下图所示:

连载|集成学习(简介)_机器学习_15

  • 统计方面:从统计学角度来说,多个假设在训练集上可能达到相同性能。此时单个学习器只能选择其中部分假设,难以提高泛化性能。
  • 计算方面:从求解的角度来说,学习器算法往往会陷入局部最优解。多个学习器的结合有助于降低陷入局部最优解风险,从而提高整体达的泛化性能。
  • 表示方面:从表示方面来说,某些学习任务的真实假设是不在当前的假设空间中的。所以多个学习器结合有助于扩大假设区间,可能学得更好的近似

再让我们来看一下结合策略都分为哪几种。

假设集合包含T个学习器连载|集成学习(简介)_人工智能_16. 其中 连载|集成学习(简介)_算法_06

平均法

对于数值型输出连载|集成学习(简介)_人工智能_18,最常见的综合策略是使用平均法。

  • 简单平均法:

连载|集成学习(简介)_深度学习_19

  • 加权平均法:

连载|集成学习(简介)_深度学习_20

简单平均法可以看作是加权平均法令连载|集成学习(简介)_深度学习_21的特例,而加权平均的权值都是从训练数据中学习的,由于真实情况下训练数据有缺失或者噪声,导致其得到的权值不一定真实可靠,所以从这个角度来说,加权平均法不一定优于简单平均法。其实有这样的一个思想:对于个体学习器的性能相近时,我们采用简单平均;而个体学习器差异较大的,我们采用加权平均。

投票法

对于分类任务来说,学习器连载|集成学习(简介)_算法_06将从类别标记集合连载|集成学习(简介)_人工智能_23中预测出一个标记,最常见的结合策略是使用投票法。为了便于讨论,我们将连载|集成学习(简介)_算法_06在样本x上的预测输出表示为一个N维向量连载|集成学习(简介)_算法_25,其中连载|集成学习(简介)_人工智能_26连载|集成学习(简介)_算法_06在类别标记连载|集成学习(简介)_人工智能_28上的输出。

  • 绝对多数投票法

连载|集成学习(简介)_机器学习_29

若某标记投票数过半,则预测为该标记,否则拒绝预测。

  • 相对多数投票法

连载|集成学习(简介)_集成学习_30

预测为得票最多的标记,若同时有多个标记获得高票,则从中随机选取一个。

  • 加权投票法

连载|集成学习(简介)_算法_31

与加权平均法类似,连载|集成学习(简介)_人工智能_32连载|集成学习(简介)_算法_06的权重,通常连载|集成学习(简介)_机器学习_34

标准的绝对多数投票法提供了“拒绝预测”选项,这在可靠性要求较高的学习任务中是一个很好的机制,但若学习任务要求必须提供预测结果,则绝对多数投票法将退化为相对多数投票法,因此在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为“多数投票法”。

我们在上面的几个投票法中没有限制个体学习器输出值的类型,在现实任务中,不同类型个体学习器可能产生不同类型的连载|集成学习(简介)_人工智能_26值,常见的我们根据输出值把投票法分为“硬投票”和“软投票”。

  • 硬投票:若连载|集成学习(简介)_算法_36将样本x预测为类别连载|集成学习(简介)_集成学习_37则取值为1,否则为0,那么这种使用类标记的投票就叫做“硬投票”。
  • 软投票:相当于对后验概率连载|集成学习(简介)_集成学习_38的一个估计,这种使用累概率的投票就叫做”软投票“。

学习法

学习法是一种更加高级的结合策略,即学习出一种“投票”的学习器,Stacking 是学习法的一种典型代表。Stacking 的基本思想是:首先训练出T个基学习器,对每一个样本,用这T个基学习器产生T个输出。将这些输出和该样本的真实标记作为新的样本,这样就有了 m*T 的样本集,用这个样本集训练出一个新的“投票”学习器。而这个“投票学习器”的输入属性学习算法,对最终投票学习器的泛化性能影响很大。当投票学习器采用类概率作为输入属性,选用更多响应线性回归(MLR)一般会产生较好的效果。

Stacking

训练好的所有基模型对训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测,Stacking的流程图如下所示:

连载|集成学习(简介)_集成学习_39

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解Stacking算法。

多样性

多样性度量

多样性变量是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度,典型做法是考虑个体分类器的两两相似/不相似性。

给定数据集连载|集成学习(简介)_机器学习_40,对二分类任务,连载|集成学习(简介)_算法_41,分类器连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43的预测结果列联表为:

a

c

b

d

其中a表示连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43均预测为正类的样本数目;b、c、d同理,a+b+c+d=m,基于这个列联表,下面给出一些常见的多样性变量。

  • 不合度量

连载|集成学习(简介)_算法_50

连载|集成学习(简介)_集成学习_51的值域为[0,1],值越大则多样性越大。

  • 相关系数

连载|集成学习(简介)_人工智能_52

连载|集成学习(简介)_人工智能_53的值域为[-1,1],若连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43无关,则值为0;若连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43正相关,则值为正,否则为负。

  • Q-统计量

连载|集成学习(简介)_集成学习_58

连载|集成学习(简介)_集成学习_59连载|集成学习(简介)_深度学习_60的符号相同,且连载|集成学习(简介)_算法_61

  • k-统计量

连载|集成学习(简介)_机器学习_62

其中p1是两个分类器取得一致的概率;p2是两个分类器偶然达成一致的概率,它们可由数据集D估算:

连载|集成学习(简介)_人工智能_63

连载|集成学习(简介)_集成学习_64

若分类器连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43在D上完全一致,则k=1;若它们仅是偶然一次达成一致,则k=0,k通常为非负值,仅在连载|集成学习(简介)_算法_06连载|集成学习(简介)_深度学习_43达成一致的概率甚至低于偶然性的情况下取负值。

多样性增强

正如我们其那面所说,我们集成学习就是要做“好而不同”的基学习器的整合。这其中,基学习器之间的多样性,则成为影响集成学习器泛化性能的重要因素。一般我们要在学习过程中引入随机性,常做法主要是对数据样本、输入属性、输入表示、算法参数进行扰动:

  • 数据样本扰动:即利用具有差异的数据集来训练不同的基学习器。我们之前讲过的Bagging就是通过自主采样来加入数据样本扰动。但是需要注意的是,这种做法只能对于不稳定的基学习器起作用,即样本的改变会使得学习器的性能产生较大的变化,如神经网络和决策树等。
  • 输入属性扰动:即随机选取原属性空间的一个子空间来训练不同的基学习器。我们之前讲过的Random Forest就是通过输入属性扰动来获得比 Bagging 更加好的泛化性能的。但是,如果训练集中的属性维度少,用这种方法会使得单个基学习器的性能大大下降,最终集成学习器的泛化性能不一定有提升。
  • 输出表示扰动:对训练样本的类标记稍作变动;也可以对输出表示进行转化。
  • 算法参数扰动:随机设置不同的参数。如:神经网络中,随机初始化权重与随机设置隐含层节点数。

这一章的集成学习不是一种特定的算法,而是一种通用的框架。是教我们怎么用基础学习器来得到泛化性能大大提高的集成学习器。
这是一种非常重要的思想。

连载|集成学习(简介)_机器学习_69