集成学习学习笔记(2)

来源:互联网 发布:ipad玩游戏网络不稳定 编辑:程序博客网 时间:2024/05/31 19:17

Bagging

通过集成学习笔记1中对Boosting算法的描述我们知道对于Boosting算法,其各个基学习器之间是强相关的,即下一个学习器的学习偏好受之前学习器的影响很大,因为之前的基学习器的学习情况会通过权值来影响下一次训练样本的分布情况。这种强相关性决定了AdaBoost只能进行串行运算,而且通过AdaBoost算法的推导可以知道该算法只能用于二分类任务。
如何能够设计一种算法既可以执行并行运算又可以毫无改变的直接用于多分类任务。首先如果想要让某个集成学习算法实现并行运算,那么就要保证各个基学习器之间是独立的,互相不受影响的。虽然独立可能很难实现,但至少要保证足够大的差异性(各个基学习器的训练样本有差异)。在保证差异性的同时还需要保证各个基学习器的准确率(训练样本要足够)。在AdaBoost算法中,其学习器之间的差异性是通过前一个学习器来对样本分布进行改变而实现的。而我们为了实现并行性,基学习器之间的差异性可以通过对样本采样来实现,即通过采样来改变训练集样本的分布。在Bagging算法中,其采用的采样方法是自助采样法。自助采样法能够保证初始训练集中约有63.2%的样本出现在采样集中。我们通过这种采样方法,可以采出T个含m个训练样本的采样集,然后基于每个采样集训练处一个基学习器,再将这些基学习器进行结合,这样我们既保证了不同基学习器训练样本的差异性又保证了训练集的充足性,从而保证了训练出来的基学习器之间有较大差异并且比较准确。在对预测输出进行结合时,Bagging通常对分类任务使用简单的投票法,对回归任务使用平均法。这也是与AdaBoost不同的一个地方,AdaBoost采用的是加权平均法。
对于Bagging来说,其主要关注的是降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效果更为明显。该算法的算法描述如下所示:(源自于周志华老师的机器学习书)

这里写图片描述

随机森林(RF)

随机森林属于一种Bagging算法的扩展,其是在以决策树为基学习器的Bagging算法的基础上引入了随机属性选择。即对于传统Bagging算法,其在训练决策树的时候,每个节点选择的都是在所有剩余属性中互信息最大的那个属性,而在随机森林中,对于每个节点其都会随机选择k个属性作为子属性集,然后从这k个属性中选择互信息最大的那个属性。这里的参数k控制了随机性的引入程度。假设该节点的属性集合大小为d,那么如果k=d,则基决策树的构建与传统决策树构建方法一致,如果k=1,那么就相当于随机选择一个属性用于划分,通常,k=log2d。我们通过上面的描述可以看出随机森林中基学习器的多样性不仅仅是通过样本采样来获得,还来自随机属性选择的扰动。通过上面的描述,我们可以看到之所以称之为随机森林是因为其是由很多的决策树所组成,这些决策树的学习是具有一定的随机性。因为各个决策树的学习无论是训练样本集的采样还是模型的训练都是不相关的,因此随机森林是很容易进行并行化的。
随机森林与Bagging比较,其初始性能通常比较差,因为刚一开始属性的选择是随机的,使得性能有所降低,但是随着基学习器的增多,随机森林通常能够收敛到更低的泛化误差,因此随机森林的性能往往要比Bagging算法更优。

结合策略

对于集成学习,当我们学到各个基学习器后,我们该如何把这些基学习器组合在一起,每个基学习器都有一个预测值,我们该选择哪个预测值作为最终的预测值。对于这个问题,下面有三种解决方案可供选择:

平均法

平均法有简单平均法和加权平均法两种。

简单平均法

对于简单平均法,其是以如下方式对各个模型进行结合的:

H(x)=1Tt=1Tht(x)
假设我们做的是分类任务,那么以这种策略结合的算法对于第i个样本最终给出的预测结果为
H(xi)=sign(1Ti=1Tht(x))

加权平均法

该方法对各个模型的结合方式如下所示:

H(x)=1Tt=1Tαtht(x)
以该策略进行模型结合的典型算法就是AdaBoost算法,那么假设依然是二分类问题,其预测结果也是各个基学习器预测结果的加权平均取符号:
H(xi)=sign(1Tt=1Tαtht(xi))

投票法

投票法则有三种方法:绝对投票法、相对投票法和加权投票法。对于一些集成算法,其各个基学习器是并行进行训练的,即各个学习器之间的相关性很小,那么此时这样的学习器集成,每个基学习器都会产生一个结果,最终集成的结果是怎样的?这种方法的典型算法是Boosting类算法。

绝对多数投票法

对于绝对多数投票法,上述情形的最终集成的结果是选择票数超过一半的类别,即假设有一半以上的基学习器都预测了类别c,那么此时集成后的学习器给出的预测结果就是c,否则拒绝预测。
H(x) =

{cj,reject,ifTt=1hjt(x)>0.5Nk=1Tt=1hjt(x);otherwise

相对多数投票法

相对投票法,则是选择票数最多的类别,如果最多票数的类别个数大于1,则随机从中选择一个。

H(x)=cargmaxjTt=1hjt(x)

加权多数投票法

加权多数投票法与加权平均很类似,其选择方案如下所示:

H(x)=cargmaxjTt=1ωthjt(x)

学习法

学习法的思想则与投票法和平均法有明显的不同。其多个基学习器的结合策略不再是简单的加权平均或者投票,而是用另一个学习器来对这些基学习器进行结合。这是这些基学习器被称为初等学习器,而对应的结合基学习器的学习器称为次等学习器。那么如何用次等学习器来结合基学习器呢?其思想与神经网络有所类似,即基学习器的输入为我们手上所拥有的样本,而次等学习器的输入则是所有初等学习器的输出,我们通过对初等学习器的输出的再学习之后再作出预测。这种方法的基本流程如下所示:

  • 首先用我们所拥有的样本训练T个初等学习器;
  • 然后再将初等学习器的T个输出和样本标记组成一个T+1的训练样本传入到次等学习器中进行训练
  • 最后的预测是以次等学习器的输出为准

这里有一个可能存在的问题,就是如果用全样本进行训练的话,很可能会导致过拟合问题的出现,因此通常训练方法是使用交叉验证的方法。假设我们使用的是k交叉验证法,那么此时测试样本为ck,训练样本为c^=cck,这样我们就可以得到k个测试训练样本。初等学习器基于这k组样本可以得到T×k个输出,那么我们就可以用(T+1)×k个样本作为次等学习器的训练样本对次等学习器进行训练。

多样性

多样性度量

多样性度量适用于衡量集成学习器中各个个体学习器之间的差异性,这种差异性通常是通过衡量两两学习器之间的相似度来进行度量的。其中两两学习器之间的相似度衡量通常有一下四种方法:
假设学习器hihj的预测结果联表如下所示:

这里写图片描述

表中的a表示学习器hihj都预测为正例的样本数目,a+b+c+d=m,那么有四种相似度度量方法:

  • 不合度量
    disij=b+cm
    值越大样本多样性越强,这个很好理解,他们两学习器预测的不一样的结果越多,说明他们在样本集上的表现越不一致,也就是这两个学习器的相似度越差
  • 相关系数
    ρ=adbc(a+b)(a+c)(c+d)(b+d)
    若两个学习器之间独立,则ρ=0,若ρ>0,则正相关,ρ<0,则负相关。
  • Q统计量
    Qij=adbcad+bc
    ,与相关系数一直
  • κ统计量
    κ=p1p21p2
    其中,p1是两个分类器取得一致的概率,p2是偶然一致的概率
    p1=p2=a+dm(a+b)(a+c)+(c+d)(b+d)m2

多样性增强

通过对于前面各种集成学习算法的描述,我们知道多样性增强有很多种方法,我们已经见过的就有通过改变样本分布来增强多样性(AdoBoost,Bagging),也有通过改变输入属性分布来增强多样性(RF)。上面两种方式我们称之为:数据样本扰动方法输入属性扰动方法。除了这两种方法来增强基学习器的多样性外还有输入表示扰动方法算法参数扰动方法。其中输入表示扰动常见的方式是将输出进行转换,如将分类输出转换为回归输出后构建基学习器;而算法参数扰动方法则是通过随机设置基学习器的参数来增强基学习器的多样性,如神经网络,可以通过设置神经网络不同的层数和每层的节点数来增强基学习器的多样性。

0 0
原创粉丝点击