zoukankan      html  css  js  c++  java
  • 集成学习的原理

      当做重要决定的时候,大家可能都会考虑吸取多个专家而不是一个人的意见。机器学习在解决问题的时候又不是如此。这就是集成学习的思想。

    集成学习

      集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能,颇有“三个臭皮匠顶个诸葛亮”的意味。集成学习于弱学习器(weaker learner)的效果更佳明显,因此集成学习的很多研究都是针对弱学习器。


    这里写图片描述

      集成学习可能优化单个分类器的性能,但是有时候也可能起反作用。如下图所示的一个二分任务的结果,集成学习的结果通过投票的方式决定,即对于每个分类器采用“少数服从多数”表示分类正确,×表示分类错误。因此在图a中,每一个分类器只有66%的正确率,但是集成之后却达到了100%,而在图b中,三个分类器的结果一样,集成之后性能和原来一样。而对于图C,本来每个分类器有33%的正确率,但是集成之后结果为0,反而变得更坏了。因此个体学习器要求有一定的准确性,即不能太坏,而且还要有多样性,即学习器之间存在差异
    这里写图片描述

    集成形式

      集成方法的形式各种各样,并不单一:可以是不同算法的集成,也可是是一种算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器的集成。

    集成学习的分类

      根据目前个体学习器的生成方式,目前集成学习可以大致分成两类,即个体学习器之间存在强依赖关系、必须串行生成的序列化方式以及不存在强依赖关系,可以同时生成的并行化方法。前者的代表作为Boosting,而后者的代表为Bagging和随机森林(Random Forest)。

    Bagging

    自举汇聚法(bootstrap aggregating),也成为bagging(套袋)方法。bagging采取的是自助采样法(bootstrap sampling),即有放回的采样。如下图所示,其主要思想为:

    • 在包含m个样本的原始数据集中,我们利用自主采样,每次随机选择一个样本放入采样集中,经过m次操作之后我们得到一个包含m个样本的采样集(有的样本可能多次出现,而又的样本可能不会出现)。通过k轮抽样,我们能够得到k个训练集(训练集之间相互独立)。
    • 每次用一个训练集得到一个模型,这样通过k个训练集就能够得到k个模型。
    • 对于分类问题,我们采用简单投票法;对于回归任务用简单平均法,求均值(即所有模型权值相同)

      这里写图片描述

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

    Boosting

    Boosting的思路则是采用重赋权(re-weighting)法迭代地训练基分类器。

    • 即对每一轮的训练数据样本赋予一个权重
    • 并且每一轮样本的权值分布依赖上一轮的分类结果;
    • 基分类器之间采用序列式的线性加权方式进行组合。
      这里写图片描述
        从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

    Boosting和Bagging的区别

    (1). 样本选择

    • Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
    • Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

    (2)样例权值

    • Bagging:使用均匀取样,每个样例的权重相等。
    • Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

    (3)预测函数

    • Bagging:所有预测函数的权重相等。
    • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

    (4)并行计算

    • Bagging:各个预测函数可以并行生成。
    • Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

    总结

      
      这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。

    下面是将决策树与这些算法框架进行结合所得到的新的算法:

    • Bagging + 决策树 = 随机森林
    • AdaBoost + 决策树 = 提升树
    • Gradient Boosting + 决策树 = GBDT

    Boosting方法多种多样,而上面提到的AdaBoost方法便是其中最流行的,也是本篇博客要介绍的主角。

    结合策略

    平均法

    对数值型输出hi(x)R,常见的结合策略是平均法

    • 简单平均法
      H(x)=1Ti=1Thi(x)
    • 加权平均法
      H(x)=i=1Twihi(x)

      其中wi是个体学习器hi的权重,通常要求wi0Ti=1wi=1

    加权法的权重一般是从训练数据中训练得到,现实任务中的训练样本通常不充分或者存在噪声,这将使得学出的权重不完全可靠。尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致拟合。

    投票法

    • 绝对数较多投票法

      H(x)=cj rejectifi=1Thji(x)>0.5k=1Ni=1Thki(x)otherwise

      即若某标记得票超过半数,则预测为该标记;否则拒绝预测

    • 相对较多投票法

      H(x)=cargmaxTi=1hji(x)

      预测票数最多的标记,如果同时有多个标记获得最高票数,则从中随机选择一个。

    • 加权投票法

      H(x)=cargmaxTi=1wihji(x)

      wihi,通常wi0,Ti=1wi=1

    • 学习法
      当训练数据较多的时候,一种跟强大的结合策略是使用“学习法”,即通过另一个学习器结合。先从初始训练集中训练出初级学习器,然后生成一个新的数据集,用于训练次级学习器。在这个新的训练集中,初级学习器的输入被当做样例输入特征,而初始样本的标记任被当做样本标记。

    以上就是集成学习的一些基本概念。下篇我们将会讲到最常见的Boosting—-AdaBoost

  • 相关阅读:
    zabbix获取主从同步状态的shell
    Linux 线程占用CPU过高定位分析
    LVM
    zabbix添加端口连接数监控
    hadoop未授权访问漏洞
    nginx修改上传文件大小限制(413 Request Entity Too Large)
    官方Tomcat 7.0.81 漏洞整改记录
    python流程控制:while循环
    python流程控制:for循环
    python数据类型—列表(增改删查,统计,取值,排序)
  • 原文地址:https://www.cnblogs.com/gaot/p/7709689.html
Copyright © 2011-2022 走看看