前言
集成学习是通过构建并结合多个学习器来完成学习任务,集成学习通过将多个基学习器结合,即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来,通常都会获得比单一学习器显著优越的泛化性能,是评测任务中必不可少的一个方法。
目前集成学习可分为两大类,即个体学习器之间有依赖关系,必须串行生成的序列化方法;以及个体学习器不存在强依赖关系,可同时生成的并行化方法。前者的代表是Boosting,最著名的是代表有Adaboost, GBDT和XGBOOST;后者的代表是Bagging和随机森林。对于学习器的结合策略有三大类:投票法(分类),平均法(连续数值),学习法(Stacking)
下面简单介绍几种方法。
一、Bagging
在Bagging方法中,利用bootstrap方法从整体数据集中采取有放回抽样得到N个数据集,在每个数据集上学习出一个模型,最后的预测结果利用N个模型的输出得到,具体地:分类问题采用N个模型预测投票的方式,回归问题采用N个模型预测平均的方式。
随机森林(Random Forest)
随机森林简单地来说就是用随机的方式建立一个森林,森林由很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在我们学习每一棵决策树的时候就需要用到Bootstrap方法。在随机森林中,有两个随机采样的过程:对输入数据的行(数据的数量)与列(数据的特征)都进行采样。对于行采样,采用有放回的方式,若有N个数据,则采样出N个数据(可能有重复),这样在训练的时候每一棵树都不是全部的样本,相对而言不容易出现overfitting;接着进行列采样从M个feature中选择出m个(m<<M)。最近进行决策树的学习。预测的时候,随机森林中的每一棵树的都对输入进行预测,最后进行投票,哪个类别多,输入样本就属于哪个类别。
二、Boosting
Boosting是一种可以用来减小监督学习中偏差的机器学习算法。主要也是学习一系列弱分类器,并将其组合为一个强分类器
AdaBoost
刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。
GBDT
与AdaBoost不同,GBDT每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。
三、Stacking
Stacking方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。理论上,Stacking可以表示上面提到的两种Ensemble方法,只要我们采用合适的模型组合策略即可。但在实际中,我们通常使用logistic回归作为组合策略
|