Ensemble Learning

2020-01-17 15:06:22 浏览数 (1)

集成学习(ensemble [ɒnˈsɒmbl] learning)通过构建并结合多个学习器来完成任务,有时也被称为多分类器系统(multi-classifier system)。

根据基学习器的生成方式,目前的集成学习大体可以分成以下两类:

序列集成方法,其中参与训练的基学习器按照顺序生成。序列方法的原理是利用基础学习器之间的强依赖关系,通过对之前训练中错误标记的样本赋值较高的权重,来提高整体的预测效果。

并行集成方法,其中参与训练的基学习器并行生成。并行方法的原理是利用基学习器之间的独立性来显著降低错误率。

前者的代表是Boosting,而后者的代表是Bagging,我们一个一个来聊。

Bagging

Bagging这个名字是由Bootstrap Aggregating缩写而来,包含自助和合计两个单词。

Bootstrap是指它利用了自助采样法(Bootstrap Sampling),这是一种有放回的抽样方法。【给定包含m个样本的数据集,我们先随机抽取出一个样本放入采样集中,再把该样本放回原始数据集,使得下次采样时该样本仍然有可能被选中。】这样经过m次随机采样操作(【】视为一次随机采样操作),我们可以得到一个含m个样本的采样集。

按照相同的方式,我们可以采样出T个含m个训练样本的采样集,然后基于每一个采样集训练出一个基学习器,再将这些基学习器结合,也就是Aggregating。

下面给出了bagging的流程示意图:

Boosting

Boosting是一族将弱学习器提升为强学习器的算法。

  • Boosting的两个核心问题

Q1:在每一轮如何改变训练数据的权值或概率分布?

Q2:如何将弱分类器组合成一个强分类器?

A1:通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

A2:通过加法模型将弱分类器进行线性组合。

之前写过一篇手写AdaBoost算法的文章,里面介绍的正是Boosting族算法中最著名的AdaBoost算法。另外还有GBDT(Gradient Boost Decision Tree),以及机器学习比赛大杀器XGBoost都是Boosting族的算法。

二者差别

  1)样本选择

  Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

  Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化,而其权值是根据上一轮的分类结果进行调整。

  2)样例权重

  Bagging:使用均匀取样,每个样例的权重相等

  Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大

  3)基分类器权重

  Bagging:所有基分类器权重相等

  Boosting:每个基分类器都有相应的权重,对于分类误差小的分类器会有更大的权重

  4)并行计算

  Bagging:各个基分类器可以并行生成

  Boosting:各个基分类器只能顺序生成,因为后一个模型参数需要前一轮模型的结果

0 人点赞