集成学习_集成学习算法 - CSDN
集成学习 订阅
分类器集成,其实就是集成学习,通过构建并结合多个学习器来完成学习任务。一般结构是:先产生一组“个体学习器”,再用某种策略将它们结合起来。结合策略主要有平均法、投票法和学习法等。 展开全文
分类器集成,其实就是集成学习,通过构建并结合多个学习器来完成学习任务。一般结构是:先产生一组“个体学习器”,再用某种策略将它们结合起来。结合策略主要有平均法、投票法和学习法等。
信息
外文名
Classifier ensemble
又    称
集成学习
领    域
人工智能
中文名
分类器集成
学    科
机器学习
基本释义
构建并结合多个学习器来完成学习
分类器集成集成学习
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)。 图1显示出集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据中产生,例如C4.5决策算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质”的。同质集成中的个体学习器亦称为“基学习器”。相应的学习算法称为“基学习算法”。集成也可包含不同类型的个体学习器,例如,同时包含决策树和神经网络,这样的集成称为“异质”的。异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法,常称为“组件学习器”或直接称为个体学习器。 [1]  集成学习通过将多个学习器进行结合,常可获得比单一学习器更加显著的泛化性能。这对“弱学习器”尤为明显。因此集成学习的理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。但需注意的是,虽然从理论上说使用弱学习器集成足以获得很好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用一些常见学习器的一些经验等,人们往往会使用比较强的学习器。在一般经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比最坏的要好些,比最好的要坏一些。集成学习把多个学习器结合起来,如何能得到比最好的单一学习器更好的性能呢?
收起全文
精华内容
参与话题
  • 集成学习(ensemble learning)原理详解

    万次阅读 多人点赞 2017-08-27 16:30:52
    集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类...
    集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习的原理做一个总结。
    

    1. 集成学习概述

        从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。

        也就是说,集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。

    2. 集成学习之个体学习器

        上一节我们讲到,集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。

        第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

        目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。下面就分别对这两类算法做一个概括总结。

    3. 集成学习之boosting

        boosting的算法原理我们可以用一张图做一个概括如下:

        从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

        Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。AdaBoost和提升树算法的原理在后面的文章中会专门来讲。

    4. 集成学习之bagging

        Bagging的算法原理和 boosting不同,它的弱学习器之间没有依赖关系,可以并行生成,我们可以用一张图做一个概括如下:

        从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。

        对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法(Bootstap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

        随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。bagging和随机森林算法的原理在后面的文章中会专门来讲。

    5. 集成学习之结合策略

        在上面几节里面我们主要关注于学习器,提到了学习器的结合策略但没有细讲,本节就对集成学习之结合策略做一个总结。我们假定我得到的T个弱学习器是       

    5.1 平均法

        对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干和弱学习器的输出进行平均得到最终的预测输出。

        最简单的平均是算术平均,也就是说最终预测是

             

        如果每个个体学习器有一个权重 

    ,则最终预测是
            

        其中   

    是个体学习器   的权重,通常有
            

    5.2 投票法

        对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是       

    ,对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是       

        最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别   

    为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。

        稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。

        更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

    5.3 学习法

        上两节的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

        在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。

     

        以上就是集成学习原理的一个总结,后面会分别对Adaboost, 提升树,bagging和随机森林的算法原理做一个总结,敬请期待。

    展开全文
  • [机器学习]集成学习--bagging、boosting、stacking

    万次阅读 多人点赞 2020-07-23 11:35:36
    一、集成学习简介集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。如何产生“好而不同”的个体学习器,是集成学习研究的核心。集成学习的思路是通过合并多个模型来提升机器学习性能,这种...

     

    集成学习简介

    集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。

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

    集成学习的思路是通过合并多个模型来提升机器学习性能,这种方法相较于当个单个模型通常能够获得更好的预测结果。这也是集成学习在众多高水平的比赛如奈飞比赛,KDD和Kaggle,被首先推荐使用的原因。

    一般来说集成学习可以分为三大类:

    • 用于减少方差的bagging
    • 用于减少偏差的boosting
    • 用于提升预测结果的stacking

    集成学习方法也可以归为如下两大类:

    • 串行集成方法,这种方法串行地生成基础模型(如AdaBoost)。串行集成的基本动机是利用基础模型之间的依赖。通过给错分样本一个较大的权重来提升性能。
    • 并行集成方法,这种方法并行地生成基础模型(如Random Forest)。并行集成的基本动机是利用基础模型的独立性,因为通过平均能够较大地降低误差。

    大部分集成模型都通过一个基础学习算法来生成一个同质的基础学习器,即同类型的学习器,也叫同质集成。

    有同质集成就有异质集成,为了集成后的结果表现最好,异质基础学习器需要尽可能准确并且差异性够大。

     

     

    Bagging

     

    Bagging是引导聚合的意思。减少一个估计方差的一种方式就是对多个估计进行平均。例如,我们可以用训练集的不同子集(随机选择并替代训练集)训练M个不同的树然后计算最后的结果:

    Bagging使用装袋采样来获取数据子集训练基础学习器。通常分类任务使用投票的方式集成,而回归任务通过平均的方式集成。

     

    1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(有放回)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(我们这里假设k个训练集之间是相互独立的,事实上不是完全独立)

    2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。但是是同种模型。(注:,k个训练集虽然有重合不完全独立,训练出来的模型因为是同种模型也是不完全独立。这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

    3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

    对于Bagging需要注意的是,每次训练集可以取全部的特征进行训练,也可以随机选取部分特征训练,例如随机森林就是每次随机选取部分特征

     

     

    常用的集成算法模型是随机森林和随机树

    在随机森林中,每个树模型都是装袋采样训练的。另外,特征也是随机选择的,最后对于训练好的树也是随机选择的。

    这种处理的结果是随机森林的偏差增加的很少,而由于弱相关树模型的平均,方差也得以降低,最终得到一个方差小,偏差也小的模型。

    在一个极端的随机树算法中,随机应用的更为彻底:训练集分割的阈值也是随机的,即每次划分得到的训练集是不一样的。这样通常能够进一步减少方差,但是会带来偏差的轻微增加。

     

     

    下面通过应用Iris数据集的分类问题来距离说明bagging。

    我们可以使用两种基础模型:决策树和KNN。图中展示了基础模型与集成模型学习得到的决策边界。

    Accuracy: 0.63 (+/- 0.02) [Decision Tree]      Accuracy: 0.64 (+/- 0.01) [Bagging Tree]

    Accuracy: 0.70 (+/- 0.02) [K-NN]                 Accuracy: 0.59 (+/- 0.07) [Bagging K-NN]

     

     

    决策树学到的是轴平行边界,然而k=1最近邻对数据拟合的最好。bagging通过训练10个基础模型能过随机选择80%的数据作为训练集,同样随机选择80%的特征进行训练。

     

    决策树bagging集成相比K-NN bagging集成获得了更高的准确率。K-NN对于训练样本的扰动并不敏感,这也是为什么K-NN成为稳定学习器的原因。

    整合稳定学习器对于提升泛化性能没有帮助。

    图像结果同样展示了通过增加集成模型的个数带来的测试准确率变化。基于交叉验证的结果,我们可以看到整合基础模型个数大于10个之后性能就基本不再提升了,只是带来了计算复杂度的增加。

    最后一张图绘制的是集成学习模型的学习曲线,注意训练集数据的平均误差为0.3,在对训练集做80%采样的时候训练集和验证集误差最小。

     

     

    Boosting(提高)

    Boosting指的是通过算法集合将弱学习器转换为强学习器。boosting的主要原则是训练一系列的弱学习器,所谓弱学习器是指仅比随机猜测好一点点的模型,例如较小的决策树,训练的方式是利用加权的数据。在训练的早期对于错分数据给予较大的权重。

    对于训练好的弱分类器,如果是分类任务按照权重进行投票,而对于回归任务进行加权,然后再进行预测。boosting和bagging的区别在于是对加权后的数据利用弱分类器依次进行训练。

     

    boosting是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:

    • 先从初始训练集训练出一个基学习器;
    • 再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注;
    • 基于调整后的样本分布来训练下一个基学习器;
    • 重复进行上述步骤,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

    下面描述的算法是最常用的一种boosting算法,叫做AdaBoost,表示自适应boosting。

    AdaBoost算法每一轮都要判断当前基学习器是否满足条件,一旦条件不满足,则当前学习器被抛弃,且学习过程停止。

    AdaBoost算法中的个体学习器存在着强依赖关系,应用的是串行生成的序列化方法。每一个基生成器的目标,都是为了最小化损失函数。所以,可以说AdaBoost算法注重减小偏差。

    由于属于boosting算法族,采用的是加性模型,对每个基学习器的输出结果加权处理,只会得到一个输出预测结果。所以标准的AdaBoost只适用于二分类任务。

     

    我们可以看到第一个分类器y1(x)是用相等的权重系数进行训练的。在随后的boosting中,错分的数据权重系数将会增加,正确分类的数据权重系数将会减小。

    epsilon表示单个分类器的加权错误率。alpha是分类器的权重,正确的分类器alpha较大。

     

    AdaBoost算法的表现如上图所示。每个基础模型包含一个深度为1的决策树,这种决策树依靠线性划分进行分类,决策平面跟其中一个轴平行。上图还展示了集成规模的增加带来的测试准确率变化以及训练和测试集的学习曲线。

     

    梯度树提升(Gradient Tree Boosting)是一个boosting算法在损失函数上的泛化。能够用于分类和回归问题。Gradient Boosting采用串行方式构建模型。

    每新增一个决策树hm(x)都尽可能的选择是的当前模型Fm-1(x)损失最小的那个:

    注意:分类和回归使用的损失函数有所差别。

     

     

    Stacking(堆叠)

    Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。

    基础模型通常包含不同的学习算法,因此stacking通常是异质集成。算法伪代码如下:

    各基础模型的预测结果如下:

    Accuracy: 0.91 (+/- 0.01) [KNN]

    Accuracy: 0.91 (+/- 0.06) [Random Forest]

    Accuracy: 0.92 (+/- 0.03) [Naive Bayes]

    Accuracy: 0.95 (+/- 0.03) [Stacking Classifier]

    Stacking集成效果如上图所示。分别在K-NN,Random Forest,Naive Bayes做训练和预测,然后将其输出结果作为特征,利用逻辑回归作为元模型进一步训练。如图所示,stacking集成的结果由于每个基础模型,并且没有过拟合。

    Stacking被Kaggle竞赛获奖者广泛使用。例如,Otto Group Product分类挑战赛的第一名通过对30个模型做stacking赢得了冠军。他将30个模型的输出作为特征,继续在三个模型中训练,这三个模型XGBoost,Neural Network和Adaboost,最后再加权平均。详见文章(https://www.kaggle.com/c/otto-group-product-classification-challenge/discussion/14335)。

    结构如下:

     

     

    结合策略

    集成学习的第二类模型,为了提高集成的泛化能力,每个基学习器之间不存在很强的依赖性,所以最终预测结果时,需要一定的策略对T个结果进行结合。下面介绍结合策略。

    平均法

    对数值型输出,最常见的结合策略是使用平均法。

    • 简单平均法
    • 加权平均法
      但是对于规模比较大的集成来说,权重参数比较多,较容易导致过拟合。加权平均法未必一定优于简单平均法。

    一般而言,在个体学习器性能相差较大时,宜使用加权平均法,而在个体学习器性能相近时,宜使用简单平均法。

    这一点在第二个项目中深有体会,该模型有三个损失函数,每个损失函数的性能差别比较大,所以用了加权,在第一个数据集中调好参数以后,在第二个数据集中,效果就不是很好,需要重新进行调参。

    投票法

    • 绝对多数投票法
      若某标记得票过半数,则预测为该标记;否则拒绝预测。
    • 相对多数投票法
      预测为得票最多的标记。若同时有多个标记获得最高票,则从中随机选取一个。
    • 加权投票法

    学习法

    当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。

    代码

    本文的代码参见: ipython notebook.

     

    总结

     

    除了本文所提到的集成学习研究之外,集成学习还被广泛应用于利用多种分类器做训练的深度学习模型中。深度学习模型中的分类器可能在架构、超参数以及训练技巧上存在差异,都可以进行集成。

    集成学习已经被证明在Kaggle数据科学竞赛中能够获得较好的成绩。

     

    推荐阅读

     

     

    参考:

    https://blog.statsbot.co/ensemble-learning-d1dcd548e936

    https://www.jianshu.com/p/0a23d578ac81

     

     

     

     

     

    展开全文
  • 机器学习之集成学习(ensemble learning)

    万次阅读 多人点赞 2018-11-15 15:01:10
    集成学习(Ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等。 集成学习的一般结构为:先产生一组“个体学习器”,再用某种策略将它们结合起来。集成中只...

    写本文的目的:

    1. 博主本人正在入门机器学习,期间对于每个算法都看了几遍书,写下这篇文章希望可以用自己理解的方式来记录,加深对算法的理解。
    2. 记下自己的理解,方便日后进行复习。

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

    集成学习的一般结构为:先产生一组“个体学习器”,再用某种策略将它们结合起来。集成中只包含同种类型的个体学习器,称为同质,当中的个体学习器亦称为“基学习器”,相应的算法称为“基学习算法”。集成中包含不同类型的个体学习器,称为“异质”,当中的个体学习器称为“组建学习器”。

    要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏,并且要有多样性,即个体学习器间具有差异。

    根据个体学习器的生成方式,目前的集成学习方法大致可以分为两类:

    1. 个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表为Boosting;
    2. 个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表为Bagging和随机森林。

    注:所谓串行生成的序列化方法就是除了训练第一个之外,其他的学习器学习都需要依赖于前面生成的学习的结果。

    一、Boosting

    Boosting是一簇可将弱学习器提升为强学习器的算法。其工作机制为:先从初始训练集训练出一个基学习器,再根据基学习器的表现对样本分布进行调整,使得先前的基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到实现指定的值T,或整个集成结果达到退出条件,然后将这些学习器进行加权结合。

    1、AdaBoost

    AdaBoost 是Boosting中的经典算法,其主要应用于二分类问题。

    Adaboost 算法采用调整样本权重的方式来对样本分布进行调整,即提高前一轮个体学习器错误分类的样本的权重,而降低那些正确分类的样本的权重,这样就能使得错误分类的样本可以受到更多的关注,从而在下一轮中可以正确分类,使得分类问题被一系列的弱分类器“分而治之”。对于组合方式,AdaBoost采用加权多数表决的方法,具体地,加大分类误差率小的若分类器的权值,减小分类误差率大的若分类器的权值,从而调整他们在表决中的作用。 其算法流程如下:


    【AdaBoost 算法流程】 

    有如下二分类数据集

                                 T=\left \{ (x_1,y_1),(x_1,y_1) ,...,(x_N,y_N) \right \}{\ \ \ }y_i\epsilon Y=\left \{ -1, 1 \right \}

    输入:数据集 T,弱学习算法

    输出:最终分类器G(x)

    (1) 初始化训练数据的权值分布

                                D_1=(w_{11},w_{12},...,w_{1N}),{\ \ w_{1i}=\frac{1}{N},{\ \ }i=1,2,...,N}

    (2) 对m=1,2,...,M  (弱分类器的个数,对每个弱分类器做如下):

    (a)使用具有权值分布D_m训练数据集学习,得到基本分类器

                                G_m(x):X\rightarrow \left \{ -1,1 \right \}

    (b) 计算G_m(x)在训练数据集上的分类误差率 (错误分类的样本的权重之和)

                                e_m=\sum _{i=1}^NP(G_m(x_i)\neq y_i)=\sum _{i=1}^Nw_{mi}I(G_m(x_i)\neq y_i)

    (c) 计算G_m(x)的系数 (弱分类器的权重, 反函数,误差率越大,则权重越小,反之越大)

                                \alpha _m=\frac{1}{2}log\frac{1-e_m}{e_m}

    (d) 更新训练数据集的权值分布

                                D_{m+1}=(w_{m+1,1},\ w_{m+1,2},\ ...\ ,\ w_{m+1,N})

                                w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i)),{\ \ }i=1,2,...,N

         其中,Z_m为规范化因子

                                Z_m=\sum_{i=1}^{N}w_{mi}exp(-\alpha_my_iG_m(x_i))

         它使得D_{m+1}成为一个概率分布。

    (3) 构建基本分类器的线性组合

                               f(x)=\sum_{m=1}^{M}\alpha_mG_m(x)

    得到最终的分类器

                                          G(x)=sing(f(x))=sign(\sum_{m=1}^M\alpha_mG_m(x))

                          注:

                                \sum_{i=1}^{N}w_{mi}=1

                               w_{m+1,i}=\left\{\begin{matrix} \frac{w_{mi}}{Z_m}e^{-\alpha_m}{\ \ ,\ \ }G_m(x_i)=y_i\\ \\ \frac{w_{mi}}{Z_m}e^{\alpha_m}{\ \ ,\ \ }G_m(x_i)\neq y_i \end{matrix}\right.


    例子:


    AdaBoost算法是模型为加法模型损失函数为指数函数学习算法为前向分步算法时的二分类算法。

    加法模型就是说强分类器由一系列弱分类器线性相加而成。

    考虑加法模型:

                                               f(x)=\sum_{m=1}^{M}\beta _mb(x;\gamma _m)

    其中b(x;\gamma _m)为基函数,\gamma _m为基函数的参数,\beta _m为系数。在给定训练数据及损失函数L(y,f(x))的条件下,学习加法模型f(x)称为经验风险最小化即损失函数极小化问题:

                                              \underset{\beta _m,\gamma _m}{min}\sum_{i=1}^{N}L(y_i,\sum_{m=1}^{M}\beta _mb(x_i;\gamma _m))

    通常该极小化问题是一个复杂的优化问题,常常采用前向分步算法(forward stagewise algorithm)求解该问题,其思路为:因为学习的是加法模型,如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度。具体的,每步只需优化如下的损失函数:

                                              \underset{\beta ,\gamma }{min}\sum_{i=1}^{N}L(y_i,\beta b(x_i;\gamma ))

    即每步只需要求解该基学习器的参数以及系数即可。


    AdaBoost的公式推导:

    假设经过m-1论迭代前向分步算法已经得到f_{m-1}(x):

                                            f_{m-1}(x)=f_{m-2}(x)+\alpha_{m-1}G_{m-1}(x)

                                                           =\alpha_{1}G_{1}(x)+...+\alpha_{m-1}G_{m-1}(x)

    在第m轮迭代得到\alpha _m,G_m(x)f_m(x).

                                                      f_m(x)=f_{m-1}(x)+\alpha_mG_m(x)

    目标是前向分步算法得到得到的\alpha _m,G_m(x)使得f_m(x)在训练数据集T上的指数损失函数最小,即

                                          (\alpha_m,G_m(x))=arg\ \underset{\alpha,G}{min}\sum_{i=1}^{N}exp[-y_i(f_{m-1}(x_i)+\alpha_mG_m(x))]

    又可以表示为

                                          (\alpha_m,G_m(x))=arg\ \underset{\alpha,G}{min}\sum_{i=1}^{N}\bar{w}_{mi}exp[-y_i\alpha_mG_m(x))]{\ \ \ \ }<1>

    其中,(每轮迭代的样本权重,后面解释)

                                                      \bar{w}_{mi}=exp(-y_if_{m-1}(x_i))

    因为\bar{w}_{mi}都不依赖于\alpha和G,所以与最小化无关。但其依赖于f_{m-1}(x),所以\bar{w}_{mi}随着每一轮迭代而发生改变。

    现在求\alpha_m^*G_m^*(x):

    (1)、求G_m^*(x)对任意\alpha > 0,使式<1>最小的G(x)由下式得到:

                                           G_m^*(x)=arg{\ }\underset{G}{min}\sum_{i=1}^{N}\bar{w}_{mi}I(y_i\neq G(x_i))

    其中\bar{w}_{mi}=exp(-y_if_{m-1}(x_i))。此分类器G_m^*(x)就是AdaBoost算法的基本分类器G_m(x),因为它是使得第m轮加权训练数据分类误差率最小的基本分类器

    (2)、求\alpha_m^*对损失函数L并把G_m(x)带入得:

                                           L=\sum_{i=1}^{N}\bar{w}_{mi}exp[-y_i\alpha_mG_m(x))]

                                              =\sum_{y_i=G_m(x_i)}\bar{w}_{mi}e^{-\alpha}+\sum_{y_i\neq G_m(x_i)}\bar{w}_{mi}e^{ \alpha}

    L对\alpha求导并令结果为0,即可得到使上式为最小值的\alpha

    由上面的推导可得,

                                              \alpha _m^*=\frac{1}{2}log\frac{1-e_m}{e_m}

    其中,e_m为分类误差率:

                                              e_m=\frac{\sum_{i=1}^{N}\bar{w}_{mi}I(y_i \neq G_m(x_i))}{\sum_{i=1}^{N}\bar{w}_{mi}}=\sum_{i=1}^{N}w_{mi}I(y_i \neq G_m(x_i))

    最后我们来看一下每一轮样本权值的更新,由

                                             f_m(x)=f_{m-1}(x)+\alpha_mG_m(x)

    以及

                                             \bar{w}_{mi}=exp(-y_if_{m-1}(x_i))

    有:

                                             \bar{w}_{m+1,i}=exp(-y_if_{m}(x_i))

                                                         =exp(-y_i(f_{m-1}(x_i)+\alpha_mG_m(x_i)))

                                                         =exp(-y_i(f_{m-1}(x_i))*exp(-y_i\alpha_mG_m(x_i))

                                                         =\bar{w}_{mi}exp(-y_i\alpha_mG_m(x_i))

    此处所得权值与算法流程中的权值只差规范化因子,所以等价。

    2、提升树(Boosting Tree)

    提升树是以分类树或回归树为基本分类器的提升方法

    提升树模型

    提升方法采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对于分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:

                                                         f_M(x)=\sum_{m=1}^{M}T(x;\Theta _m)

    其中,T(x;\Theta _m)表示决策树;\Theta _m为决策树的参数;M为决策树的个数。

    提升树算法

    提升树算法采用前向分步算法。首先确定初始提升树f_0(x)=0,第m步的模型为:

                                                       f_m(x)=f_{m-1}(x)+T_m(x;\Theta _m)

    其中,f_{m-1}(x)为当前模型,通过经验风险极小化确定下一棵决策树的参数\Theta _m

                                                      \hat\Theta _m=arg\ \underset{\Theta _m}{min}\sum_{i=1}^{N}L(y_i,f_{m-1}(x)+T_m(x;\Theta _m))

    提升树对不同问题有不同的提升树学习算法,其主要区别在于使用的损失函数不同。主要有用平方误差损失函数的回归问题,用指数损失函数的分类问题,以及一般损失函数的一般决策问题

           

    对于二分类问题,提升树算法只需将AdaBoost算法的基本分类器限定为二分类决策树即可,此时的提升树算法是AdaBoost算法的特例情况。

    回归问题的提升树

    把输入空间X划分为J个互不相交的区域R_1,R_2,...,R_J,并且在每个区域上确定的输出常量c_j,那么树可以表示为

                                                      T(x;\Theta )=\sum_{j=1}^{J}c_jI(x\epsilon R_j)

    其中,参数\Theta =\left \{ (R_1,c_2), (R_1,c_2),...,(R_J,c_J)\right \}表示树的区域划分和各个区域上的常数。J是回归树的复杂度即叶子结点个数。

    回归问题提升树使用以下前向分布算法:

                                                      f_0(x)=0

                                                      f_m(x)=f_{m-1}(x)+T_m(x;\Theta _m),\ \ m=1,2,...,M

                                                      f_M(x)=\sum_{i=1}^{M}T_m(x;\Theta _m),\ \ m=1,2,...,M

    在第m步,给定当前模型f_{m-1}(x),需要求解

                                                     \hat\Theta _m=arg\ \underset{\Theta _m}{min}\sum_{i=1}^{N}L(y_i,f_{m-1}(x)+T_m(x;\Theta _m))

    得到\hat{\Theta }_m,即第m棵树的参数。

    因为为回归问题,所以采用平方误差损失函数,所以

                              L(y_i,f_{m-1}(x)+T_m(x;\Theta _m))=[y-f_{m-1}(x)-T_m(x;\Theta _m)]^2=[r-T(x;\Theta _m)]^2

    由上式容易知道,为使损失函数最小,则需要

                                                               r-T(x;\Theta _m)=0\ \ \ \Rightarrow \ \ \ r=T(x;\Theta _m)

    即需要拟合r,其中,

                                                               r=y-f_{m-1}(x)

    当前模型拟合数据的残差(residual),所以对于回归问题的提升树算法来说,只需要简单的拟合当前模型的残差,即输入空间不变,只是对应的输出值( y )改变


    【回归问题的提升树算法】

    输入:训练数据集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \},\ \ x_i\epsilon X,\ \ y_i\epsilon R

    输出:提升树f_M(x)

    (1) 初始化f_0(x)=0

    (2)对m=1,2,...,M  (M棵树,对每个树进行遍历)

    (a) 计算残差:

                                                    r_{mi}=y_i-f_{m-1}(x_i),\ \ i=1,2,...,N

    (b) 拟合残差r_{mi}学习一个回归树,得到T(x;\Theta _m)

    (c) 更新f_m(x)=f_{m-1}(x)+T(x;\Theta m)

    (3) 得到回归问题的提升树

                                                    f_M(x)=\sum_{m=1}^{M}T(x;\Theta _m)


    3、梯度提升树(Gradient Boosting Decision Tree, GBDT)

    GBDT 是多棵树的输出预测值的累加,GBDT的树都是 回归树 而不是分类树

    梯度提升树是为了解决提升树在损失函数为一般损失函数时优化算法,称为梯度提升算法,其利用最速下降法的近似方法,关键是利用损失函数的负梯度在当前模型的值

                                                    -[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}

    作为回归问题提升树算法中残差的近似值,拟合一个回归树

    对于不同的Loss function,其梯度有不同的表达式:

    前三种对应的loss function如下图:其中Huber是低于某个值表现为square error,高于某个值则表现为线性


    【梯度提升树算法】

    输入:训练数据集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \},\ \ x_i\epsilon X,\ \ y_i\epsilon R,损失函数L(y,f(x))

    输出:提升树\hat{f}(x)

    (1) 初始化f_0(x)

                                                    f_0(x)=arg\ \underset{c}{min}\sum_{i=1}^{N}L(y_i,c)

    (2)对m=1,2,...,M  (M棵树,对每个树进行遍历)

    (a) 对i=1,2,...,N,计算

                                                    r_{mi}=-[\frac{\partial L(y,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)}

    (b) 对r_{mi}拟合一个回归树,得到第m棵树的叶结点区域R_{mj},\ \ j=1,2,...,J

    (c) 对j=1,2,...,J,计算

                                                     c_{mj}=arg\ \underset{c}{min}\sum_{x_i\epsilon R_{mj}}L(y_i,f_{m-1}(x_i)+c)

    (c) 更新

                                                     f_m(x)=f_{m-1}(x)+\sum_{j=1}^{J}c_{mj}I(x \in R_{mj})

    (3) 得到梯度提升回归树

                                                    \hat{f}(x)=f_M(x)=\sum_{m=1}^{M}\sum_{j=1}^{J}c_{mj}I(x \in R_{mj})

    所谓Gradient就是去拟合Loss function的梯度,将其作为新的弱回归树加入到总的算法中即可。


    例子:

    GBDT——二分类

    在梯度提升决策树GBDT中,通过定义不同的损失函数,可以完成不同的学习任务,二分类是机器学习中一类比较重要的分类算法,在二分类中,其损失函数为:

                                                  L(y,F)=log(1+exp(-2*yF)), y \in \left \{ -1,1\right \}
    套用上面介绍的GB框架,得到下述的二分类GBDT的算法:

                       

    二、Bagging与随机森林

    1、Bagging

    bagging 是一种个体学习器之间不存在强依赖关系、可同时生成的并行式集成学习方法。

    bagging 基于自助采样法(bootstrap sampling),也叫有放回重采样法.即给定包含m个样本的数据集,先随机从样本中取出一个样本放入采样集中,再把该样本返回初始数据集,使得下次采样时该样本仍可以被选中,这样,经过m次随机采样操作,就可以得到包含m个样本的采样集,初始数据集中有的样本多次出现,有的则未出现,其中,初始训练集中约有63.2%的样本出现在采样集中

    照上面的方式进行T次操作,采样出T个含有m个训练集的采样集,然后基于每个采样集训练出T个基学习器,再将这些基学习器进行结合,即可得到集成学习器。在对输出进行预测时,Bagging通常对分类进行简单投票法,对回归使用简单平均法。若出现形同,则任选其一。



    Bagging的优点:

    1. 训练一个 Bagging集成与直接使用基分类器算法训练一个学习器的复杂度同阶,说明Bagging是一个高效的集成学习算法。
    2. 此外,与标准的AdaBoost算法只适用于二分类问题不同,Bagging能不经过修改用于多分类、回归等任务
    3. 由于每个基学习器只使用63.2%的数据,所以剩下36.8%的数据可以用来做验证集来对泛化性能进行“包外估计”

    偏差-方差的角度来说,boosting主要关注减小偏差,而Bagging主要关注降低方差,也就说明boosting在弱学习器上表现更好,而降低方差可以减小过拟合的风险,所以Bagging通常在强分类和复杂模型上表现得很好。举个例子:bagging在不减枝决策树、神经网络等易受样本扰动的学习器上效果更为明显。

    2、随机森林(Random Forest,简称RF)

    随机森林是bagging的扩展体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体地,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性,而在RF上,对基决策树的每个结点,先从该结点的属性集中随机选择其中的k个属性组成属性集,然后从该属性集中选择最优的划分属性,一般情况下,推荐k=log_2\ d

    随机森林的优势

    1. 能够处理很高维度的数据,并且不用做特征选择;
    2. 在训练完成后,可以给出哪些属性比较重要;
    3. 容易做成并行化方法,速度快;
    4. 可以进行可视化展示,便于分析。

    随机森林和Bagging比较

    两者的收敛性相似,但RF的起始性能相对较差,特别只有一个基学习器时。随着基学习器数量的增加,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率常优于Bagging,因为Bagging是“确定型”决策树,而随机森林使用“随机型”决策树。

    三、结合策略

    通过上文,我们对集成学习算法也有了大概的了解,简单来说,集成算法就是训练一堆基学习器,然后通过某种策略把各个基学习器的结果进行合成,从而得到集成学习器的结果。下面我们就来认识一下常用的结合策略:

    1、平均法(Averaging)

    对数值型(连续)输出h_i(x)\in R,最常见的结合策略为平均法。

    ---简单平均法(simple averaging)

                                         H(x)=\frac{1}{T}\sum_{i=1}^{T}h_i(x)

    ---加权平均法(weighted averaging)

                                        H(x)=\sum_{i=1}^{T}w_ih_i(x)

        其中w_i为权重,通常w_i要求:

                                        w_i\geq 0,\ \ \sum_{i=1}^{T}w_i=1

    注:加权平均法的权重一般从训练数据中学习而得,对规模比较大额集成来说,要学习的权重比较多,较容易导致过拟合,因此加权平均法不一定优于简单平均法。一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法

    2、投票法(Voting)

    对分类来说,学习器h_i(x)将从类别集合中预测出一个类别标记,最常用的是投票法。

    ---绝对多数投票法(majority voting)

                                    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_j^k(x);\ \ \ \ \\ \\ reject\ ,\ \ \ \ otherwise\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \end{matrix}\right.

        即如某标记的投票过半数,则预计为该标记;否则拒绝预测。

    ---相对多数投票法(plurality voting)

                                  H(x)=c_{\underset{j}{arg\ max}\sum_{i=1}^{T}h_i^j(x)}

        即预测为得票最多的标记,若同时出现多个票数最多,则任选其一。

    ---加权投票法(weighted voting)

                                 H(x)=c_{\underset{j}{arg\ max}\sum_{i=1}^{T}w_ih_i^j(x)}

       与加权平均法类似。

    3、学习法

    当数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来结合。其中典型代表为Stacking,在stacking中我们把个体学习器称为初级学习器,用于结合的学习器称为次学习器或者元学习器。

    注:Stacking本身就是一种出名的集成学习方法,且有不少集成学习方法可以认为是其变体或者特例,stacking也可以认是一种结合策略,此处同周志华的西瓜书一样,把其看成一种结合策略。

    stacking的主要思想为:先从初始数据集训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。生成的该新数据中,初级学习器的输出被当做样例输入特征,而初始样本的标记仍被当做样例标记也就是说,假设初级学习器有M个,那么对于一个原始数据集中的样本(x; y),通过这M个初级学习器有M个输出{h1(x),h2(x),...,hM(x)},把{h1(x),h2(x),...,hM(x); y}作为新数据的一个样本,所以一个初级学习器的输出作为新数据集中对应样本的一个特征,而其标记为原始数据中该样本的标记。算法描述如下图(图来自周志华《机器学习》),假定初级学习器使用不同的算法,如LR、RF、SVM、GBDT等。

    在训练阶段,次级学习器(用来结合结果的学习器)的训练数据集是利用初级学习器来产生的,若直接用初级学习器的训练集来产生训练数据集,则很有可能会出现过拟合,也就是过拟合风险较大;所以一般在使用Stacking时,采用交叉验证或留一法的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。下面以k=5折交叉验证作为例子:

    首先把整个数据集分成量训练集(Training Data)和测试集(Test Data)两部分,上图最左边,然后把训练数据集进行k折,此处k=5,即把训练数据分成5份,在进行第j折时,使用其余的四份进行初级学习器的训练,得到一个初级学习器,并用该初始学习器把该折(即留下用来验证的)数据进行预测,进行完所有折数,把预测输出作为新数据集的特征,即次级学习器的训练数据集,其中标记没变,用该新数据集训练次级学习器,从而得到一个完整的stacking。最后用原始数据的测试集来对该Stacking进行测试评估

    次级学习器的输入属性表示和次级学习算法的选择对Stacking集成的泛化性能有很大影响。有研究表明,将初级学习器的输出类概率最为次级学习器的输入属性,用多响应线性回归(Multi-reponse Linear Regression,简称MLR)作为次级学习器算法效果更好,在MLR中使用不同的属性集更佳

    注:MLR是基于线性回归的分类器,其对每个类分别进行线性回归,属于该类的训练样例所对应的输出为1,其他类置0;测试示例将被分给输出值最大的类。

    四、总结

    该文主要写了关于集成学习的一些常用算法,当然最牛逼的XGBoost和lightGBM都没有开始学到,都说想成为一名优秀的机器学习算法er那么肯定绕不过该两个算法,不过在此先不谈,而是来总结一下该文的内容。

    一开始先介绍了何为集成学习,然后将了Boosting算法和bagging算法。boosting算法与Bagging算法的主要区别在于:

    1. Boosting算法中个体学习器间存在强依赖关系、必须串行生成的序列化方法,即下个学习器要依赖删一个学习器进行学习,不能进行并行化。
    2. Bagging算法个体学习器间不存在强依赖关系、可同时生成的并行化方法,即可以并行化。

    Boosting算法的代表有AdaBoost,Boosting Tree和GBDT。boosting是一种模型加法模型、学习方式为前向分步算法的算法,而几种代表的不同在于选择的损失函数不同。

    标准的AdaBoost算法用于二分类问题,损失函数为指数函数L=exp(-y_if_m(x_i)),其主要思想:通过提高错分类样本的权重使得该样本在下次可以得到更大的关注,从而可以正确分类,降低正确分类的样本的权重,最后在结合的时候,对分类误差率小的个体学习器设置大的权重,对分类误差率大的个体学习器设置小的权重。

    Boosting Tree(提升树)是模型为加法模型,学习算法为前向分步算法,个体学习器为决策树的一种集成方法。当Boosting Tree在解决回归问题时,使用CART作为个体学习器,采用平方误差函数作为损失函数,学习过程为不断拟合当前模型的残差,知道满足停止条件的过程。

    GBDT与Boosting Tree在解决回顾问题时类似,只是把损失函数的负梯度最为拟合的目标来进行学习。

    Bagging方法主要通过又放回抽取样本的方式进行数据集的产生来训练个体学习器,对于一个个体学习器的训练样本,其数目上与原始训练样本数一致,只是有些重复,有些没有出现,出现的样本约为原始样本的63.2%,剩余部分可以用来进行做包外估计。

    Random Forest(随机森林)是Bagging的变体,其不同的地方在于在生成个体学习器的过程中不仅有样本扰动,还加入了属性扰动。

    最后,讲了结合策略,有平均法、投票法和学习法,其中学习法的代表为Stacking方法,Stacking方法也是一种集成方法,其主要思想为:先从初始数据集训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。生成的该新数据中,初级学习器的输出被当做样例输入特征,而初始样本的标记仍被当做样例标记

    五、参考:

    周志华 ------《机器学习》

    李航    ------ 《统计学习方法》

    李锐    ------ 《机器学习实战》

    zhiyong_will的博客:https://blog.csdn.net/google19890102/article/details/51746402

    展开全文
  • 什么是集成学习

    千次阅读 2018-05-30 20:40:55
    集成学习则可以通过多个学习器相结合,来获得比单一学习器更优越的泛化性能。 集成学习是指通过构建并结合多个学习器来完成学习任务的分类系统,根据个体学习器是否为同一类可以分为同质集成和异质集成。 集成学习...

    在监督学习算法中,我们希望训练得到的模型是一个各方面都稳定表现良好的模型,但是实际情况中却往往得到的是在某方面有偏好的模型。集成学习则可以通过多个学习器相结合,来获得比单一学习器更优越的泛化性能。
    集成学习是指通过构建并结合多个学习器来完成学习任务的分类系统,根据个体学习器是否为同一类可以分为同质集成异质集成

    集成学习获得较好泛化性能的原理
    一般集成学习会通过重采样获得一定数量的样本,然后训练多个弱学习器(分类精度稍大于50%),采用投票法,即“少数服从多数”原则来选择分类结果,当少数学习器出现错误时,也可以通过多数学习器来纠正结果。

    举个简单的例子:
    这里写图片描述
    从图片中可以看出:h1h2h3三个学习器集成在a图情况下可以得到较好泛化性能,在c图情况下性能还不如单个学习器。我们可以得出一个重要的结论,集成学习强度基学习器具有“好而不同”的特性,但是这个特性却是矛盾的,因为一个好的学习肯定泛化性能好,那么本身的“多样性”就较差,所以如何产生一组性能较好而且偏好不同的基学习器就是集成学习方法的核心。

    集成学习分类
    目前根据个体学习器的生成方式,集成学习可以分为两大类:
    1)个体学习器之间存在较强的依赖性,必须串行生成的序列化方法:boosting类算法;
    2)个体学习器之间不存在强依赖关系,可以并行生成学习器:bagging和随机森林

    展开全文
  • 集成学习(Ensemble Learning)

    万次阅读 2018-10-05 08:32:10
    本博客是针对周志华教授所著《机器学习》的“第8章 集成学习”部分内容的学习笔记。个体与集成 Boosting Bagging与随机森林 Bagging 随机森林 结合策略 平均法 投票法 学习法个体与集成集成学习,顾名思义,通过将多...
  • 集成学习(Ensemble Learning)综述

    千次阅读 2018-03-19 10:16:46
    集成学习简单理解就是指采用多个分类器对数据集进行预测,从而提高整体分类器的泛化能力。 集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个...
  • 集成学习

    千次阅读 2019-04-06 00:01:20
    集成学习方法的一般过程描述 基础集成技术 集成学习方法 Bagging Bagging算法流程 Boosting Stacking Blending 优点: 缺点: 随机森林 算法步骤: 影响随机森林分类性能的主要因素: 随机森林优缺点:...
  • 集成学习---综述

    2019-06-11 11:31:10
    集成学习,顾名思义,通过将多个单个学习器集成/组合在一起,使它们共同完成学习任务,有时也被称为“多分类器系统(multi-classifier system)”、基于委员会的学习(Committee-based learning)。 这里的【学习器...
  • 集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类...
  • 模拟CMOS集成电路设计 学习笔记(一)

    千次阅读 多人点赞 2017-06-11 16:14:42
    第二章(一) 感谢拉扎维大神! 图片来自网络+book
  • EL:集成学习(Ensemble Learning)的概念讲解、算法分类、问题应用、关键步骤、代码实现等相关配图详细攻略 目录 集成学习Ensemble Learning 1、集成学习中弱分类器选择 2、多个弱分类区如何组合 EL的解决...
  • SpringBoot学习目录

    万次阅读 多人点赞 2019-11-23 09:38:26
    SpringBoot目录 SpringBoot 入门篇 SpringBoot Web篇 SpringBoot Redis 篇 SpringBoot Mybatis篇 ...SpringBoot集成邮件服务 SpringBoot 集成MongoDB SpringBoot 集成Shiro SpringBoot 文件上传 Spring...
  • 一、集成学习方法的思想  前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体智慧”使得问题被很容易解决,那么问题来了...
  • 本文是基于《kaggle比赛集成指南》来进行总结的概述什么是集成学习,以及目前较为常用的技术。这里主讲的集成学习技术用于分类任务,关于回归和预测这块不太了解,读者可自行查询相应博客或者论文。 1 什么是...
  • 备考系统集成项目管理工程师经验

    万次阅读 多人点赞 2020-08-10 00:24:40
    弹指间,还有一个多月又要考试了,可是回头看看自己备考的怎样了,用一句话来形容,一脸的无奈。每当深夜时,身边的人都熟睡了,我还想在学会。可是又敌不过睡意的诱惑,就这样日复一日,我还是什么都没学会。...
  • 讲解软考-系统集成项目管理工程师考试学习方法、答题技巧和复习计划时间安排,帮助考生缩小复习范围,明确学习重点,保证快速顺利通过考试。课程内容包括:新版教材有多大变化、上午选择题如何轻松过关、下午案例...
  • 集成学习法之bagging方法和boosting方法
  • 集成学习算法总结----Boosting和Bagging

    万次阅读 2016-07-05 21:02:51
    1、集成学习概述1.1 集成学习概述集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高。目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表...
  • 随机森林 优点 具有极高的准确率 随机性的引入,使得随机森林不容易过拟合,有很好的抗噪声能力,对异常点离群点不敏感 能处理很高维度的数据,并且不用做特征选择 既能处理离散型数据,也能处理连续型数据,...
  • 集成算法(Bagging,随机森林)

    千次阅读 2020-05-11 23:54:54
    引言(关于集成学习) 集成算法包括很多种包括Bagging,随机森林,Boosting 以及其他更加高效的集成算法。在这篇博客上只介绍Bagging算法及随机森林,Boosting提升算法及其他高效的算法在下一篇详细讲解。 集成算法...
1 2 3 4 5 ... 20
收藏数 390,038
精华内容 156,015
关键字:

集成学习