集成方法综述
集成方法要取得好的方法,通常要求基模型(base learner)的预测能力比随机猜测要好,而且多个基模型之间具有差异性。
集成方法可以达到比单一模型更高的性能的原因:
- 集成方法能够增强模型的表达能力
- 与单个模型相比,集成方法往往能够降低误差。假设现在有个相互独立的基模型,单个基模型的分错概率均为,现假设以多数投票的方式得到一个集成模型,则集成模型分错的概率为
当时,。可见,在基模型之间互相独立时,集成方法能够大幅度提升模型的预测性能。
构建集成模型主要分成以下两个步骤:
- 构造多个基模型
- 根据一定的策略,将基模型组合成集成模型
一、Bagging
Bagging方法的过程:首先从训练数据中自助采样获取多份抽样数据,利用抽样的数据训练基模型,然后平均所有基模型的预测结果得到一个集成模型(如下图所示)。
自助采样法:
泛指有放回的随机采样方法,即从大小为的数据集有放回地抽取一个样本,不断重复采样,可以形成任意大小的新采样集,可以利用自助采样法从原始数据集中得到大小同样为的新采样集作为训练集来训练模型,然后在数据集上进行模型测试。
通过自助采样法得到的大小为的新采样集中,原始数据集中有的样本会出现多次,有的样本则不会出现,我们可以估计原始数据中有多少比例的样本不会出现在新采样集中,样本在全部的次采样中均未被选中的概率为:
当时,上述概率值渐进等于,即大约有36.8%的样本未出现在新采样集中。为了减少这样的随机性导致的误差,通常需要重复做轮采样,分别训练和测试模型,然后计算这轮测试集上的模型性能的均值作为最终泛化性能的估计。
自助采样法能从原始数据集中产生多个不同的新采样集作为训练集,可以作为集成学习基模型的训练集。如果数据集较小,而且很难使用留出法和交叉验证方法划分训练集和测试集,自助采样法时最好的选择。
假设有一份包含个样本的训练集,则构建一个包含个基模型的Bagging方法如算法1所示。通过自助抽样可以获取多个具有一定差异行的训练集,从而构建多个具有差异性的基模型。
算法2 Bagging算法
输入:训练集,学习算法
输出:集成模型
1: for t = 1 to do
2: 使用自助抽样,从训练数据集中获得抽样数据集;
3: 基于,使用学习算法训练得到一个基础模型
4: 输出最终的分类器:
Bagging使用最简单的组合策略得到集成模型:对于分类问题,采用多数投票的方法;对于回归问题,采用平均值的方法。这种平均的策略能够大大降低模型的方差,因此Bagging特别适合用来提高方差大但是偏差小的基模型的预测性能。决策树和神经网络就是这类模型。
同时Bagging在计算方面的一个优势是便于并行化。多个抽样数据的获取及基模型的训练互相没有关联,可以方便地进行并行计算。当训练数据量大或者需要得到的基模型数量较多时,这种计算模型的优势更加明显。
二、Boosting
以分类为例,Boosting假设基模型是弱分类器(weak classifier),即分类性能比随机猜测稍好的分类器。Boosting的目标是:通过一定的策略提升弱分类器的效果,得到一个综合的强分类器(strong classifier)。与Bagging方法可以并行训练多个基分类器不同的是,Boosting中的弱分类器是以串行的方式训练得到的。**其基本思想为:**从训练数据集中训练得到一个弱分类器,下一个弱分类器基于前一个弱分类器的表现,重点关注前一个弱分类器分错的样本,尽量将前一个弱分类器分错的样本分对。
Boosting采用改变样本权重的方法使当前分类器将重点放在前一个弱分类器分错的样本上,在完成当前弱分类器的训练后,测试当前弱分类器,提高分错数据的权重,降低分对数据的权重,如果下一个弱分类器将这些高权重的样本分错,将会受到更大的惩罚,因此会避免在这些高权重的样本上犯错,从而达到趋向于将这些高权重的样本分类正确的效果。
Boosting根据基模型的预测性能,给不同的基模型以不同的权重,以分类问题为例,如果一个基分类器的误差越高,则该分类器的权重越低,注意,计算每一个基分类器的误差时,需要考虑该基分类器对应的训练数据中样本的权重。
三、Stacking
Bagging和Boosting通常使用同一种类型的基模型,并且通过直接组合基模型的预测结果得到最终的预测结果。Stacking通常用来集成多个不同类型的基模型,例如分别使用支持向量机、逻辑回归、决策树作为基模型。
Stacking在得到多个基模型的预测结果后,并不是将其直接组合,而是将各个基模型的预测结果当作输入特征,将每一个样本真实的标签当作学习目标,重新训练一个高层的综合模型。
Stacking方法包括以下几个步骤:
- 将训练数据划分为两个不相交的子集和
- 用训练集的第一部分训练多个不同的基模型
- 将多个基模型用于预测训练集的第二部分
- 将基模型的预测结果当作输入,的样本标签当作学习目标,训练一个高层的模型