连载|集成学习(简介)

集成学习

集成学习简介

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

在这里插入图片描述

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

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

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

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

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

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

在这里插入图片描述

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

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

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

通过一个例子来做一个简单的分析,考虑二分类问题 y ∈ { − 1 , 1 } y\in\{-1,1\} y{1,1}和真实函数 f f f,假定基分类器的错误率为 ϵ \epsilon ϵ,即对每个基分类器 h i h_i hi有:

P ( h i ( x ) ≠ f ( x ) ) = ϵ P(h_i(x)\neq f(x))=\epsilon P(hi(x)=f(x))=ϵ

假设我们通过简单的投票法结合T个基分类器(为了便于讨论,我们假设T为基数),若有超过半数的基分类器正确,则集成分类就正确(个体分类器为 h i ( x ) = { − 1 , 1 } h_i(x)=\{-1,1\} hi(x)={1,1}):

H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x)=sign(\sum_{i=1}^Th_i(x)) H(x)=sign(i=1Thi(x))

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

P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 [ T / 2 ] ( T k ) ( 1 − ϵ ) k ϵ ( T − k ) P(H(x)\neq f(x))=\sum_{k=0}^{[T/2]}\binom{T}{k}(1-\epsilon)^k\epsilon^{(T-k)} P(H(x)=f(x))=k=0[T/2](kT)(1ϵ)kϵ(Tk)

⩽ e x p ( − 1 2 T ( 1 − 2 ϵ ) 2 ) \leqslant exp(-\frac{1}{2}T(1-2\epsilon)^2) exp(21T(12ϵ)2)

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

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

Boosting

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

在这里插入图片描述

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

Bagging

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

在这里插入图片描述

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

随机森林(Random Forest)

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

在这里插入图片描述

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

结合策略

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

在这里插入图片描述

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

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

假设集合包含T个学习器 h 1 , h 2 , . . . , h T {h_1,h_2,...,h_T} h1,h2,...,hT. 其中 h i h_i hi 在示例 x 上的输出是$ h_i(x)$。

平均法

对于数值型输出 h i ( x ) ∈ R h_i(x)\in R hi(x)R,最常见的综合策略是使用平均法。

  • 简单平均法:

H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^{T}h_i(x) H(x)=T1i=1Thi(x)

  • 加权平均法:

H ( x ) = ∑ i = 1 T w i h i ( x ) H(x)=\sum_{i=1}^{T}w_ih_i(x) H(x)=i=1Twihi(x)

简单平均法可以看作是加权平均法令 w i = 1 T w_i=\frac{1}{T} wi=T1的特例,而加权平均的权值都是从训练数据中学习的,由于真实情况下训练数据有缺失或者噪声,导致其得到的权值不一定真实可靠,所以从这个角度来说,加权平均法不一定优于简单平均法。其实有这样的一个思想:对于个体学习器的性能相近时,我们采用简单平均;而个体学习器差异较大的,我们采用加权平均。

投票法

对于分类任务来说,学习器 h i h_i hi将从类别标记集合 c 1 , c 2 , . . . , c N {c_1,c_2,...,c_N} c1,c2,...,cN中预测出一个标记,最常见的结合策略是使用投票法。为了便于讨论,我们将 h i h_i hi在样本x上的预测输出表示为一个N维向量 ( h i 1 ( x ) ; h i 2 ( x ) ; . . . ; h i N ( x ) ; ) (h_i^1(x);h_i^2(x);...;h_i^N(x);) hi1(x);hi2(x);...;hiN(x);,其中 h i j ( x ) h_i^j(x) hij(x) h i h_i hi在类别标记 c j c_j cj上的输出。

  • 绝对多数投票法

H ( x ) = { c j , i f ∑ i = 1 T h i j ( x ) > 0.5 ∑ k = 1 N ∑ i = 1 T h i k ( x ) r e j e c t , o t h e r w i s e H(x)=\left\{\begin{matrix} c_j, if \sum_{i=1}^{T}h_i^j(x)>0.5\sum_{k=1}^{N} \sum_{i=1}^{T}h_i^k(x)\\ reject, otherwise \end{matrix}\right. H(x)={cj,ifi=1Thij(x)>0.5k=1Ni=1Thik(x)reject,otherwise

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

  • 相对多数投票法

H ( x ) = C a r g j m a x ∑ i = 1 T h i j ( x ) H(x)=C_{arg_jmax\sum_{i=1}^Th_i^j(x)} H(x)=Cargjmaxi=1Thij(x)

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

  • 加权投票法

H ( x ) = C a r g j m a x ∑ i = 1 T w i h i j ( x ) H(x)=C_{arg_jmax\sum_{i=1}^Tw_ih_i^j(x)} H(x)=Cargjmaxi=1Twihij(x)

与加权平均法类似, w i w_i wi h i h_i hi的权重,通常 w i ⩾ 0 , ∑ i = 1 T w i = 1 w_i\geqslant 0,\sum_{i=1}^{T}w_i=1 wi0,i=1Twi=1

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

我们在上面的几个投票法中没有限制个体学习器输出值的类型,在现实任务中,不同类型个体学习器可能产生不同类型的 h i j ( x ) h_i^j(x) hij(x)值,常见的我们根据输出值把投票法分为“硬投票”和“软投票”。

  • 硬投票:若 h i h_i hi将样本x预测为类别 c j c_j cj则取值为1,否则为0,那么这种使用类标记的投票就叫做“硬投票”。
  • 软投票:相当于对后验概率 P ( c j ∣ x ) P(c_j|x) P(cjx)的一个估计,这种使用累概率的投票就叫做”软投票“。

学习法

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

Stacking

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

在这里插入图片描述

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

多样性

多样性度量

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

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\} D={(x1,y1),(x2,y2),...,(xm,ym)},对二分类任务, y i ∈ { − 1 , + 1 } y_i\in \{-1,+1\} yi{1,+1},分类器 h i h_i hi h j h_j hj的预测结果列联表为:

h i = + 1 h_i = +1 hi=+1 h i = − 1 h_i = -1 hi=1
h j = + 1 h_j = +1 hj=+1ac
h j = − 1 h_j = -1 hj=1bd

其中a表示 h i h_i hi h j h_j hj均预测为正类的样本数目;b、c、d同理,a+b+c+d=m,基于这个列联表,下面给出一些常见的多样性变量。

  • 不合度量

d i s i j = b + c m dis_{ij}=\frac{b+c}{m} disij=mb+c

d i s i j dis_{ij} disij的值域为[0,1],值越大则多样性越大。

  • 相关系数

p i j = a d − b c ( a + b ) ( a + c ) ( c + d ) ( b + d ) p_{ij}=\frac{ad-bc}{\sqrt{(a+b)(a+c)(c+d)(b+d)}} pij=(a+b)(a+c)(c+d)(b+d) adbc

p i j p_{ij} pij的值域为[-1,1],若 h i h_i hi h j h_j hj无关,则值为0;若 h i h_i hi h j h_j hj正相关,则值为正,否则为负。

  • Q-统计量

Q i j = a d − b c a d + b c Q_{ij}=\frac{ad-bc}{ad+bc} Qij=ad+bcadbc

Q i j Q_{ij} Qij P i j P_{ij} Pij的符号相同,且 ∣ Q i j ∣ ⩽ ∣ P i j ∣ |Q_{ij}|\leqslant |P_{ij}| QijPij

  • k-统计量

k = P 1 − P 2 1 − P 2 k=\frac{P1-P2}{1-P2} k=1P2P1P2

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

P 1 = a + d m P1=\frac{a+d}{m} P1=ma+d

P 2 = ( a + b ) ( a + c ) + ( c + d ) ( b + d ) m 2 P2=\frac{(a+b)(a+c)+(c+d)(b+d)}{m^2} P2=m2(a+b)(a+c)+(c+d)(b+d)

若分类器 h i h_i hi h j h_j hj在D上完全一致,则k=1;若它们仅是偶然一次达成一致,则k=0,k通常为非负值,仅在 h i h_i hi h j h_j hj达成一致的概率甚至低于偶然性的情况下取负值。

多样性增强

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

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

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

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哥不像程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值