集成学习

本篇博客主要是对周志华“机器学习”中集成学习这一章的摘抄,总结,拒绝公式,以及自己使用过程中的一点经验。

 

1、集成学习的基本概念、条件及意义

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会学习(committee-base learning)等。

弱学习器:泛化性能略优于随机猜测的学习器;例如在二分类问题上精度略高于50%的分类器。

基学习器:集成中只包含同种类型的个体学习器,如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络。

组件学习器:集成中由不同的学习算法生成的个人学习器,或者直接称个体学习器。

 

假设在一个二分类任务中,假定三个分类器在三个测试样本上的表现如图1所示,其中√表示分类正确,×表示分类错误。

集成学习的结果通过投票法(voting)产生,即“少数服从多数”。图1-(a)中,每个分类器精度只有66.6%,但集成学习却达到了100%;

图1-(b)中,三个分类器没有差别,集成之后性能不变;图1-(c)中,每个分类器精度只有33.3%,集成只有结果变得更糟。

 测试1 测试2 测试3  测试1 测试2 测试3   测试1 测试2 测试3

h1 √  √  ×   h1 √   √  ×   h1 √  ×   ×

h2 ×  √  √   h2 √   √  ×   h2 ×  √   ×

h3 √  ×  √   h3 √   √  ×   h3 ×  ×   √

集成 √  √  √   集成  √   √   ×   集成 ×  ×   ×

  (a) 集成提升性能   (b) 集成不起作用    (c) 集成起负作用

     图1 集成个体应“好而不同”(hi表示第i个分类器)

从上述例子我们可以知道,要想获得好的集成效果,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏(不差于弱学习器),

并且要有“多样性”(diversity),即学习器之间具有差异。

因此集成学习的研究核心并是如何产生并结合“好而不同”的个体学习器。

 

2、Boosting

Boosting这类算法的工作机理类似,代表的是Adaboost算法,标准的Adaboost算法只适用于二分类。Boosting的具体过程如下:

i)根据初始训练集训练一个基学习器;

ii)根据基学习器的表现对训练集样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注;

iii)基于调整后的样本分布来训练下一个基学习器;

iv)重复(ii)和(iii)过程,直到基学习器数目达到事先指定的值T,将这T个基学习器进行加权结合。

 

因此从上述过程可以看到:Boosting算法的核心在于对训练集样本分布的调整,这可以通过“重赋权法”(re-weighting)来实现,

对于无法接受带权样本的基学习算法,则可通过“重采样法”(re-sampling)来处理。

需要注意的是,Boosting算法在训练的每一轮都要检查当前生成的基学习器是否满足基本条件(例如是否比随机猜测好),若不满足条件

则当前基学习器即被抛弃且学习过程停止,而重采样法则不会遇到这种问题。

 

总结:对于Boosting算法,学习过程中涉及到的分类算法为一种。另外,基于Boosting的思想,我们在训练完一个模型时,

可以根据模型对每个样本的预测概率或者准确率来作为每个样本的权重来改变初始训练集,对该模型重新训练;对于深度学习这种,

可以根据每个样本的权重或者准确率来修正损失函数,使得网络能够关注分类错的多的那些类。上述做法能对分类结果起到不错的作用。

 

3、Bagging

Bagging是并行式集成学习方法最著名的代表。它直接基于自助采样法(bootstap sampling)即有放回采样。最终的采样结果是,

初始训练集中约有63.2%的样本出现在采样集中。

按照自助采样法采样出T个含m个样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。

在对新样本进行预测时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

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

具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假设有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,

选从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

若k=d,则基决策树的构建与传统决策树相同;若k=1,则随机选择一个属性用于划分;一般情况下k=log2(d)。

 

 4、结合策略

简单平均法(simple averaging):对每个个体学习器的预测结果取平均。

加权平均法(weighted averaging):给对每个个体学习器以不同的权重,最终的预测结果为所有个体学习器的加权平均。

绝对多数投票法(majority voting):若某标记得票过半数,则预测为该标记;否则拒绝预测。

相对多数投票法(plurality voting):预测为得票最多的标记。

加权投票法(weighted voting):与加权平均法类似。

 

Stacking【Wolpert, 1992; Breiman, 1996b】:

 

具体过程见【https://blog.csdn.net/data_scientist/article/details/78900265】

有研究表明,将初级学习器(个体学习器)的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,MLR

作为次级学习算法效果较好,在MLR中使用不同的属性集更佳。

 

假设有三种分类器:XGB,DNN,LGB;原始问题为一个五分类问题,则按照现在主流的做法:

对每种分类器得到1个新的特征,即最终输入到次级学习器中的新数据集特征数为3,然后次级学习器一般选用逻辑回归(Logistic Regression,LR)。

按照上述描述,则对每种分类器得到5个新的特征(对每个类的概率,5分类问题即为5列),最终输入到次级学习器的新数据集特征数为5*3=15,

然后次级学习器选用多响应线性回归(MLR)。

或者可以使用概率特征后,使用MLP来作为次级学习器。

 

总结:关于模型融合,在不同类型的分类器上,可以使用不同数量的特征(不使用全部的特征),

比如对于缺失数据不好处理,那么在训练NN,或者SVM这类分类器时可以选择丢弃缺失数据所在的特征进行训练。

或者在其他分类器性能都很差,只能选用一种分类器的情况下,

也可以考虑通过在分类器上使用不同数量的特征来达到获得有差异的分类器的目的,然后再进行模型融合。

或者通过改变输出(其实使用不同特征也算是改变输入的一种)、

从最初考虑问题的方式上进行改变(比如一个大家都考虑为二分类的问题,考虑成多分类问题,或者多个二分类问题等等)。

 

 多一点思考,少一点套路。

 

posted @ 2018-09-09 23:15  kamekin  阅读(665)  评论(0编辑  收藏  举报