精华内容
下载资源
问答
  • 本书采用系统集成方法,系统地阐述IP网络的设计方法以及实施网络工程的过程管理方法。本书以设计“具有几台PC的小型局域网”,到“具有几十台到几百台PC的中型局域网”,到“覆盖一个楼宇的网络”,到“覆盖几个楼宇...
  • 机器学习十大算法——集成方法

    千次阅读 2019-07-26 14:13:55
    文章目录什么是集成方法BoostingBagging随机森林集成方法的结合策略平均法投票法学习法集成放法的多样性误差-分歧分解多样性度量多样性增强集成学习有哪些基本步骤?集成方法常用的基分类器是什么? 机器学习十大...


    机器学习十大算法——集成方法

    什么是集成方法

    集成方法是先构建一组分类器,然后用各个分类器带权重的投票来预测新数据的算法。最初的集成方法是贝叶斯平均,但最新的算法包括误差纠正输出编码和提升算法。

    ​​​​在这里插入图片描述

    那么集成模型的原理是什么,以及它为什么比独立模型的效果好呢?

    它们消除了偏置的影响:比如把民主党的问卷和共和党的问卷混合,从中得到的将是一个不伦不类的偏中立的信息。

    它们能减小预测的方差:多个模型聚合后的预测结果比单一模型的预测结果更稳定。在金融界,这被称为是多样化 —— 多个股票的混合产品波动总是远小于单个股票的波动。这也解释了为何增加训练数据,模型的效果会变得更好。

    它们不容易产生过拟合:如果单个模型不会产生过拟合,那么将每个模型的预测结果简单地组合(取均值、加权平均、逻辑回归),没有理由产生过拟合。

    集成学习(ensemble learning)更多的是一种组合策略,将多个机器学习模型结合起来,可以称为元算法(meta-algorithm)。

    面对一个机器学习问题,通常有两种策略,一种是研发人员尝试各种模型,选择其中表现最好的模型做重点调参优化。这种策略类似于奥运会比赛,通过强强竞争来选拔最优的运动员,并逐步提高成绩。另一种重要的策略是集各家之长,如同贤明的君主广泛的听取众多谋臣的建议,然后综合考虑,得到最终决策。后一种策略的核心,是将多个分类器的结果集成为一个统一的决策。使用这类策略的机器学习方法统称为集成学习。其中的每个单独的分类器称为基分类器。

    集成学习可以大致分为两类:

    Boosting:这类方法训练基分类器时采用串行的方法,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。
    Bagging:这类方法基分类器之间无强依赖,可以并行。其中很著名的算法之一是基于决策树基分类器的随机森林(Random Forest)。为了让基分类器之间互相独立,将训练集分为若干子集(当训练样本数量较少时,子集之间可能有交叠)。

    基分类器有时又称为弱分类器,因为基分类器的错误率要大于集成后的分类器。基分类器的错误,是偏差(Bias)和方差(Variance)两种错误之和。偏差主要是由于分类器的表达能力有限导致的系统性错误,表现在训练误差不能收敛到一个比较小的值。方差则是由于分类器对于样本分布过于敏感,导致在训练样本数较少时,产生过拟合。

    Boosting方法通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。Bagging方法则是采取分而治之的策略,通过对训练样本多次采样,并分别训练出多个不同模型,然后做综合,来减小集成分类器的方差。假设每个基分类器出错的概率都是相互独立的,在某个测试样本上,用简单多数的投票方法来集成结果,超过半数基分类器都出错的概率会小于每个单独的基分类器的出错概率。一个Bagging的简单示例如下图:
    在这里插入图片描述

    Boosting

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

    Boosting算法的典型代表就是Adaboost算法,下图是Adaboost算法步骤。

    在这里插入图片描述
    Boosting 算法要求基学习器能对特定的数据分布进行学习,这可通过"重赋权法" (re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重.对无法接受带权样本的基学习算法,则可通过"重采样法" (re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练.

    Bagging

    Bagging [Breiman, 1996a] 是并行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。初始训练集中约有63.2%的样本出现在来样集中。

    在这里插入图片描述
    与标准AdaBoost 只适用于二分类任务不间, Bagging 能不经修改地用于多分类、回归等任务.

    随机森林

    随机森林(Random Forest ,简称RF) 是Bagging的一个扩展变体.RF在以决策树为基学习器构建Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择.具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d 个属性)中选择一个最优属性;而在RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

    随机森林简单、容易实现、计算开销小,令人惊奇的是, 它在很多现实任务中展现出强大的性能,被誉为"代表集成学习技术水平的方法"可以看出,随机森林对Bagging 只做了小改动, 但与Bagging 中基学习器的"多样性"仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.

    随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中, Bagging使用的是" 确定型" 决策树?在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的" 随机型"决策树则只需考察-个属性子集。

    集成方法的结合策略

    平均法

    平均法又分为简单平均法和加权平均法。

    简单平均法就是求均值。

    加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或存在噪声,这将使得学出的权重不完全可靠.尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合.因此,实验和应用均显示出,加权平均法未必一起优于简单平均法。一般而言,在个体学习器性能相差较大时宜使用加权平均
    法,而在个体学习器性能相近时宜使用简单平均法。

    投票法

    投票法常用的有 绝对多数投票法,相对多数投票法和 加权投票法。

    在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为"多数投票法"

    学习法

    当训练数据很多时,一种更为强大的结合策略是使用"学习法",即通过Stacking 本身是一种著另一个学习器来进行结合. Stacking 是学习法的典型代表.这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)。

    stacking算法描述如下:
    在这里插入图片描述

    在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;因此,一般是通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本.

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

    贝叶斯模型平均(Bayes Model Averaging,简称BMA)基于后验概率来为不同模型赋予权重7 可视为加权平均法的一种特殊实现. 对Stacking 和BMA 进行了比较.理论上来说?若数据生成模型怡在当前考虑的模型中,且数据噪声很少,则BMA 不差于Stacking; 然而,在现实应用中无法确保数据生成模型一定在当前考虑的模型中,甚至可能难以用当前考虑的模型来进行近似,因此, Stacking 通常优于BMA,因为其鲁棒性比BMA 更好,而且BMA 对模型近似误差非常敏感。

    集成放法的多样性

    误差-分歧分解

    个体学习器准确性越高、多样性越大,则集成越好.上面这个分析首先由[Krogh and Vedelsby, 1995] 给出,称为"误差一分歧分解" (error-ambiguity decomposition).

    多样性度量

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

    在这里插入图片描述
    不合度量 = (b+c)/m, 值越大,则多样性越大

    在这里插入图片描述

    在这里插入图片描述

    多样性增强

    常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。

    集成学习有哪些基本步骤?

    集成学习一般可分为以下三个步骤:

    1. 找到误差互相独立的基分类器;
    2. 训练基分类器;
    3. 合并基分类器的结果。

    合并基分类器的方法有voting和stacking两种。前者是用投票的方式,将获得最多选票的结果作为最终的结果。后者是用串行的方式,把前一个基分类器的结果输出到下一个分类器,将所有基分类器的输出结果相加作为最终的输出。

    以Adaboost为例,它基分类器的训练和合并的基本步骤如下:
    在这里插入图片描述

    合并基分类器

    在这里插入图片描述

    另一个例子是GBDT(Gradient Boosted Decision Tree):

    GBDT的基本思想是,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

    我们以一个视频网站的用户为例,为了将广告匹配到指定年龄性别的用户,视频网站需要对每个用户的性别/年龄做出预测。在这个问题中,每个样本是一个已知性别/年龄的用户,而特征则包括这个人访问的时长、时段、观看的视频的类型等。

    例如用户A的真实年龄是25岁,但第一棵决策树的预测年龄是22岁,差了3岁,即残差为3。那么在第二棵树里我们把A的年龄设为3岁去学习,如果第二棵树能把A分到3岁的叶子节点,那两棵树的结果相加就可以得到A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在-2岁的残差,第三棵树里A的年龄就变成-2岁,继续学。这里使用残差继续学习,就是Gradient Boosting的意义。

    集成方法常用的基分类器是什么?

    常用的基分类器是什么?可否将随机森林中的基分类器,由决策树替换为线性分类器或K-近邻?请解释为什么?

    最常用的基分类器是决策树,这是因为:

    1. 决策树可以较为方便的将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。
    2. 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

    随机森林属于Bagging类的集成学习。Bagging的主要好处是集成后的分类器的方差,比基分类器的方差小。Bagging所采用的基分类器,最好是本身对样本分布较为敏感的(即所谓unstable分类器)。这样Bagging才能有用武之地。线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大,所以以它们为基分类器使用Bagging并不能在原有基分类器的基础上,获得更好的表现。甚至可能因为Bagging的采样,而导致他们在训练中更难收敛,而增大了集成分类器的偏差。

    展开全文
  • 集成学习(Ensemble Learning)有时也被笼统地称作提升(Boosting)方法,广泛用于分类和回归任务。它最初的思想很简单:使用一些(不同的)方法改变原始训练样本的分布,从而构建多个不同的分类器,并将这些分类器...
  • 基于决策树的各种集成方法的总结1.NP问题与NPC问题2.决策树3.集成方法4.随机森林5.Adaboost与GBDT算法5.1Adaboost5.2GBDT5.3总结6.过拟合问题6.1产生过拟合的原因6.2解决方法(这里只针对决策树来考虑)几种避免决策...

    1.NP问题与NPC问题

    NP问题: 多项式复杂程度的非确定性问题
    NPC问题: 多项式时间可解的NP问题

    2.决策树

    决策树模型是一种树形结构模型, 由结点和有向边构成. 通过决策树模型, 能够对实例进行分类. 决策树本质上是从训练数据中归纳出一组分类规则, 与训练数据集不想矛盾的决策树可能有多个, 或者没有. 我们需要找到一个与训练数据矛盾较小的决策树, 同时具有很好的泛化能力. 从所有可能的决策树中选取最优决策树是NPC问题, 所以现实中决策树学习算法通常采用启发式方法, 近似求解这一优化问题.
    决策树学习算法主要包括: 特征选择、决策树生成和决策树剪枝三个过程.决策树的常用算法有: ID3算法、C4.5算法、CART算法. ID3算法与C4.5算法分别通过信息增益和信息增益比进行特征选择. CART算法即为分类和回归树算法. 对于回归问题, 基于平方误差最小化准则; 对于分类问题, 基于基尼指数最小化准则. 对于决策树算法的细节, 可以参考统计学习方法(李航).

    3.集成方法

    将多个基学习器通过一定的策略结合生成强学习器用来实现学习任务的方法叫做集成学习. 集 成 学 习 = 基 学 习 器 + 结 合 策 略 集成学习=基学习器+结合策略 =+
    集成学习主要分为: Bagging和Boosting. 前者为并行式集成学习方法, 代表算法有: 随机森林(RF算法). 后者为串行式集成学习方法, 主要有: Adaboost, GBDT, XGboost, LightGBM等.

    4.随机森林

    随机森林算法是一种并行式集成学习方法. 相较于决策树而言, 随机森林在决策树的训练中引入随机属性的选择. 随机性主要体现在以下两个方面:
    1)对原数据集采用bootstrap sample method(自助法采样,又放回). m个样本数据集, m次随机采样得到采样集, 如此操作N次, 则有N个含m训练样本的采样集. 这样可以训练N个基学习器, 再结合得到最终学习器.
    2)对于特征的选择引入随机性. 从K个特征中随机选择k个特征. 每次分裂时, 从k个中选取最优的.
    引入的随机性, 使得RF的泛化能力提升, 不易陷入过拟合, 且抗噪能力强.
    注: RF分类效果(error rate)与两个因素有关

    • 任意两棵树的相关性: 相关性越大, 误差越大
    • 每棵树的分类能力: 分类能力越大, 误差越小

    关键点: 如何选取k值?
    减小特征选择个数k, 树的分类能力和任两棵树相关性都会降低.

    袋外误差率(out-of-bag error)
    Bootstrap每次约有 1 3 \frac{1}{3} 31的样本不会出现在采集样本集合中, 称这部分数据为oob(out-of-bag).利用oob error估计作为泛化误差估计的一个组成部分. 利用袋外数据测试已经生成的随机森林.

    5.Adaboost与GBDT算法

    5.1Adaboost

    加 法 模 型 + 指 数 损 失 函 数 + 前 向 分 布 算 法 加法模型+指数损失函数+前向分布算法 ++
    方法: 在迭代过程中, 提高前一轮中分类错误样本的权值, 降低前一轮分类正确样本的权值, 采用加权多数表决的方法. 分类错误率低的分类器具有更大的权值, 反之则更小.

    5.2GBDT

    加 法 模 型 + 负 梯 度 拟 合 + C A R T 算 法 + 前 向 分 布 算 法 加法模型+负梯度拟合+CART算法+前向分布算法 ++CART+
    负梯度拟合:利用损失函数的负梯度来拟合残差的近似值.

    5.3总结

    Adaboost是对每个弱学习器分配权值生成的强学习器.
    GBDT是将多个学习器叠加起来, 每次利用残差(或负梯度)来生成弱学习器, 再将多个弱学习器相加生成强学习器.

    6.过拟合问题

    6.1产生过拟合的原因

    1. 建模样本抽取错误
    • 样本数量太少
    • 抽取方法错误
    • 抽样是没有足够正确考虑业务场景或特点
    1. 参数太多, 模型复杂度高, 泛化能力弱
    2. 建模时的"逻辑假设"到模型应用时已经不能成立
    3. 样本里噪声数据干扰过大(生成的模型在未知正常数据预测效果不好)
    4. 决策树模型能够完美拟合训练数据, 但对真实数据效果未必很好
    5. 神经网络模型

    6.2解决方法(这里只针对决策树来考虑)

    对于随机森林, 由于引入特征划分的随机, 有效提高了树的泛化能力, 不需要进行剪枝.正常生成的决策树由于能够完美拟合训练数据, 需要进行剪枝操作来提高泛化能力. 集成方法是将多个弱学习器通过一定策略结合得到强学习器, 相比单一模型具有更好的泛化能力, 并非学习器越多, 最终得到的强学习器效果越好. 对于Adaboost和GBDT算法而言, 可以通过设置一个阈值 ϵ \epsilon ϵ来使其提前终止(这也说明这两种算法弱学习器的个数是可定的), 这在一定程度上可以提高泛化能力.
    RF中决策树的个数是超参, 树越多, 学习效果未必越好. 同时树越多, 计算量也会越大, 但由于是并行化集成方法, RF还是比Boosting方法要快, 但比单个决策树要慢的多.

    几种避免决策树中过拟合的方法:

    1)及早停止增长树法, 但无法很好把控何时停止.[先剪枝]
    2)剪枝-[后剪枝]

    Adaboost算法的正则化:

    为了防止Adaboost 过拟合, 通常会加入正则化, 这里可以理解为学习率 f k ( x ) = f k − 1 ( x ) + α k G k ( x ) f_k(x)=f_{k-1}(x)+\alpha_k G_k(x) fk(x)=fk1(x)+αkGk(x)加入正则化项 f k ( x ) = f k − 1 ( x ) + ν α k G k ( x ) , 0 &lt; ν &lt; 1 f_k(x)=f_{k-1}(x)+\nu\alpha_k G_k(x),0&lt;\nu&lt;1 fk(x)=fk1(x)+ναkGk(x),0<ν<1上式表明, 要达到同样训练效果, 加入正则化的弱学习器迭代次数增加. 即弱学习器数量增加, 从而提高模型的泛化能力.
    注:边界理论: 泛化误差收敛于某个上界, 训练集的边界越大, 泛化误差越小.

    GDBT算法的解决过拟合的方法:

    1)加入与Adaboost算法类似的正则化项;
    2)子采样方法(subsample), 选取一部分样本去做GBDT决策树拟合(这样牺牲精度,增加了偏差);
    3)剪枝.

    7. RF、Adaboost、GBDT三种方法的优缺点对比

    7.1RF算法的优缺点

    RF算法特点: 不用做特征选择, 不用剪枝,采用boostrap sample.

    优点

    • RF是并行化方法, 训练速度快
    • 实现简单
    • 训练出模型的方差小,泛化能力强
    • 对部分缺失值、异常值不敏感

    缺点

    • 对于噪声过大的数据, 很容易产生过拟合现象,
    • 由于是对特征随机选取, 取值划分较多的特征容易产生更大影响.
      (随机森林就像一个黑盒, 无法控制模型内部的运行, 只能在不同参数和随机种子之间尝试)

    7.2AdaBoost算法的优缺点

    优点

    • 分类精度高
    • AdaBoost算法提供的是框架, 可以用各种方法构建基学习器.
    • AdaBoost算法不需要预先知道弱分类器的错误率上限, 由于AdaBoost的训练特点能够自适应调整假定的错误率, 执行效率高.

    缺点

    • 易受噪声的干扰, AdaBoost算法使得难于分类样本的权值呈指数增长, 训练会过于偏向这类困难样本, 若其为噪声, 则训练出的分类器必然受到影响.
    • 训练时间长, 弱分类器训练时间长, 而且要训练多个

    7.3GBDT算法的优缺点

    优点

    • 能够灵活处理各种类型的数据
    • 在相对较少的调参情况下, 预测准确率较高

    缺点

    • 串行化方法, 难以并行训练数据, 计算开销大.
    展开全文
  • [深度学习] 模型集成方法

    千次阅读 2018-05-16 11:47:57
    模型集成方法 集成学习(ensemble learning)是机器学习中一类学习算法,值训练多个学习器并将它们组合起来使用的方法。这类算法通常在实践中会取得比单个学习器更好的预测结果。 数据层面的集成方法 在训练...

    模型集成方法

    集成学习(ensemble learning)是机器学习中一类学习算法,值训练多个学习器并将它们组合起来使用的方法。这类算法通常在实践中会取得比单个学习器更好的预测结果。

    数据层面的集成方法

    在训练阶段的数据扩充在测试阶段仍然使用。 诸如图像多尺度, 随机扣取等。以随机扣取为例, 对某张测试图片可得到n 张随机扣取图像,测试阶段只需要用训练好的深度网络模型对n张图分别做预测, 之后将预测的各类置信度平均作为该测试图像最终预测结果即可。

    简易集成法

    简易集成法是Liu 等人提出的针对不平衡样本问题的一种集成学习解决方案, 具体来说,简易集成法对于样本较多的类采取降采样,每次采样数根据样本数目最少的类别而定,这样,每类取到的样本数可保持均等。 采样结束后, 针对每次采样得到的子数据集训练模型, 如此采样, 训练,反复多次。最后, 对测试数据的预测则根据训练得到若干模型的结果取平均值或投票得出。 总结, 简易集成法在模型集成的同时,还能缓解数据不平衡带来的问题。

    模型层面的集成方法

    单模型集成

    多层特征融合

    多层特征融合是针对单模型的一种模型层面的集成方法。 由于深度卷积神经网络特征具有层次性的特点, 不同层特征富含的语义信息可以相互补充, 在图像语义分割, 细粒度图像检索,基于视频的表象性格分析等任务中常见的多层特征融合策略的使用。一般的,多层特征融合操作时可将不同层网络特征级联。而对于特征融合应选取哪些网络层,一个实践经验是:最好使用靠近目标函数的几层卷积特征。因为越深层特征包含的高层语义越强,分辨力也会越强。相反, 网络较浅层的特征较普使, 用于特征融合可能起不到作用,或者甚至会起到相反作用。

    网络快照集成法 (snapshot ensemble)

    深度神经网络模型复杂的解空间存在非常多的局部最优解, 但经典的随机梯度下降方法只能让网络模型收敛到其中一个局部最优解。 网络快照便利用了网络解空间中这些局部最优解来对单个网络做模型集成。 通过循环调整网络的学习率可使网络依次收敛到不同的局部最优解。
    这里写图片描述
    最左侧图为传统SGD法, 中间为快照集成法的收敛示意图。 右图为两方法在CIFAR-10数据集上的收敛曲线对比。

    具体而言, 网络快照法是将学习率 η η 设置为随模型迭代轮数 t t (iteration,即一次批处理随机梯度下降称为一个迭代轮数)改变的函数,即:

    η(t)=η02(cos(πmod(t1,[T/M])[T/M])+1)

    其中, η0 η 0 为初始学习率, 一般设置为0.1, 0.2 。t 为模型迭代轮数(即mini-batch批处理训练次数)。T 为模型总的批处理训练次数。 M为学习率“循环退火”的次数。 对应了模型将收敛到的局部最优解的个数。 式子用cos 的循环性来更新学习率, 将学习率从0.1 随 t 的增长逐渐减缓到0, 之后学习率重新放大而跳出局部最优解。自此开始下一个循环,此循环结束可以收敛到新的局部最优解, 如此循环往复……直到M个循环结束。 上面用余弦函数循环更新网络参数,这一过程称之为“循环余弦退火”过程。

    当经过循环余弦退火对学习率的调整之后, 每个循环结束可使模型收敛到一个不同的局部最优解, 若将收敛到不同局部最优解的模型保存便可得到M个处于不同收敛状态的模型,对于每个循环结束后保存的模型,我们称之为模型快照。 测试阶段在做模型集成时,由于深度网络模型在初始训练阶段未必有比较卓越的性能,因此一般可挑选最后m个模型快照用于集成。关于这些模型快照的集成策略参考下面提到的“直接平均法”。

    多模型集成

    多模型生成策略

    1. 同一模型不同的初始化: 由于神经网络的训练机制是基于随机梯度下降, 故不同的网络参数初始化会导致不同的训练结果,尤其是对于小样本的学习场景, 首先对同一模型进行不同初始化,之后得到的网络模型进行结果集成会大幅度缓解其随机性,提升最终任务的预测结果。
    2. 若网络超参数设置得当, 深度模型随着网络的进行会逐步趋于收敛,但是不同的训练轮数仍有不同, 无法确定哪一轮的模型最适合用于测试数据。 一个简单方法解决这个问题是将最后几轮参数模型结果做集成, 这样一方面可以降低随机误差,另一方面可以避免训练轮此过多带来的过拟合现象, 这样的操作被称为轮次集成。
    3. 不同目标函数:目标函数(或称损失函数)是整个网络训练的“指挥棒”, 选择将“交叉熵损失函数”、“合页损失函数”、“大间隔交叉熵损失函数”和“中心损失函数”作为目标函数分别训练模型。在预测阶段,既可以直接对不同模型预测结果做“置信度级别”的平均或投票,也可以做“特征级别”的模型集成:将不同网络得到的深度特征抽出后级联作为最终特征,之后离线训练浅层分类器(如支持向量机)完成预测任务。
    4. 不同的网络结构:可以在使用如VGG, 深度残差等不同网络架构的网络上训练模型,最后将不同架构网络得到的结果做集成。

    多模型集成方法

    假设由 N 个模型待集成, 对某测试样本 x , 其预测结果为 N 个 C 维向量( C 为数据的标记空间大小): s1,s2,...,sN s 1 , s 2 , . . . , s N

    • 直接平均法
      直接平均法是最简单有效的多模型集成方法,通过直接平均不同模型产生的类别置信度得到最后额预测结果

      Finalscore=Ni=1siN F i n a l s c o r e = ∑ i = 1 N s i N

    • 加权平均法
      加权平均法是直接平均的基础上加入权重来调节不同模型输出间的重要程度。

      Finalscore=Ni=1ωisiN F i n a l s c o r e = ∑ i = 1 N ω i s i N

      其中 ωi ω i 为第 i i 个模型的权重, 且满足:
      ωi>=0 and Ni=1ωi=1 ∑ i = 1 N ω i = 1

    • 投票法(voting)
      投票法中最常用的是多数表决法。表决前需先将各自模型返回的预测置信度 si s i 转化为预测类别,即最高置信度对应的类别标记 ci c i ∈ {1, 2, … , C} 作为该模型的预测结果。多数表决法中在得到样本 x 的最终预测时,若某预测类别获得一半以上模型投票,则该样本预测结果为该类别; 若对该样本无任何类别获得一半以上投票,则拒绝作出预测

      投票法中另一种常用方法是相对多数表决法 , 与多数表决法会输出“拒绝预测”不同的是,相对多数表决法一定会返回某个类别作为预测结果, 因为相对多数表决是选取投票数最高的类别作为最后预测结果。

    • 堆叠法
      堆叠法又称“二次集成法”是一种高阶的集成学习算法。在刚才的例子中,样本 x 作为学习算法或网络模型的输入, si s i 作为第 i 个模型的类别置信度输出,整个学习过程可记作一阶学习过程。堆叠法则是以一阶学习过程的输出作为输入开展二阶学习过程, 有时也称作“元学习”。拿刚才的例子来说,对于样本 x, 堆叠法的输入是 N 个模型的预测置信
      [s1,s2,...,sn] [ s 1 , s 2 , . . . , s n ] 这些置信度可以级联作为新的特征表示。之后基于这样的”特征表示”训练学习器将其映射到样本原本的标记空间。此时学习器可为任何学习算法习得的模型,如支持向量机,随机森林 ,当然也可以是神经网络模型。不过在此需要指出的是,堆叠法有较大过拟合风险。

    参考文献

    解析卷积神经网络——深度学习实践手册

    展开全文
  • 本文是基于《kaggle比赛集成指南》来进行...集成方法是指由多个弱分类器模型组成的整体模型,我们需要研究的是: ① 弱分类器模型的形式 ② 这些弱分类器是如何组合为一个强分类器 学习过机器学习相关基础的童...

    本文是基于《kaggle比赛集成指南》来进行总结的概述什么是集成学习,以及目前较为常用的技术。这里主讲的集成学习技术用于分类任务,关于回归和预测这块不太了解,读者可自行查询相应博客或者论文。

    1 什么是模型的集成?

    集成方法是指由多个弱分类器模型组成的整体模型,我们需要研究的是:

    • 弱分类器模型的形式
    • 这些弱分类器是如何组合为一个强分类器

    学习过机器学习相关基础的童鞋应该知道,集成学习有两大类——以Adaboost为代表的Boosting和以RandomForest为代表的Bagging。它们在集成学习中属于同源集成(homogenous ensembles)方法;而今天我将主要对一种目前在kaggle比赛中应用的较为广泛的集成方法——Stacked Generalization (SG),也叫堆栈泛化的方法(属于异源集成(heterogenous ensembles)的典型代表)进行介绍。

    这里写图片描述

    如上图,弱分类器是灰色的,其组合预测是红色的。图中展示的是温度——臭氧的相关关系。

    2 堆栈泛化(Stacked Generalization)的概念

    作为一个在kaggle比赛中高分选手常用的技术,SG在部分情况下,甚至可以让错误率相比当前最好的方法进一步降低30%之多。

    以下图为例,简单介绍一个什么是SG:

    • ① 将训练集分为3部分,分别用于让3个基分类器(Base-leaner)进行学习和拟合
    • ② 将3个基分类器预测得到的结果作为下一层分类器(Meta-learner)的输入
    • ③ 将下一层分类器得到的结果作为最终的预测结果

    这里写图片描述

    这个模型的特点就是通过使用第一阶段(level 0)的预测作为下一层预测的特征,比起相互独立的预测模型能够有更强的非线性表述能力,降低泛化误差。它的目标是同时降低机器学习模型的Bias-Variance。

    总而言之,堆栈泛化就是集成学习(Ensemble learning)中Aggregation方法进一步泛化的结果, 是通过Meta-Learner来取代Bagging和Boosting的Voting/Averaging来综合降低Bias和Variance的方法。 譬如: Voting可以通过kNN来实现, weighted voting可以通过softmax(Logistic Regression), 而Averaging可以通过线性回归来实现。

    3 一个小例子

    上面提到了同源集成经典方法中的Voting和Averaging,这里以分类任务为例,对Voting进行说明,那么什么是Voting呢?

    Voting,顾名思义,就是投票的意思,假设我们的测试集有10个样本,正确的情况应该都是1:
    我们有3个正确率为70%的二分类器记为A,B,C。你可以将这些分类器视为伪随机数产生器,即以70%的概率产生”1”,30%的概率产生”0”

    下面我们可以根据从众原理(少数服从多数),来解释采用集成学习的方法是如何让正确率从70%提高到将近79%的。

    All three are correct
      0.7 * 0.7 * 0.7
    = 0.3429
    
    Two are correct
      0.7 * 0.7 * 0.3
    + 0.7 * 0.3 * 0.7
    + 0.3 * 0.7 * 0.7
    = 0.4409
    
    Two are wrong
      0.3 * 0.3 * 0.7
    + 0.3 * 0.7 * 0.3
    + 0.7 * 0.3 * 0.3
    = 0.189
    
    All three are wrong
      0.3 * 0.3 * 0.3
    = 0.027

    我们看到,除了都预测为正的34,29%外,还有44.09%的概率(2正1负,根据上面的原则,认为结果为正)认为结果为正。大部分投票集成会使最终的准确率变成78%左右(0.3429 + 0.4409 = 0.7838)。

    注意,这里面的每个基分类器的权值都认为是一样的。


    4 堆栈泛化的发展

    下面内容摘自 史春奇 https://www.jianshu.com/p/46ccf40222d6

    最早重视并提出Stacking技术的是David H. Wolpert,他在1992年发表的论文Stacked Generalization
    它可以看做是交叉验证(cross-validation)的复杂版, 通过胜者全得(winner-takes-all)的方式来进行集成的方法。

    这里写图片描述
    上图是Stacking和Boosting及Bagging在目标,数据,分类器和集成方式的差别。其实, Stacking具有的灵活和不确定性,使得它既可以来实现Bagging方式, 又可以来实现Boosting方式。

    理论方面,SG被Wolpert在1992年提出后,Leo Breiman在1996年把广义线性模型(Generalized Linear Model)和SG方法结合起来提出了 “Stacked Regressions”。 再之后,来自加州伯克利分销(UC Berkeley)的Mark J. van der Laan在2007的时候在表述Super Learner的时候, 从理论上证明了Stacking方法的有效性。

    实践方面, 除了SG理论本身的突破之外, SG应用的广度和深度也在不停的突破, 其中一个是训练数据的分配(Blending的出现); 而另外一个是深层(3层以上)Stacking的出现。目前,可以通过在python中使用mlxtend库来完成Stacking。

    5 常见的Meta-Learner选取

    本节内容全部摘录自今我来思,堆栈泛化(Stacked Generalization)

    1. 统计方法的Meta-Learner:

      Voting ( Majority based, Probabilitybased)

      Averaging (Weighted, Ranked)

    2. 经典容易解释的机器学习算法:

      Logistic Regression (LR)

      Decision Tree (C4.5)

    3. 非线性(non-linear)机器学习算法:

      Gradient Boosting Machine (GBM,XGBoost),

      Nearest Neighbor (NN),

      k-Nearest Neighbors (k-NN),

      Random Forest (RF)

      Extremely Randomized Trees (ERT).

    4. 加权一次/二次线性(Weighted Linear / Quadratic)模型

      Feature weighted linear stacking

      Quadratic - Linearstacking

    5. Multiple response 分析(非线性)框架

      Multi-response linear regression (MLR)

      Multi-response model trees (MRMT)

    6. 其他, 在线学习, 神经网络,遗传学习, 群体智能

      6.1 在线学习 Online stacking (OS)

      Linear perceptron with online random tree
      
      Random bit regression (RBR)
      
      Vowpal Wabbit  (VW)
      
      Follow the Regularized Leader (FTRL)
      

      6.2 神经网络Artificial neural network (ANN)

        2 layer - ANN
      
        3 layer - ANN
      

      6.3 遗传学习 Genetic algorithm (GA)

        GA-Stacking
      

      6.4 群体智能 Swarm intelligence (SI)

      Artificial bee colony algorithm

    另外, 这有个文章列表显示从1997年到2013年, Meta-learner的设置越来越新颖广泛:
    这里写图片描述

    综上, SG是很强大的集成方式, 某种意义上, 和深度学习类似, 纵向增加了学习深度, 但是也增加了模型复杂型和不可解释性。如何精心的选择Meta-learner 和 Base-learner, 训练方式, 评价标准等也是要重视的经验。

    参考资料

    1. 今我来思,堆栈泛化(Stacked Generalization)
    2. kaggle比赛集成指南
    3. Stacked_Generalization
    4. KAGGLE ENSEMBLING GUIDE
    展开全文
  • 论文: SNAPSHOT ENSEMBLES: TRAIN 1, GET M FOR FREE  Github: https://github.com/gaohuang/SnapshotEnsemble https://tiny-imagenet.herokuapp.com  ...论文基于cos循环的学习策略,提出了快照集成(sn...
  • Grafana基础:集成方法之页面嵌入

    万次阅读 2020-01-20 07:04:04
    前面的文章介绍一下如何在Grafana中设定匿名登录的方式,然后直接跳转到Grafana中即可,但是这种方法需要在Grafana和其他系统中跳来跳去。实际上Grafana可以直接通过iframe等方式嵌入到其他系统页面中,这篇文章通过...
  • 定义1:应用计算机和通信领域的科学和技术以及工程管理的原则,将系统化的、规范的、可度量的方法应用于网络系统结构的设计实现、网络系统的规划与集成、网络管理与维护、网络安全保证和网络应用开发的过程。...
  • CNN学习笔记(8)---模型集成方法

    千次阅读 2018-04-27 09:16:17
    13.模型集成方法 深度模型的集成多从“数据层面”和“模型层面”两方面着手 13.1 数据层面的集成方法 13.1.1 测试阶段数据扩充 训练阶段的数据扩充手段:图像多尺度,随机扣取 等都可以用到测试阶段 以...
  • 机器学习(4)分类之集成方法

    千次阅读 2017-10-11 19:44:26
    集成学习:将各种分类器组合起来,这种组合结果被视为集成方法或元算法。使用集成方法有很多形式:同一算法、同一分类器在不同限定条件下的集成,或者不同算法的集成,数据集不同部分分配给不同算法的集成。1、主要...
  • 系统集成方法

    2008-03-19 22:50:26
    让你和我一样成为系统集成高手
  • 集成方法的思想就是将若干个分类器组合起来(或者把一种算法的不同参数组合到一起),以改进各单个分类器的效果。集成方法大致分两类: 1. Averaging methods(平均方法): 就是利用训练数据的全集或者一部分...
  • 一、集成学习方法的思想  前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体智慧”使得问题被很容易解决,那么问题来了...
  • A、集成学习概述 ...基于Boosting(提升方法) Adaboost(Adaptive Boosting 自适应增强) GBDT(Gradient Boost Decision Tree 梯度提升决策树) XGBooST(eXtreme Gradient Boos...
  • 关于回归方法,请参考我的另一篇博客30分钟学会用scikit-learn的基本回归方法(线性、决策树、SVM、KNN)和集成方法(随机森林,Adaboost和GBRT) 本文主要参考了scikit-learn的官方网站1. 数据准备关于分类,我们...
  • 集成方法常分为两类: averging methods:平均法的原则是: 独立的构建几个学习器,然后平均他们的预测。通常,组合的学习器要比任何一个单个的学习器要好,因为它降低了方差。  其中的代表:bagging 方法,随即...
  • 30分钟学会用调用基本的回归方法和集成方法应该是够了。 本文主要参考了scikit-learn的官方网站 前言:本教程主要使用了numpy的最最基本的功能,用于生成数据,matplotlib用于绘图,scikit-learn用于调用机器学习...
  • 集成方法原理总结

    千次阅读 2020-08-12 16:18:40
    集成方法的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比单个估计器更好的泛化能力/鲁棒性。简单来说集成学习就是把若干个基学习器通过某种学习算法结合起来,进而达到比单个基学习更...
  • flashBuilder4.6与Eclipse的集成方法

    热门讨论 2011-12-12 15:59:46
    flashBuilder4.6与Eclipse的集成方法,适用flashBuilder4.5、4.6与Eclipse的集成
  • 集成测试方法及策略

    2017-06-20 19:58:29
    集成测试方法及策略
  • 集成测试计划书写思路方法集成测试计划书写思路方法集成测试计划书写思路方法集成测试计划书写思路方法集成测试计划书写思路方法集成测试计划书写思路方法
  • 模型融合(集成方法) -投票法

    千次阅读 2020-12-02 15:12:02
      在所有集成学习方法中,最直观的是多数投票。因为其目的是输出基础学习者的预测中最受欢迎(或最受欢迎)的预测。多数投票是最简单的集成学习技术,它允许多个基本学习器的预测相结合。与选举的工作方
  • 集成学习方法及思想总结

    万次阅读 多人点赞 2018-02-20 23:46:18
    集成学习(Ensemble Learning)有时也被笼统地称作提升(Boosting)方法,广泛用于分类和回归任务。它最初的思想很简单:使用一些(不同的)方法改变原始训练样本的分布,从而构建多个不同的分类器,并将这些分类器...
  • 集成方法提高神经网络的对抗鲁棒性一、多个弱防御的集成不能形成强防御1.攻击者2.防御策略3.对抗样本生成方法4.干扰大小的度量5.实验6.结论二、简单集成神经网络是一种防御对抗干扰的方法1.攻击方法2.集成模型3.计算...
  • Jira与gitlab的集成方法

    千次阅读 2019-05-27 14:51:20
    1.登录进入Jira管理软件后台,选择【查找所有应用】,然后输入“git”进行安装,如图: 2.下载完“git”插件后,在【管理应用】,将git插件进行上传安装,如图: 3.安装完git插件后,需要输入许可证,许可证在...
  • 此PPT讲解了软件测试中的集成测试的理论及其测试用例的设计
  • vue + java项目部集成方法

    千次阅读 2019-04-28 14:31:43
    可以将war包与打包后的dist文件放在一个tomcat中启动、 router里的设置: mode: 'hash' 由于是要继承到门户的网页,其实是本意是多页面。如果mode为history模式回车找不到对应页面就会报错 ...
  • 数据集成

    万次阅读 2018-05-13 21:16:32
    数据集成内容定义:数据集成是要将互相关联的分布式异构数据源集成到一起, 使用户能够以透明的方式访问这些数据源。 集成是指维护数据源整体上的数据一致性、提高信息共享利用的效率; 透明的方式是指用户无需关心...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 930,338
精华内容 372,135
关键字:

集成方法