第四章 集成学习与弱可学习理论
1 引言
集成学习的根本思路是对同一问题使用一系列学习器进行学习,并使用一定的策略把各个不同的学习结果进行整合从而获得比单个学习器更好的学习效果。 主要任务:集成学习并非力求得到单一的最优分类器,而是通过一组由多个假设组合而成的集成得到更优的假设。
泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。
2 集成学习的发展和现状
1990年,Hanson和Salamon对神经网络集成进行了研究,第一次提出了神经网络集成的概念。他们证明,在保证神经网络的精度高于50%的情况下,通过训练多个神经网络并将其结果通过投票法进行结合,可以显著地提高学习系统的泛化能力。
Valiant和 Kearns提出了弱学习和强学习的概念 。识别错误率小于1/2,也即准确率仅比随机猜测略高的学习算法称为弱学习算法;识别准确率很高并能在多项式时间内完成的学习算法称为强学习算法。 同时 ,Valiant和 Kearns首次提出了 PAC学习模型中弱学习算法和强学习算法的等价性问题,即任意给定仅比随机猜测略好的弱学习算法 ,是否可以将其提升为强学习算法 ? 如果二者等价 ,那么只需找到一个比随机猜测略好的弱学习算法就可以将其提升为强学习算法 ,而不必寻找很难获得的强学习算法。1990年, Schapire最先构造出一种多项式级的算法 ,对该问题做了肯定的证明 ,这就是最初的 Boosting算法。
1995年,Freund对Schapire的算法(最初的 Boosting算法)进行了改进,提高了算法的效率。但Schapire 和Freund的算法在解决实际问题时有一个重大缺陷,即要求事先知道弱学习算法学习正确率的下界,这在实际问题中很难做到。
1996年,Freund和Schapire提出了著名的AdaBoost(Adaptive Boost)算法,该算法的效率与Freund算法很接近,却可以非常容易地应用到实际问题中,因此,该算法已成为目前最流行的Boosting算法。 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
1996年,Breiman从可重复取样技术(Bootstrap Sampling)入手,提出了著名的Bagging方法。在该方法中,各学习器的训练集由从原始训练集中随机选取若干示例组成,训练集的规模与原始训练集相当,训练样本允许重复选取。这样,原始训练集中某些示例可能在新的训练集中出现多次,而另外一些示例则可能一次也不出现。在预测新的示例时,所有学习器的结果通过投票的方式来决定新示例的最后预测结果。Bagging方法通过重新选取训练集增加了个体学习器的差异,Breiman将此类算法称为P&C(Perturb and Combine)族算法,他指出,稳定性是Bagging能否发挥作用的关键因素,Bagging能提高不稳定学习算法例如神经网络和决策树的预测精度,而对稳定的学习算法例如k近邻和简单贝叶斯算法效果则不明显,有时甚至使预测精度降低。
国内,唐耀华等针对支持向量机(SVM)在应用于集成学习中会失效的问题,提出了一种选择性SVM集成学习算法(SE-SVM) 。 贾华丁等提出了采用二重扰动机制的支持向量机的集成训练算法。 2002年周志华等人提出了二次学习的思想,将集成学习用作预处理,设计出了泛化能力强、可理解性好的新型规则学习方法C4.5Rule-PANE。对二次学习进行了理论分析并设计出了新型决策树学习算法Nec4.5 。
在基本的Boosting和Bagging算法被提出以后,研究者们又陆续提出了大量的集成学习算法。一般来说,这些算法的学习过程可以分为两步,即个体学习器的生成以及个体学习器的结合。
根据个体学习器生成方式的不同,目前的算法大致可以分为两类: 一类以AdaBoost为代表,在这一类算法中,个体学习器是顺序生成的,属于这一类的还有Arc-x4、MultiBoost 、fBoost、MiniBoost等算法。 另一类则以Bagging为代表,这类算法中个体学习器可以并行生成,属于这一类的集成算法还有SEQUEL、Wagging、P-Bagging和基于选择性集成的GASEN 。
对个体学习器进行结合时,也有很多不同的策略。 Perrone等人认为,采用加权平均可以得到比简单平均更好的泛化能力。但是,也有一些研究者认为,对权值进行优化将会导致过配(overfiting),从而使得集成的泛化能力降低,因此,他们建议使用简单平均。
在分类问题上,集成的输出往往由个体学习器投票决定,投票法是一种很早开始就获得广泛使用的方法,如quinlan和Breiman使用投票法对决策树算法进行集成等: 绝对多数投票法:某分类成为最终结果当且仅当有超过半数的神经网络输出结果为该分类。 相对多数投票法:某分类成为最终结果当且仅当输出结果为该分类的神经网络的数目最多。 理论分析和大量实验表明,后者通常优于前者。因此,在对分类器进行集成时,目前大多采用相对多数投票法。
在2001年周志华提出了“选择性集成算法”之后,许多研究倾向于综合各种差异性获得方法、度量方法和选择性集成的思想来进行算法的设计。
ELRC(Byung等人提出 ) : 基于一种决策树的结构对原始数据进行划分,然后在划分 出的各个数据子集上基于不同的基本学习算法来生成基分类 器,最后选取分类效果最好的作为此数据子集上的分类器。 当对一个新示例作决策时,学习器能够自动选择与其相关的 基分类器参与决策。
数据离散化的基分类器构造方法(蔡铁等人提出 ) : 该方法采用粗糙集和布尔推理离散化算法处理训练样本集,能有效删除不相关和冗余的属性,提高基分类器的准确性和差异性。
集成学习是一个在迅速发展中的研究领域,从其出现到目前为止,短短十几年的时间,它已经广泛应用于语音识别、文本过滤、遥感信息处理、疾病诊断等众多领域,未来,仍将是一个快速发展期。
3 集成学习的产生背景和主要作用
机器学习所关注的根本问题之一就是如何提高学习系统的泛化能力,也就是说,如何利用已有数据训练出学习器,使之能够尽可能好地处理新数据。由于集成学习为这一根本问题提供了一种有效可行的解决途径,因此它受到了国际机器学习界的广泛重视。
集成学习指的是为解决同一个问题训练出多个学习器。在对新的数据进行处理时,各个学习器在新数据上的结论以某种方式进行结合,以获得最终的结果。 以往的学习算法在假设空间中进行搜索时,往往会出现以下问题: 1.统计问题:如果有若干个假设在训练数据上的误差接近,学习算法就需要从中选择一个作为输出。这时就可能出现由于假设空间相对于可用的训练数据太大,使得选择出的假设不能够在未知的数据上获得好的效果。
2.计算问题:学习算法并不能保证学习到的假设是假设空间中最好的假设。例如,神经网络、决策树等技术为了寻找与训练数据吻合得好的假设,往往需要引入启发式的策略,然而启发式的策略(例如梯度下降)容易使学习算法陷入局部极小。 3.表示问题:如果学习算法搜索的假设空间中并不包含与目标函数相似的假设,在这样的假设空间中进行搜索会造成学习结果与学习目标有很大的差距。
集成学习能在一定程度上缓解上述的问题,这是因为: 1.在统计问题上,集成学习通过保留多个与训练数据拟合较好的假设,并对它们的结果进行结合,从而可以在一定程度上缓解假设空间太大而训练数据相对不足的问题。 2.在计算问题上,集成学习的多个假设由于各自具有不同的局部极小,结合起来后就能够在一定程度上相互抵消,从而减小了算法陷入某个局部极小的风险。
3.在表示问题上,集成学习的多个假设的联合扩展了被表示的假设空间,从而使得搜索到的学习结果更加精确。
集成学习技术具有很强的泛化能力,它的作用主要体现在以下四个方面: 1.提高预测结果的准确性 机器学习的一个重要目标就是对新的测试样本尽可能给出 最精确的估计。构造单个高精度的学习器是一件相当困难的 事情,然而产生若干个只比随机猜想略好的学习器却很容易。 研究者们在应用研究中发现,将多个学习器进行集成后得 到的预测精度明显高于单个学习器的精度,甚至比单个最好 的学习器的精度更高。因此,在难以直接获得高精度的学习 算法的问题上,可以利用集成学习技术将一些精度不够高的 弱学习算法提升为精度高的强学习算法。
2.提高预测结果的稳定性 有些学习算法单一的预测结果时好时坏,不具有稳定性, 能一直保持高精度的预测。通过模型的集成,可以以较高的 概率普遍取得很好的结果。 3.改进参数选择 对于一些算法而言,如BP神经网络、遗传算法,在解决实 际问题的时候,需要选择操作参数。但是这些操作参数的选 取没有确定性的规则可以依据,只能凭借经验来选取,为了 得到好的学习效果,往往需要反复调整学习参数。大多数情 况下,需要使用者具有充分的经验才能设定合适的参数值, 而对于非专业的一般操作人员会有一定的难度。而且参数选 择不同,结果会有很大的差异。集成学习技术可以利用一些 参数设置得并不太好的学习器取得较好的学习效果。
集成学习的主要内容 4
4.1 PAC(Probably Approximately Correct)理论 在机器学习领域中,自从Valiant关于PAC可学习性的文章发表后,改变了以往以概率1作为评价模式识别性能的局面,并带来了后来基于PAC学习模型的机器学习研究的巨大发展。
PAC(Probably Approximately Correct)理论 c: 概念,是指一个X的子集,或者说是一个X中的元素到布尔值的{0,1}映射 C: X上一系列概念的集合 D: X的概率分布 h: 要考察的算法输出的一个假设,我们希望它尽可能地接近c “尽可能地接近”的意思是,有比较大的概率(Probably)得到的结果在大部分情况下(Approximately)与c一致。
更严格地定义PAC : 集合C为PAC可学习的是指对于其中的所有c,对于任意分布D,对于任意小的数0<ε<1/2和0<δ<1/2,我们要考察的算法有至少(1-δ)的概率输出一个h满足P[h(x)!=c(x)] <=ε,并且算法花费时间与1/ε,1/δ成多项式关系。
概率近似(PAC)学习首先要求学习器输出错误率限定在某常数ε范围内,其次要求对所有的随机抽取样本序列失败的概率限定在某常数δ范围内。PAC理论强调机器学习的目的应该是以模型概论近似正确(1-ε)为指标,而不是以概率为1为指标。PAC可学习性的一个隐含的条件:每个目标概念c,假设空间H都包含一个以任意小误差接近c的假设 。
4.2 强可学习与弱可学习理论: 强可学习:令S为包含N个样本点(x1,y1),...,(xn,yn)的样本集,其中xn是按照某种固定但未知的分布D(x)随机独立抽取的。yn=f(xn),f属于某个已知的布尔函数集F。如果对于任意的D,任意的0≤ε,δ≤1/2,学习算法生成一个满足P[h(x)≠f(x)]≤ε的估计h的概率大于1-δ,并且学习算法的运行时间与1/ε,1/δ成多项式关系.则称这种学习算法为强学习算法。
弱可学习的相关定理:若一个满足P[h(x)≠f(x)]≤ε的估计h的概率大于(1/2)+δ,0≤δ≤1/2。 这意味着,一个概念如果是弱可学习的,那么只要求一个弱可学习算法产生的模型的精度高于50%,也就是比随机猜想稍好
强可学习在什么条件下与弱可学习等价? 1990年,Schapire回答了这个问题。他使用构造的方法证明:一个概念弱可学习的充要条件是这个概念强可学习。这个结论表明,在学习概念时,只需找到一个比随机猜测略好的弱学习算法,就可以将其提升为强学习算法,而不必直接去找通常情况下很难获得的强学习算法。
多个弱学习器可以集成为一个强学习器,集成机器学习的理论基础由此奠定。由弱学习器得到强学习器的构造过程称Boosting。Boosting方法可以产生一系列学习器,各学习器的训练集决定于在其之前产生的学习器的表现,被已有学习器错误判断的示例将以较大的概率出现在后面的学习器的训练集中。这样,后面的学习器将能够很好地处理对已有学习器来说很困难的示例。
4.3 集成学习的基本概念 集成学习的广义定义:传统的机器学习方法是在一个由各种可能的函数构成的空间(称为假设空间)中寻找一个最接近实际分类函数的分类器。单个分类器模型主要有决策树、人工神经网络、朴素贝叶斯分类器等。集成学习的思路是在对新的实例进行分类的时候,把若干个单个分类器集成起来,通过对多个分类器的分类结果进行某种组合来决定最终的分类,以取得比单个分类器更好的性能。如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。
狭义地说,集成学习是指利用多个同质的学习器来对同一个问题进行学习,这里的“同质”是指所使用的学习器属于同一种类型,例如所有的学习器都是决策树、都是神经网络等等。 而随着该领域的发展,越来越多的学者倾向于接受广义定义。
采用广义定义有一个很大的好处,就是以往存在的很多名称上不同、但本质上很接近的分支,例如多分类器系统(multi-classifier system)、多专家混合(mixture of experts)、基于委员会的学习(committee-based learning)等,都统一地归属到集成学习之下。所以在广义的情况下,集成学习已经成为了一个包含内容相当多的、比较大的研究领域。
图4.1 集成学习流程示意图
图4. 1为集成学习的示意图。在学习阶段,先由原始训练集D产生m个训练子集,由每一个训练子集Di(i=1,2, 图4.1为集成学习的示意图。在学习阶段,先由原始训练集D产生m个训练子集,由每一个训练子集Di(i=1,2,...,m)产生对应的学习器hi(i=1,2,...,m)。在实际应用时,个体学习器以某种方式结合在一起组成h*=F(h1,h2,...,hm)。
4.4 集成学习的算法框架 集成学习方法的三要素:个体生成方法、个体网络和结论合成方法。 两大步骤: 1.应用一定的个体生成方法,产生多个训练子集,分别训练得到多个独立的个体学习模型。 个体生成方法就是从原数据样本集产生不同的训练子集以训练得到个体网络,常用的如Bagging和Boosting使用的数据子集生成方法。 2.采用一定的结论合成方法,对构成集成的个体网络的输出进行合成,得到神经网络集成的结果。
4.4.1 个体基学习器的生成方式 为了获得较理想的结果,客观要求基分类器之间保证相互独立性,一般认为有效地产生泛化能力强且差异大的基学习器,是集成算法的关键。 Lam提到分类器之间决策的独立性有助于提高正确分类的概率值。因此如何构造差异性大的,决策独立的个体学习器就成为各种集成学习算法的关键步骤。
1.基于训练集处理的产生方式 1)Bootstrap Sampling Bagging方法中生成基分类器的主要手段是通过Bootstrap Sampling(重采样)来获得训练集的不同子集,通过训练集的差异性来获得基分类器的差异性。使用Bootstrap Sampling方法时,理论上每个基分类器的训练集中只有63.2%的重复样本重复率,Breiman指出要使Bagging有效,基分类器的学习算法必须是不稳定的,也就是对训练数据敏感,决策树、神经网络等训练算法属于不稳定的学习算法,k近邻、聚类等算法属于稳定的算法。基于以上特点,Bagging算法非常适合于并行学习多个基分类器,这是其自身的一大优势。
2)Boosting Boosting最早由Schapire提出,其思想为对那些容易被错分的训练样本进行强化学习:首先给每个训练样本赋予相同的权重,然后使用训练的基分类器进行测试,对于那些被错判的样本提高其权重,对于那些正确判决的样本降低其权重,然后根据权重调整后的训练集训练下一轮分类器,此过程反复迭代就可以得到一个足够好的强分类器。但问题也随之提出了 Boosting框架中的基学习器算法并不是限定的,不是每一种都可以对带权训练集进行学习的,一般基于梯度的学习算法可以对带权训练集进行学习,如果学习算法不支持,那么可以通过重新采样的方法来获得一个与带权训练集权重分布接近的子集,通过对这个子集的学习来获得相应的基分类器,产生该采样子集的计算复杂度为
3)训练集分组 交叉验证法源自于K重交叉验证测试方法,属于无放回的抽样。其基本思想是将训练集划分为互不重叠的K等份,然后每次选定一份作为测试集,其他K-1份作为训练集,从而可得到K个不同的基分类器。将给定的学习对象分成若干组,对每个组分别进行训练,得到若干分类器,然后组合这些分类器,得到一个集成学习系统,该方法非常接近Bagging,与Bagging一样支持并行学习。除了交叉验证,还可以使用随机分组法,,逐次随机将原始数据集分为训练集和验证集,并将训练后的分类器逐个加入集成,以新个体的加入是否会导致集成性能改善为原则来决定保留或抛弃 。
2.基于特征集处理的产生方式 给定学习对象,提取反映该对象不同性质的特征集,针对这些不同的特征集分别训练学习器,然后组合得到一个集成学习系统。显然这些基于不同特征集的集成系统构造方式实际上也是一种基于训练数据集处理的产生方式,所不同的是更强调同一训练集的不同特征。
Opitz和Guerra-Salcedo研究提出采用遗传算法搜索用以产生不同个体分类器的特征子集,[45]提出的随机子空间集成学习算法,所有特征子集完全随机产生。[46]通过对火星图片进行和等图像处理方法获得维特征,通过选择这些特征的子集来构建不同的神经网络基分类器,最后集成的结果在鉴别火星火山的识别率上达到了人类专家的水平,但是相同的技术被应用到只有单个特征的声纳数据时,在输入特征少量减少的情况下基分类器的性能急剧恶化,导致投票集成的结果也不理想。这说明特征选择只对特征高度冗余的数据集才能产生理想的结果。1997年Dietterich提出把特征选取和一般的集成学习算法结合起来以提高集成学习性能。
3. 基于不同性质的分类器的产生方式 有效的分类器模型并不多,有时往往需要对每一类分类给出不同实例,这些不同实例的产生需要用到其他的基分类器产生方式,[48]的实验说明了,如果仅在相同特征集上训练不同类型的分类器进行实验并不能获得实质性的性能提升。
4.基于随机扰动的产生方式 可以通过对学习样本加入随机扰动来获得全新的学习器,或者是对学习器参数进行随机扰动,如对神经网络设定随机初始权值、层数、节点数和训练的误差目标;对于决策树,则可以在决策节点的特征选取时从某个特征子集里面随机选取一个作为该节点的分类特征。Dietterich对随机扰动法进行了各种实验比较,发现在噪声相对较低的情况下,其性能甚至会优于AdaBoost,但在噪声水平较高时该方法不能得到令人满意的结果。随机扰动法易于和其它基分类器产生方式结合。
5.基于输出结果处理的产生方式 Dietterich提出纠错码方法ECOC来生成不同的基分类器。其基本思想是针对多分类任务,对不同类别样本分别赋予长度为L的二进制编码,并确保不同类别编码之间的海明码距足够大,这样学习任务转化为L个不同的二分类任务。针对第L个二分类器,那些编码在第L位为0的样本标为A类,为1的标为B类。然后根据新标示的A,B两类样本训练该二分类器。依次得到所有L个二分类器。将L个二分类器的预测结果与设计的二进制分类编码进行比较,获得相应的分类预测。决策树和神经网络实验证明该方法可以有效改善难度较大的多目标分类任务,并且不受训练集规模大小限制,不依赖每个目标分类的具体编码值。另外在算法中选择一个合适的编码长度是有益的。
4.4.2分类器结论集成方法 基于不同的个体分类器选择方式来生成集成系统,相应的构造过程可以分为四类: 1.并行构造 分类器集合中的个体分类器在构造生成过程中并不依赖其他分类器,相互之间的构造过程完全独立,其过程可以并行完成,如Bagging算法。
2.序列构造 分类器集合中的个体分类器在构造生成的过程中都存在前向依赖关系,也即当前分类器的构造实现必须以之前构造的个体分类器为基础,分类器的生成呈现一种序列关系,如Boosting系统。 3.选择性构造 选择性构造方式是通过优选产生最终参与集成的基分类器子集合,进而达到优化集成的目的。
4.树状构造 这种构造方式可以看作前几种结构的复合,如:同层为并行构造,不同层为序列构造。
4.4.3分类器分类结果的合成方式 四个层次 : 1.抽象层次:每个基分类器只提供一个目标分类或者目标分类子集。 2.排位层次:每个基分类器提供一个可能的目标分类列表,其中目标分类按照可能性的大小进行排列。 3.度量层次:每个基分类器不仅提供分类结果,还提供每种分类结果的度量(可能性)。 4.编码层次:ECOC的出现证明了基分类器只需要判断目标是否属于某个类别集合(包含多个类别)、而不需要给出明确的分类判决信息。通过对多个基分类器的输出进行排序编码,就可以得到最后的分类判决。
基分类器进行如下定义: 表示共有T个基分类器参与集成,所需分类的类别数有J个。如果t-th个分类器的判决为j-th个类别,那么ht,j=l,否则为0。对于输出为连续值的分类器则定义为,通过对输出值规范化也可定义为Pt(wj|X)
1)代数合成法 代数合成属于非训练合成方法,即通过代数表达式对分类器的输出值进行合成。获得表达式最大支持的类别为输出:
平均法则: 加法法则: 加权平均: 其中 ;wt为根据对应的基分类器性能设定的权重 乘法法则: 最大法则: 最小法则: 中值法则: 广义平均法则: 其中α为控制参数,其取值不同将分别得到以上介绍的几种法则。
2)简单投票法 基本思想是多个基分类器进行分类预测,通过某种投票原则进行投票表决。常用的投票方法有,多数投票、一票否决、最小投票、一致表决和阈值表决 。 一票否决是指,当所有基分类器的预测结果一致时的分类结果才可以作为输出;一致表决指所有基分类器都没有反对的类别作为输出;阈值表决是指对某一类的预测比例达到一定时则该类别作为输出。
3)基于D-S证据理论的合成方式 基于D-S证据理论合成方式的基本思想是通过识别率、拒绝率等一系列参数计算出每个目标分类的置信范围,然后推断出分类结果。
4)编码合成 其思想是对类别进行L位编码,L个基分类器输出的仅是对目标相应编码位的预测结果,它们输出结果组成的编码才是最终的预测结果。
5)串行合成 基学习器分布在多个层次上,用多个层次的学习器来完成学习任务,前一层的预测结果作为后一层的输入,依次类推。本质上,上述的合成方法都符合这一特点,但都是两层模型,这里的串行合成主要指三层及三层以上的叠加。
6)其它合成方式 除上述合成方法之外还有很多其他的合成方法,如最优合成器,以及某些情况下单个分类器的联合 。
4.4.4 集成学习常用分析评价方法 Bias-variance分解分析法由Geman提出,被广泛用于分析集成算法的性能。 本真噪音:是任何学习算法在该学习目标上期望误差的下界,即使用最优贝叶斯分类器近似达到的最小分类错误。
Yu提出了评价集成学习三条基本标准:学习精度、学习效率和基本分类器的多样性。
AdaBoost 5
Boosting算法的主要思想就是通过粗糙的、不太正确的、简单的、单凭经验的初级预测方法,按照一定的规则,最终得出一个复杂的、精确度很高的预测方法。算法对那些容易错分类的训练实例加强学习,使得随后引入的学习器能够很好地处理那些容易错分的样本。
AdaBoost算法是Schapire和Freund在1995年提出的,它有效地解决了早期Boosting算法在实际运用中的困难,它的最终判别准则的精确度依赖于所有弱学习过程得出的弱假设,因而更能全面地挖掘弱学习算法的能力。
初始化 D1(i) = 1/N ,第一次迭代时每个样本的权重都为1/N For t = 1 to T 在Dt下训练: 表 4.1 AdaBoost算法伪代码 ---------------------------------------------------------------------------- 输入:训练集D = {(x1; y1),(x2; y2),...,(xm; ym)}; 基础学习器L;训练循环轮数T; 初始化 D1(i) = 1/N ,第一次迭代时每个样本的权重都为1/N For t = 1 to T 在Dt下训练: 得到弱假设ht,即通过训练集和当前权值分布得到第t次的弱学习器ht=L(D,Dt) 计算ht的错误率:εt=ΣDt(i)[ht(xi)≠yi] 令αt=1/2ln((1-εt)/εt) 此即为ht的权重 更新样本权值: Zt为归一化因子 循环结束 输出:
图 4.2 AdaBoost算法流程图
为了简单起见,我们考虑两类分类任务,X代表样本空间,Y代表类别标签,并且Y={+1,-1},给定训练数据集为D = {(x1; y1),(x2; y2),...,(xm; ym)}, xi ∈X and yi∈Y (i=1;...;m)。 首先,给所有的训练样本赋以相同的权值。第t轮学习迭代过程的权值分布为Dt,在训练集合和初始分布Dt下使用基础学习算法,可得到一个初始分类ht : X→Y。然后使用训练数据测试ht, 并增加分类错误的样本的权值,由此又可得到一个更新过的权值分布Dt+1。由训练数据和Dt+1继续进行分类。AdaBoost算法使用基础学习算法又可以生成另一个基础学习器。以上过程反复T次,每次称为一轮,最终的学习器通过使用权值多数投票方法由T个基础学习器得到。
5.1 AdaBoost算法训练误差的上界 AdaBoost算法最基本的一个理论上的性质就是它可以降低训练误差,也就是减少对训练样本的错误分类个数。如果我们把ht所产生的错误率εt,改写为1/2-γt,既然一个假设随机地猜测每一个训练样本的分类时所产生的错误率是1/2(此处仅考虑二类问题),那么γt就衡量了弱假设的预测比一般的随机猜测所“好的程度”。
(4.2) Freund和schapire证明了最终假设H(x)所产生的分类误差存在上界: (4.1) 其中 是Kullback-Leibler散度。 Sehapire和singer推广了Freund和sehapire的理论,得出了最 终分类器的分类误差的上界如下: (4.2) 其中
公式(4-2)表明如果每一个弱假设仅仅好于随机猜测,最终输出假设的训练误差将以指数速度下降至零。这就表明,我们所选择的弱假设仅仅需要比随机假设好就可以了。
5.2 训练轮数T的确定 在AdaBoost方法中,在弱分类器确定后,我们需要知道的参数只有弱学习算法所需要进行的迭代次数T。下面我们讨论一下如何选择迭代次数T: 如果所有的γt均为γ,则公式(4.1)可简化为 由此可以得到与最终假设H(x)误判率ε有关的一个足够大的运行次数:
但是在实际应用中,上述方法得到的T远远大于实际需要值。我们往往采用远小于上述的一个值作为T值。一个简单的确定T的方法就是采用交叉验证(Cross-validation)。将训练集的一部分样本作为检验集,用其余的训练产生最终假设H(x),选择使训练误判率达到最小的循环次数作为T值 。
5.3 基于泛化误差上界的分析 实际研究和设计一个算法时,我们真正关心的是它对于训练样本以外的测试样本的效果,也就是它的泛化误差 。 机器学习以最小经验风险与期望风险之差为统计基础,称为泛化误差 。
Freund和schaPire证明了怎样去界定最终假设的泛化误差,此上界与其训练误差,样本个数N,弱学习算法的VC维d以及Boosting算法的训练次数T相关。他们采用Baum和Haussferlzll中所提出的方法,证明了泛化误差至多是:
其中 表示训练样本上的经验概率。这个边界显示如果训练轮数T过大,即过度增加训练次数的话,Boosting将出现过适应。
某些时候AdaBoost的训练误差下降为零时其泛化误差仍然持续下降。这些与前面的上界问题似乎有悖。为了解释这些现象,sehapire和Freund给出了基于训练例的margin(边际)的另一种解释。我们先给出margin的定义。训练样本(x,y)的margin被定义为: 这是[-1,l]上的一个值。
当且仅当H正确的把样本(x,y)分类时margin才为正数。正的margin表示正确预测,负的margin表示错误预测。而且,margin的大小可以被解释为对预测的置信度的衡量,较大的margin可信度较高,较小的margin置信度较低。
schapire等人证明训练集上的较大的margin转化为泛化误差的一个上界。特别的,泛化误差的上界为
(4.8) 5.4基于优化理论的分析 实际上,AdaBoost算法是一个寻找弱分类器的线性组合的一个过程。其目的是最小化 从本质上说,在每一步迭代中,AdaBoost通过调用基础学习算法选取ht,然后计算at,然后再把它们的乘积累加到前面迭代得到的分类器的组合中,用这样的方法使得上述(4.8)指数和最小化。
AdaBoost.M1 6
以上基础Adaboost算法讨论的都是分类问题中的二类问题,但事实上现实世界中我们所面对的大多数学习问题都是多分类问题。于是,我们相应的把AdaBoost算法拓展到能够解决多分类问题。其中最直接的拓展方法就是由Freund和Schapire在1997年提出来的AdaBoost.M1算法 。 该算法在弱学习算法达到要求的精度时相当有效,即使是在那些由AdaBoost算法所产生的 “困难”的分布上。
图4.3 AdaBoost.M1算法流程图
AdaBoost.M1算法伪代码 : 输入:训练集D = {(x1; y1),(x2; y2),...,(xm; ym)};与AdaBoost不同,其中yi∈Y={1,...,k} 基础学习器L;训练循环轮数T; 初始化 D1(i) = 1/N ,第一次迭代时每个样本的权重都为1/N For t = 1 to T 在Dt下训练: 得到弱假设ht 计算ht的错误率:εt=ΣDt(i)[ht(xi)≠yi],如果εt>1/2,则设T=t-1,退出循环 令αt=εt / (1-εt) 更新样本权值: 其中 循环结束 输出:
AdaBoost.M1最主要的缺点就是不能够处理那些误差大于1/2的弱假设。一个随机猜测的假设的期望误差是1-1/k,其中k是可能的类别的数量,因此当k=2时,算法有效的必要条件就是预测仅仅好于随机猜测。尽管如此,当k>2时, AdaBoost.M1是AdaBoost最直接的多类扩展。当弱学习器强到在AdaBoost产生的困难分布上也能获得合适的高精度时,它足以解决多类的问题。若弱学习器不能在这些困难分布上获得至少50%的精度, AdaBoost.M1算法将失效。为此,在遇到复杂的多分类问题时,常常尝试把它简化为多个二类问题加以解决。
AdaBoost.M2 7
AdaBoost算法的第二种变形尝试通过加强Boosting算法和弱学习器之间的信息交流克服AdaBoost AdaBoost算法的第二种变形尝试通过加强Boosting算法和弱学习器之间的信息交流克服AdaBoost.M1的局限。首先,我们让弱分类器生成一个更具表达性的0、1向量,而不是仅在Y中有一个类别标志。直观上,这个向量中的第y个分量表示对应正确的标注是y的置信度。接近1或者0的分量分别对应可信或者不可信的标注。当我们给一个弱学习器更多的传递信息时,也对其给出的弱假设提出更复杂的要求。和一般的预测误差不同,我们使用一种称为“伪损失”的更复杂的误差衡量方式和弱假设相配合。和一般误差基于单个样本分布计算得到不同,伪损失由样本和对应的错误标注的分布计算得到。通过对这种分布进行处理,Boosting算法不仅能够在那一分类的样本专注于弱学习器,更细节地,也专注于难以区分的错误标签。下面我们会看到,基于上述思想的Boosting算法AdaBoost.M2在每个弱假设的伪损失稍好于随机猜想的情况下能获得很好的性能提升。
图4.4 AdaBoost.M2算法流程图
AdaBoost.M2算法伪代码 : 输入:训练集D = {(x1; y1),(x2; y2),...,(xm; ym)};其中yi∈Y={1,...,k} 基础弱学习器L;训练循环轮数T; B={(i,y): i∈{1,...,m},y≠yi} 初始化D1(i,y)=1/|B| 其中(i,y)∈B For t = 1 to T 在Dt下训练: 得到弱假设ht 生成表示置信度的0-1向量 计算ht的伪损失: 令αt=εt / (1-εt) 更新样本权值: 其中 循环结束 输出:
Bagging 8
Bagging是Breiman提出的与Boosting相似的技术。Bagging技术的主要思想是给定一个弱学习算法和一训练集让该学习算法训练多轮,每轮的训练集使用可重复抽样方法从初始的训练集中随机取出的n个训练样本组成,初始训练样本在某轮训练集中可以出现多次或根本不出现,一个样本必定出现一次的概率是至少0.632。训练之后可得到一个预测函数序列,最终的预测函数对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
Bagging与Boosting的区别在于Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的训练集的选择不是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销。
Bagging算法伪代码 : 输入:训练集D = {(x1; y1),(x2; y2),...,(xm; ym)}; 基础学习器L;训练循环轮数T; For t= 1,...,T 由原样本集D生成本次迭代的样本集Dt=Bootstrap(D); 由本次使用的样本集得到学习器ht 结束循环 输出: 若括号内为真则求和项为1,反之为0
Breiman对Bagging进行了理论分析,指出,分类问题可达到的最高正确率为 其中C表示序正确(orde correct)的输入集,C’为C的补集.
研究表明,Bagging可以显著提高不稳定的基学习器的泛化能力。以往的集成学习算法在生成多个个体学习器之后,通常是对所有的个体都进行结合,因此很多研究者尝试使用大规模的集成来解决问题,但Bagging算法有时不能确定合适的集成规模。利用中小规模的选择性集成可能获得更好的性能。
Stacking 9
堆栈即Stacking,也译为“叠加”,是由Wolpert于1992年提出的,由于该方法在理论上进行分析和解释具有一定难度,所以没有的得到广泛的应用。近年来随着集成学习的深入研究,也促成了堆栈的兴起。
堆栈算法适用于并行和分布式计算,该算法的主要思想是通过对多个模型的输出结果进行泛化,将前一个学习器的输出结果作为下一个的学习器的输入信息,从而使得前一层的学习器的成果能够被后面的学习器充分利用,从而提高学习的精度。该方法的特点是扩展性强,堆栈的层次可以从一层至多层向上伸延,每一层的学习模型可以使用不同的学习算法进行构造。与Boosting和Bagging算法不同,堆栈法组合的是不同的学习模型。同时,堆栈法没有采用投票法,而是采用了meta-learner(元学习模型)。投票法是因为不知道该相信哪个分类器,堆栈法则尝试了解哪个分类器更加精确,它采用了另一种学习算法,这种学习算法被称为元分类器。
元学习模型的输入被称为层模型,这个输入是由基本学习模型或可以称为层模型的输出。层实例的属性数目等于层分类器的个数,这些属性的属性值是对应的基本学习模型对实例的输出结果,如果堆栈学习模型应用于分类问题时,层学习模型首先学习这些样本,然后每个学习模型都产生一个输出值,这些输出值作为层学习模型的输入,这层学习模型通过组合得出最终的分类结果。
堆栈算法伪代码 : For t = 1,..., T 使用不同的学习算法得到初级学习器ht=Lt(D) End 初始化生成新的数据集D’ = Ф For i = 1,...,m: For t = 1,...,T; 使用学习器ht对样本xi进行分类zit = ht(xi) % h’=L(D’) 输出:H(x)=h’(h1(x),...,ht(x))
图4.6 堆栈算法的流程图
在标准的堆栈方法中,通过引入不同的学习算法得到一系列初级学习器,随后使用这些初级学习器融合得到第二级学习器meta-learner。
选择性集成 10
10.1选择性集成的提出 既然集成学习通过多个学习器对同一个问题进行学习可以比使用单一学习器获得更强的泛化能力,那么是不是个体学习器越多越好呢? 一种直观的想法就是,也许可以通过使用大量的个体学习器从而获得更好的泛化性能。
但这一做法有很多负面的影响,首先当个体学习器数目增加之后,一方面,在预测时需要更大的计算开销,因为要计算更多的个体预测;另一方面,需要更大的存储开销,因为有更多的个体需要保存。同时个体学习器增多以后,学习器之间的差异也将越来越难以获得。
著名学者周志华等人在文献[86]中从理论上分析和实验上证明了:在有一组个体学习器可用时,从中选择一部分进行集成可能比使用所有个体学习器进行集成效果更好。也就是说,为了达到期望的性能,未必要使用更多的学习器,并由此提出了选择性集成(selective Ensemble)这一范式。
在解决一个问题时,我们通常可能会想出多种解决方案,传统的做法是尽可能地选择出一种最佳的方案来解决问题,而选择性集成的思想则是对可以解决问题的多个方案进行适当的选择,再把挑选出来的方案进行某种结合,用来解决最终问题。
10.2 选择性集成的理论基础 对于一个集成学习任务,我们可以训练出多个学习器,根据“Many could Be Better Than All”,从这些学习器中选择一部分来组成集成,可能比使用所有的学习器进行集成效果更好,它为选择性集成学习提供了理论基础。
学习任务一般可分为回归和分类这两大类,回归的输出为连续值,而分类的输出为离散值。由于这两类问题具有不同的特点,其分析的方法也是不同的。 个体学习器的融合方式在回归问题上使用平均法,在分类问题上使用投票法,但以下分析过程也可以推广到其它各种融合方式。因此,本节的讨论具有一定的普遍性,可以适用于各种不同的集成学习算法。
1.回归任务 对于回归任务,假设个体学习器的数目为N,学习器的融合方式使用加权平均法,学习目的是模拟函数f:Rm→Rn。设f1,f2,…,fN分别代表各个个体学习器,wl,w2,…,wN分别为N个个体学习器的权值,它们满足式(4.16)和(4.17): 0≤wi≤1 (4.16) (4.17) 这时集成的第i个输出分量为: (4.18) 其中fil是第i个学习器的第l个输出分量。
为了简化讨论,这里假设各学习器的输出分量均只有一个,则学习目的是建立模拟函数f:Rm→Rn,但文中分析过程可以推广到各学习器的输出分量为多个的情形。同时假设样本x∈Rm,按分布p(x)随机抽取,其对应期望输出为d(x),而个体学习器fi的实际输出为fi(x)。则输入样本对应的集成学习实际输出为:
对于输入样本x,个体学习器fi的泛化误差为: (4.20) 而集成学习的泛化误差为: (4.21) 这样第i个个体学习器fi和集成在分布p(x)上的泛化误差分别为: (4.22) (4.23)
定义个体学习器fi和fj的相关度(correlation)用下面公式: 由以上得到: (4.28)
为了简化讨论,这里假定所有个体学习器的权值相同,即wi=1/N(i=1,2,…,N),即各个体学习器的融合方式为简单平均法。代入式(4 当第k个学习器被剔除,则集成学习的泛化误差变为
因此可以得出应被剔除的个体学习器需满足的条件为: 由以上可知,集成学习用于回归任务时,当产生多个个体学习器之后,从中选择一部分进行集成可能比使用所有学习器进行集成效果更好。
2.分类任务 假设分类器集成分类的目的是模拟函数 f: Rm →Ω。分类器集成由N个个体分类器 为f1,f2,……,fN组成,集成学习结论的 生成采用参与集成的个体分类器通过多数 投票法产生。为了简化讨论,这里假定Ω 只包含两个类别标记,即所需逼近的函数 为f:Rm→{-1,+1},但本章中的讨论可以 推广到Ω包含多个类别标记的情形。
设在m个示例样本上的期望输出D=[d1,d2,…,dm]T,其中dj为第j个样本的期望输出。设fi表示第i个分类器的实际输出,fi=[fi1,fi2,...,fim]T,其中fij为第i个分类器在第j个样本上的实际输出。D与fi分别满足dj∈{-1,+1}(j=1,2,…,m),fij∈{-1,l}(i=1,2,…,N; j=1,2,…,m)。显然,当第i个分类器在第j个样本上的实际输出正确的时候fijdj=+1 , 错误的时候fijdj=-1。第i个分类器在这m个样本上的泛化误差为:
其中,函数Error(x)定义为: 则集成在第j个样本上的输出为: 其中,函数Sgn(∙)为符号函数。
显然, 。 当集成在第j个样本上的实际输出是正确的时候,有 ,错误的时候, 当计算 时,个体分类器输出+1和-1的次数相同,则 ,此时出现平局(比如有10个分类器在投票的时候,其中5个分类器认为类别是“+1”而另外5个分类器认为类别是“-1”。集成的泛化误差为:
当我们从集成中剔除第k个个体分类器后,由剩余分类器所组成的新的集成在第j个样本上的输出为: 新集成的泛化误差是:
当剔除第k个分类器后,如果满足 ,即 上式得到满足时,集成的泛化误差不会增大,反而可能减少,新集成的效果会比原集成更好。
应被剔除的个体学习器所需满足的条件为 : 综上可知,集成学习用于分类任务时,当产生多个个体分类器之后,从中选择一部分进行集成可能比使用所有分类器进行集成效果更好。
通过上面两种情况的分析讨论可知,在集成学习训练出若干个体学习器后,无论是回归问题还是分类问题,我们对其进行选择操作,剔除部分不利于集成泛化误差减小的个体分类器,使用剩余学习器进行集成可望比使用所有学习器进行集成获得更好的泛化性能。一个极端的例子就是当所有的个体分类器都相同时,我们可以大幅减少集成的规模,但其泛化能力不变。
10.3 GASEN 尽管从理论上说,对于回归和分类问题,可以根据上述方法实现集成时分类器的选择,但对于现实世界中的问题,其计算量往往是极大、甚至是不可行的,并且对于多个输出变量和多类别问题情况还要复杂的多。 因此,周志华等学者在提出选择性集成的思想以后,为了验证选择性集成的可行性与正确性,提出了GASEN(Genetic Algorithm based Selecte Ensemble)算法,通过遗传算法来确定所需剔除的学习器,并取得了良好的效果。
GASEN算法首先通过bootstrap技术产生一系列的学习器,然后为各学习器指派一个可反映它们在组成集成时重要性的权重系数,将这些权重系数组成一个向量作为遗传种群中的个体进行进化,最后根据求出的最优权向量的权值来确定应该被剔除的学习器(如权值小于某个λ值入的学习器被剔除)。
GASEN算法伪代码 回归任务 分类任务 输入:训练集D = {(x1; y1),(x2; y2),...,(xm; ym)}; 基础学习器L;训练循环轮数T;门限λ For t= 1,...,T 由原样本集D生成本次迭代的样本集Dt=Bootstrap(D); 由样本生成神经网络Nt = L(Dt) 结束循环 生成权向量的种群 对种群进行进化(权向量w的适应度由度量) 得到进化后的最佳权向量w* 得到的集成后输出N*: 回归任务 分类任务
图4.7 GASEN算法流程图
10.4 选择性集成的发展 在选择性集成的实现方法上,自GASEN算法之后又出现了很多其它的方法,例如wu等人在GASEN的基础上又提出了e-GasEN李凯等通过聚类算法进行选择使得选择性集成算法的速度得到了大幅的提高;Castro等使用人工免疫算法进行选择,也取得了较好的效果;文献[90]中提出了一种simAnn算法,并提到如果将这种算法与GASEN算法结合相信会产生更强的算法;王丽丽在文献[91]中将蚁群优化算法用于选择性集成,提出了ACOSEN算法,使得集成的准确率、时间效率和集成规模三个方面都取得了显著提高;同样,傅强将两种高性能全局的优化算法—粒子群优化(PSO)和蚁群优化(ACO)算法应用于选择性神经网络集成,分别提出了基于离散二进制粒子群优化(BPSO)的神经网络优选集成方法和基于蚁群优化的神经网络优选集成算法。
在选择性集成的应用上,周志华等人将选择性集成的思想应用到人脸识别领域,提出了SEME(selective Ensemble of Multiple Eigenspaces)算法,并对本征脸、本征特征、本征脸+本征特征、SEME等方法进行了实验比较,发现SEME方法的识别效果明显优于其它方法。同时,SEME还揭示出了另外一些重要信息,如眼、鼻之间空间位置分布的重要性、眉毛的重要性等,这也为新的人脸算法的设计提供一些重要的启示。此外,在文献[93]中将选择性集成用于聚类,在文献[94]中将选择性集成用于时序预测,均获得了较好的效果。
11 集成学习的应用
较早期的应用来自国外研究者在字符识别方面的应用研究。Drucker等采用多层前向神经网络作为弱学习器,网络的隐层数以及隐层节点数随着数据库的不同而不同,对四种不同的手写体数据库,分别是来自美国邮电部门(USPS)的12000个邮政编码、来自美国国家标准和技术协会NIST的220000个数字、45000个大写字母以及45000个小写字母,经过3次迭代学习后采用投票的方式生成一个集成的分类器,试验结果显示集成的分类器与单个神经网络相比识别效果大大提高, 测试误差最小降低了17%,最大降低了43%。在文献[96]中,Freund和Schapire还以近邻分类器作为弱学习器,对USPS的12000个手写体数字进行分类,其中9709个数字用于训练,2007个数字用于测试,迭代30次后的测试误差为6.4%,单纯使用近邻分类器的测试误差达到8.6%,误差降低26%。
Hansen等人利用集成学习技术进行手写体数字识别,实验结果表明,集成的识别率比最好的单一学习器识别率高出20-25%。此后,Krogh和Sollich将AdaBoost用于手写体字符识别,系统对由200多个人的手写字符所组成的数据库能达到1.4%的错误率,而对UCI字符数据集则能达到2%左右的错误率。 Mao比较了Boosting,Bagging等方法在改善OCR性能上的效果。实验结果表明,虽然Boosting的精度在零拒识率时略优于Bagging,但随着拒识率的上升其优势迅速下降,最终在高拒识率时不敌Bagging。
Gutta等人又用集成学习技术进行多性别、多人种和多姿态的正面人脸识别。他们使用了“分而治之(divide and conquer)”的模块化方法,并利用决策树和支持向量机来实现对个体学习器的选通(gating)。Huang等人将集成学习技术用于图像在深度方向上发生偏转的多姿态人脸识别,在省去了偏转角度估计预处理的情况下,系统的识别精度甚至高于单一个体学习器在理想偏转角度估计预处理协助之下所能取得的最佳识别精度,除此之外,系统还能在进行识别的同时给出一定的角度估计信息。
Cherkauer用集成来代替NASA的喷射推进实验室研制的JARTOOL中的Gauss分类器,对Magellan空间探测器收集到的关于金星的合成孔径雷达图像进行分析,在火山检测方面达到了行星地质专家的水平。 Shimshoni和Itntrator利用集成学习技术进行地震波分类。他们采用了二级集成方式,地震波信号的三种不同表示分别被输入到采用不同网络结构的三个集成中,每个集成都被赋予一个可信度,第二级集成就以该可信度为权值,通过加权平均对第一级的三个集成进行结合。
Schapire和Singer将Boosting用于文本分类(text categorization)。他们通过实验发现,在该问题上,Boosting的效果始终优于或相当于Rocchio等常用技术。Weiss等人利用集成学习技术成功地在使用小词典的基础上达到了很高的分类精度,并且能够成功地用于对email的过滤。Torsten等将Bagging用于树分类器,提出了一种bagged-CTREE算法,用来解决医学当中激光扫描图像问题,并通过实验验证了该算法的有效性。
南京大学周志华与微软中国研究院的合作者一起,将神经网络集成用于图像在深度方向上发生偏转的多姿态人脸识别。将预测结果分解成多个特征向量的加权和。建立多视角特征空间,为每一视角的特征空间各训练一个神经网络,用另一个神经网络对其结合。该系统的识别精度甚至高于多个单一神经网络在理想偏转角度估计预处理协助之下所能取得的最佳识别精度,这为更好的人脸识别算法的设计起到了很好的指导作用。
除了姿态、遮挡、表情变化等因素以外,周志华和张宇还将集成学习技术用于解决人脸识别中的又一问题——年龄估计。事实上,年龄估计是人脸识别中对识别性能产生影响的又一重要因素。随着时间的推移,人的面部特征处在不断的变化中, 若能准确建立人脸的年龄函数,则能对人脸识别的结果产生积极的作用。张宇和周志华先使用经过调整的WAS (Weighted appearance specific)方法,再和代价敏感学习算法进行集成,获得了更好的性能。
在语音识别领域,AT&T实验室开发了一套自动语音客户服务系统,这个系统首先必须正确识别出语音并转换成相应的文本, 然后根据文本得出语义, 最后根据语义进行相关应答。)文献[115]中也分别将集成学习与自回归神经网络、动态贝叶斯网络等结合起来应用于语音识别系统中的语音识别部分。
集成学习也陆续应用于医疗诊断中,周志华等将神经网络集成应用于肺癌细胞识别,采用二级集成方法,第一级用于判断待测细胞是否为正常细胞,只有所有个体都认为是正常细胞才决定,否则进入第二级判断。该方法总体误识率较低,并且将肺癌细胞判定为非癌细胞的误识率非常低。其自主开发一套LCDS系统,将Boosting与神经网络结合起来应用于肺癌细胞识别,并已投人实际应用。
Hoffmann将Boosting与模糊分类器结合起来应用于肺癌的诊断,Merler将Boosting与决策树一起应用于皮肤癌的诊断。张新生等提出了一种Bagging的改进算法,并利用其进行乳房x光图像的微钙化检测,提高了分类正确率,降低了误检率。集成学习在其它方面的应用也很多, 例如Tieu将其用于图片检索, Moreno中将集成学习与简单的阈值函数结合应用于网络上的声音文件检索,Furlanello 中将其与决策树结合用于地理信息系统中的风险建模,Onoda中用Boosting和RBF网络一起对家用电器的运行情况进行检测, 以帮助电力公司对电力的波峰和波谷进行调整。
此外,集成学习还被广泛应用到信息检索排序学习、机器人自动户外导航、辅助医疗诊断、药物活性预测、聊天机器人知识获取、网络入侵检测和基因数据分析等领域。
12 总结和展望
分类可视为机器学习的终极任务。长期以来,人们力图寻求分类器性能的不断提升,但目前已有的单分类器算法由于其自身存在的一些无法克服的局限,很难在更为广泛的应用场景下取得理想的效果。集成学习是一种区别于单分类器学习的机器学习范式,它使用多个(同质的或者不同质的)学习器来解决同一个问题,因而可以有效地提高学习系统的泛化能力。多分类器集成技术利用了各个单分类器之间存在的信息互补性,充分发挥了各个分类器的优势,弥补了各个分类器的不足,已成为改善分类系统泛化性能和鲁棒性的主要手段之一。研究高效而广泛适用的多分类器集成技术具有重要的理论和现实意义。
本章主要介绍了机器学习中的集成学习方法,讨论了集成学习方法的理论基础,基本概念及框架,分析了集成学习方法可以有效地提高学习系统的泛化能力的原因,给出了集成学习的主要作用,最后对集成学习方法的研究现状及相关应用进行了阐述。事实上,传统的集成学习方法并不完美,由于集成学习需要引入更多的分类器,必然导致计算量增大,算法灵活性降低,同时研究者发现集成学习的效果并不一定随着分类器个数的增加而增加。针对这一情况,本章又介绍了一种新的集成学习思路,即选择性集成。选择性集成使用一定的策略从原始集成的多个分类器中选择出一部分进行继续学习,往往可以取得比单纯集成效更好的效果。
目前集成学习方法已经应用于工业、信息产业、生物医学、交通、军事、管理学等社会生活的很多领域,随着对集成学习研究的不断深入,集成学习的性能和其应用模式将得到进一步提升和扩展,集成学习必将在更为广泛的领域发挥更大的作用。
本章完