人们在做重大决定的时候,可能都会考虑吸取多个专家,而非一个人的意见,机器学习处理问题时,也是如此,采用集成的思想,相信“三个臭皮匠,顶个诸葛亮”

1、集成学习(ensemble learning):    

     1)基础介绍

    集成算法,把大大小小的多种分类器融合在一起,共同协作来解决一个问题。充分展示“集体智慧”,“博采众长”思想。集成学习的一般结构,先产生一组个体学习器(也称算法),再用某种策略将它们结合起来。

    集成学习两个关键点:1)怎么产生每个学习器?2)怎么融合每个学习器?

    2)同质和异质的区别

    个体学习器通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如决策树集成中全是决策树,神经网络集成中全是神经网络,这样的集成是同质的。同质集成中的个体学习器也称为基学习器,相应的学习算法称为基学习算法(base learning algorithm)。

    集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是异质的。异质集成中的个体学习器由不同的学习算法生成,这时,不再有基学习算法,相应的,个体学习器一般不称为基学习器,常称为“组件学习器”或者个体学习器

    3)强弱学习器

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

     集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优势的泛化性能,这对“弱学习器(weak learner)”尤为明显。因此集成学习的很多研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。

    在一般的经验中,如果把好坏不等的东西掺到一起,通常结果会是比最坏的要好一些,比最好的要坏一些。

    集成学习把多个学习器结合起来,如何得到比最好的单一学习器更好的性能呢?

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

集成学习思想以及boosting、bagging介绍


    根据这些模型的产生方式,集成学习大致分为两类:

  • 各个模型间存在强依赖关系,必须串行生成的序列化方法,通过集中关注被已有分类器错分的那些数据获得新的分类器。代表为Boosting系列(Adaboost、GBDT、XGBOOST)

  • 各个模型间不存在强依赖关系,可同时生成的并行化方法,每个分类器可独立学习训练,最后采用投票法结合。代表为Bagging和“随机森林”

   不论bagging,还是boosting,所使用的多个分类器都是同质的。主要区别就是boosting是串行的,需要先建一个模型,才能建另外一个模型。而bagging则是并行建立模型,也就是可以同时创建模型

    多个模型的整合方式,一般有简单多数投票、权重投票,贝叶斯投票,基于D-S证据理论的整合,基于不同的特征子集的整合。


3、boosting思想:

    Boosting主要是一种思想,表示“知错就改”。是一族可将弱学习器提升为强学习器的算法,如Adaboost、GBDT、XGBOOST,这组算法的工作机制类似。先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个学习器,如此重复进行下去,直到基学习器数目达到事先指定的值T,最终将这 T个基学习器进行加权结合。

    Boosting每次分类都将上一次分错的数据权重提高一点再进行分类,是不断使用后一个弱分类器弥补前一个弱分类器的不足的过程。

  • 训练弱分类器C1:从样本整体集合D中,不放回的随机抽样n1 < n 个样本,得到集合 D1,训练弱分类器C1。

  • 训练弱分类器C2:从样本整体集合D中,抽取 n2 < n 个样本,其中合并进一半被 C1 分类错误的样本。得到样本集合 D2,训练弱分类器C2

  • 训练弱分类器C3:抽取D样本集合中,C1 和 C2 分类不一致样本,组成D3,训练弱分类器C3

  • 用三个分类器做投票,得到最后分类结果。

如下所示:集成学习思想以及boosting、bagging介绍


        绿色的线表示目前取得的模型(模型是由前m次得到的模型合并得到的),虚线表示当前这次模型。每次分类的时候,会更关注分错的数据,上图中,红色和蓝色的点就是数据,点越大表示权重越高,看看右下角的图片,当m=150的时候,获取的模型已经几乎能够将红色和蓝色的点区分开了。

Boosting可以用下面的公式来表示

集成学习思想以及boosting、bagging介绍

        训练集中一共有n个点,我们可以为里面的每一个点赋上一个权重Wi(0 <= i < n),表示这个点的重要程度,通过依次训练模型的过程,我们对点的权重进行修正,如果分类正确了,权重降低,如果分类错了,则权重提高,初始的时候,权重都是一样的。上图中绿色的线就是表示依次训练模型,可以想象得到,程序越往后执行,训练出的模型就越会在意那些容易分错(权重高)的点。当全部的程序执行完后,会得到M个模型,分别对应上图的y1(x)…yM(x),通过加权的方式组合成一个最终的模型YM(x)。

    Boosting更像是一个人学习的过程,开始学一样东西的时候,会去做一些习题,但是常常连一些简单的题目都会弄错,但是越到后面,简单的题目已经难不倒他了,就会去做更复杂的题目,等到他做了很多的题目后,不管是难题还是简单的题都可以解决掉了。


文章参考: http://blog.jobbole.com/88193/


2、bagging:  

    bootstrap sampling:自助采样法。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,初始训练集约有63.2%的样本出现在采样集中。

    bagging是bootstrap sampling的缩写。基于自主采样法,可以采样出T个含m个样本的采样集,然后基于每个采样集,训练处一个基学习器,再将这些基学习器进行结合,这就是bagging的基本流程。

    bagging最常用在随机森林中。


相关文章:

  • 2021-04-25
  • 2021-10-30
  • 2021-10-30
  • 2021-05-11
  • 2021-06-19
  • 2021-05-28
  • 2021-09-27
猜你喜欢
  • 2021-08-19
  • 2022-01-12
  • 2022-01-06
  • 2021-07-06
  • 2021-12-22
  • 2021-09-06
  • 2022-01-21
相关资源
相似解决方案