再探集成学习

在“初识集成学习”一文中,笔者用了投票法来整合基学习器的预测结果;其实投票法只是集成学习中基学习器的结合策略之一,为了对集成学习有一个整体的概览,本文将对集成学习的整个面貌做一个大体描绘。

对于集成学习的研究,主要集中在基学习器的生成方式和预测结果的整合上,因此本文将遵照此思路依次介绍:

1 基学习器的生成

1.1 bagging算法

Bagging算法作为集成学习中生成基学习器的算法之一,最初由Leo Breiman于1996年提出。Bagging算法可与其他分类、回归算法结合,在提高预测准确率、稳定性的同时,通过降低结果的方差以避免过拟合的发生。

使用bagging时,个体学习器之间不存在强依赖关系,并且个体学习器可以并行生成,提高训练效率。其训练思路如下:
给定包含m个样本的数据集,先从样本中取出一个放入采样集中,再把该样本返回原数据集,使得下次采样时该样本仍可以被选中;经过m次随机采样,便得到包含m个样本的采样集。依照该方法操作T次,得到T个含有m个训练样本的采样集,然后基于这T个采样集训练出T个基学习器,将T个基学习器结合,即可得到最终的集成学习器。
bagging的代表模型便是熟知的随机森林,它是bagging的一个扩展体。

1.2 boosting算法

Boosting是一个将弱学习器提升为强学习器的算法。其训练思路为:
先从初始训练集训练出一个基学习器,再根据基学习器的表现对样本分布进行调整,使得前一个基学习器预测错误的训练样本在后续得到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复,直至基学习器数目达到指定值,或整个集成结果达到给定条件。

实现boosting的代表算法有:
1 adaboost
2 提升树(boosting tree)
3 梯度提升树(GBDT)

2 基学习器的结合策略

通过上述方法得到众多基学习器后,在后续测试或应用中,需要把基学习器的预测结果进行合成,从而得到整个集成学习器的结果。常用的结合策略如下:

2.1 平均法

对于回归问题,使用平均法结合各基学习器的预测结果,平均法又分为简单平均和加权平均,其中简单平均可视为加权平均的一种特殊情况,即各基学习器的权值都一样。使用加权平均时,各基学习器的权值可根据在验证集上的准确率确定。

2.2 投票法

对于分类问题,使用投票法结合各基学习器的预测结果,投票法又分为绝对多数投票(即如某标记的投票过半数则预计为该标记,否则拒绝预测,该方法可能对某些输入得不到输出)、相对多数投票( 即预测得票最多的标记,若同时出现多个票数最多,则任选其一)以及加权投票(类似于回归问题中的加权平均,也是预测得票最多的标记)。

3 独特的stacking

Stacking技术就是选取几个简单的模型(一般称为初级学习器),将它们在训练集上进行K折交叉验证输出预测结果,然后将每个模型输出的预测结果合并为新的特征,并使用另外的的模型(一般称为次级学习器)在新的特征上进行训练。

举例说明:对于一个二分类问题(标签记为0,1),选取逻辑回归(LR)、支持向量机(SVM)、k最近邻(kNN)作为初级学习器,先用这三个初级学习器分别在原训练集上进行训练调参验证,完成之后再让所有初级学习器整体预测一次训练集;比如对训练集中的某一个样本三者的预测分别为0,0,1,则将这三个预测值组成一个向量(0,0,1)作为一个新的训练样本,假设原训练集有M个训练样本,则经过这次整体预测,将得到M个类似于(0,0,1)这样的3维向量,视这M个新得到的数据为一个新的训练集,再选取一个分类模型(次级学习器)在新的训练集上进行训练拟合,如此便得到整个集成分类器。
在利用上述集成分类器进行预测时,先让原始样本过一遍前三个初级学习器,将初级学习器预测得到的结果向量作为次级学习器的输入,最后将次级学习器的输出作为整个集成学习器的预测输出。

stacking既可以与bagging、boosting比肩作为构成集成学习的三个重要组成部分之一,也可以被视为整合基学习器的策略之一。需要注意的是,stacking并没有强制限定集成模型只能由初级学习器和次级学习器组成,换句话说,我们还可以往后继续延伸,添加诸如三级学习器、四级学习器等,但具体效果怎么样,还要视具体问题而定。

猜你喜欢

转载自www.cnblogs.com/pythonfl/p/12346910.html