机器学习——集成学习综述

机器学习——集成学习综述

1、集成学习概述

1.1 基本概念

集成学习是机器学习中一个非常重要的学习策略。顾名思义,集成学习本身不是一个单独的机器学习算法,而是通过集合多个学习器来组成一个机器学习系统来完成学习任务。集成学习的应用面很广,包括分类问题,回归问题,特征抽取问题等等。

1.2 基本结构

上面我们提到了,集成学习本身是综合了多个学习器的机器学习系统,我们通过训练数据集,分别训练多个学习器,在将这些学习器综合起来形成一个学习系统。所以,集成学习的基本架构如下图所示:
机器学习——集成学习综述_第1张图片

在上面的基本结构中,我们展示了集成学习系统的基本结构,集成学习的基本结构可以分成三个部分,第一个部分是训练数据,第二个部分是单个的学习器,第三个部分是强学习器。下面我们开始逐个的介绍这三个部分。

2、 训练数据

在集成学习中,不同的集成学习方法产生训练数据的方式是不同的。对于常规的机器学习算法而言,其训练的过程是基于训练数据集来进行的。对于集成学习也是如此,但是我们知道在集成学习中是有多个学习器的,如果让每一个学习器都在相同的训练集上进行训练,难免使的所有单个学习器学习到的内容过于一致,如果将一份训练集分成n份,使得每个学习器单独的针对每一份训练数据进行训练,这又大大的缩小了训练数据的规模,容易造成每个学习器的欠拟合问题。这个时候就引出啦来如何为不同的学习器构建训练数据集的问题。其基本思想就是——采样

2.1 BootStrap采样

首先,我们给出BootStrap采样的基本定义:给定包含M个样本的训练数据集D,我们对其进行采样来生成训练数据集D’,每次从训练集D中随机挑选一个样本,将其拷贝到训练数据集D‘中,然后在将该样本返回到原始的数据集D中去,使得该样本正在下次采样的时候仍然有可能被采样得到。将这个采样的过程重复M次,也就是说训练样本集D‘中也包含了M个样本。当我们有N个单个的学习器的时候,我们就重复上面的过程,构造出N个训练样本集合就可以了。

我们来简单的对上面的采样方案进行分析,首先采样的过程是有放回的采样过程,也就是说:

  1. 某个样本可以能在某个训练集中出现多次,也可能一次都没有出现。
  2. 某个样本可能在多个训练集中出现,也可能一次都没出现。

进一步,我们对某一个样本的采样进行分析,在一轮的采样中,每一个样本被采样到的概率为 1 M \frac{1}{M} M1,则其没有被采样的概率为 1 − 1 M 1-\frac{1}{M} 1M1,由于有m次的采样,也就是说该样本在本轮的采样中没有被采样到的概率为 ( 1 − 1 M ) M ≈ 0.368 (1-\frac{1}{M})^M≈0.368 (1M1)M0.368,也就是说大约有36.8%的样本在一轮的采样中是没有被采样到的,这些样本可以作为测试样本。

最后,我们使用一个图来总结一下这种采样方式:
机器学习——集成学习综述_第2张图片

2.2 Boosting思想

Boosting是一种框架算法思想,其主要是用来提高单个分类器的准确度的方法,这种思想在构造训练数据的时候,采用的也是抽样的方案,当时与上面BootStrap抽样不同的是,Boosting思想中的抽样是非等概率的抽样,也就是说,当一个分类器对训练数据进行训练之后,及时调节训练数据中各个训练样本的抽样概率,使被错误学习的训练样本在下一轮抽样的时候拥有更大概率被抽中。这样在下次构建训练数据集的时候,有更多的在上一轮学习错误的样本被抽样出来组成当前的训练样本集合。

3、学习器的构建

这这个部分,我们需要根据不同的训练样本来构建单个学习器,学习器的没有固定的形式,一般以决策树作为主要的构建算法。这里,我们主要叙述两种学习器构建思想已经一些相关的实例。

3.1 Bagging集成学习

所谓的Bagging思想,指的就是利用我们上面提到的BootStrap的方法经过N次独立的抽样之后形成N个训练样本,在根据这N个训练样本单独的去训练N个学习器。这N个学习器之间并没有关系,每一个学习器都是独立训练的。其结构如下图所示:
机器学习——集成学习综述_第3张图片
使用这种方法最为典型的算法就是随机森林。随机森林的核心思想就是训练出N个独立的学习器,在预测的时候采用投票法的方式来决定最终的预测结果。具体的过程可以参考我的另外一篇博客机器学习——随机森林。

3.2 Boosting集成学习

Boosting集成学习,采用的是上面我们提到的Boosting思想来构建训练数据集,在这个过程中,前一轮的学习结果是影响到下一轮数据采样的分布。所以,其基本结构如下图所示:

机器学习——集成学习综述_第4张图片
从上面的图示中,我们可以发现,基于Boosting的集成学习是通过第一个学习器开始,不断的调整原始数据的分布,生成新的训练集来训练下一个学习器的。往往下一个学习器更加关注的是上一个学习器预测错误的数据。

Boosting思想中最为经典的两个算法为AdaBoost和GBDT算法,具体可以参考我的另外两篇文章。

  1. 机器学习——GBDT算法
  2. 机器学习——AdaBoost算法

4、 强学习器

这是集成学习的最后一个部分,在这个部分中,我们重点关注的是,在学习到各个单个的学习器之后,我们应该采用什么的策略来结合各个单个的学习器来生成最终的强学习器呢?

4.1 平均法

对于数值类的回归问题,一般采用的是平均法。也就是说将各个学习器预测的结果求和求平均。
H ( X ) = 1 N ∑ i = 1 N h i ( X ) H(X)=\frac{1}{N}∑_{i=1}^Nh_i(X) H(X)=N1i=1Nhi(X)
如果说各个我们给各个学习器分配一个权重的话,预测的结果为:
H ( X ) = ∑ i = 1 N W i h i ( X ) H(X)=∑_{i=1}^NW_ih_i(X) H(X)=i=1NWihi(X)
其中 W i W_i Wi表示各个学习器的权重,一般情况下有:
W i ≥ 0 , ∑ i = 1 N W i = 1 W_i≥0,∑_{i=1}^NW_i=1 Wi0i=1NWi=1

4.2 投票法

对于分类问题的预测,一般情况下,我们使用的是投票法。基本思想就是少数服从多数。

  1. 假设每一个单个的分类器的结果为{ h 1 ( X ) , h 2 ( X ) , . . . h 3 ( X ) h_1(X),h_2(X),...h_3(X) h1(X),h2(X),...h3(X)},我们会选择预测最多的分类作为最终的分类结果。
  2. 更复杂一点是,我们选择的是预测最多的分类,而且这个预测这个分类的学习器要超过半数。
  3. 更为复杂的是加权投票法,也就是每个单个的学习器的各个分类乘以一个权重,将所有学习器的分类结果相同的累加,得分最多的为最终的分类结果。

4.3 学习法

上面的两个方法是对单个的分类器的结果进行平均或者投票,比较简单,还有一种方法我们称之为学习法,其中代表方法是Stacking,简单的来讲就是将各个学习器的学习结果作为特征最为新的输入在重新构建一个学习器来进行训练。

5 参考

  1. 集成学习原理小结

你可能感兴趣的:(机器学习)