集成学习有两个分类,一个是个体学习器存在强依赖关系、必须串行生成的序列化方法,以Boosting为代表。另外一种是个体学习器不存在强依赖关系、可同时生成的并行化方法,以Bagging和随机森林(Random Forest)为代表。
Bagging模型
全称: bootstrap aggregation(并行训练一堆分类器),代表:随机森林
对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
随机:数据采样随机,特征选择随机(数量相同),保证泛化能力,每棵树都不一样,得到不同的结果,再进行投票取最终结果
森林:很多个决策树并行放在一起
随机森林优势:
它能够处理很高维度(feature很多)的数据,并且不用做特征选择
在训练完后,它能够给出哪些feature比较重要
可以进行可视化展示,便于分析
容易做成并行化方法,速度比较快
理论上树越多,效果越好,但实际上超过一定数量就差不多上下浮动
Boosting模型:
典型代表:AdaBoost,Xgboost
从弱学习器开始加强,通过加权来进行训练
Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
举例:当A模型预测实际值1000为950时,B模型继续预测残差(1000-950=50),当B模型预测实际值50为30时,C模型继续预测残差(50-30=20),C模型预测得到结果为18,将各结果累加,得到合适的准确度
Adaboost实现流程:
每次切分一次,最终合在一起,形成一个弱分类器的加强版
stacking
当使用stacking时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
聚合多个分类或回归模型(可分阶段来做)
link
对于每一轮的 5-fold,Model都要做满5次的训练和预测。分别为model1-model5
Titanic 例子:
Train Data有890行。(请对应图中的上层部分)
每1次的fold,都会生成 713行 小train, 178行 小test。我们用Model_i来训练 713行的小train,然后预测 178行 小test。预测的结果是长度为 178 的预测值。
这样的动作走5次! 长度为178 的预测值 X 5 = 890 预测值,刚好和Train data长度吻合。这个890预测值是Model 1-5产生的,我们先存着,因为,一会让它将是第二层模型的训练来源。
重点:这一步产生的预测值我们可以转成 890 X 1 (890 行,1列),记作 P1 (大写P)
接着说 Test Data 有 418 行。(请对应图中的下层部分,对对对,绿绿的那些框框)
每1次的fold,713行 小train训练出来的Model _i要去预测我们全部的Test Data(全部!因为Test Data没有加入5-fold,所以每次都是全部!)。此时,Model _i的预测结果是长度为418的预测值。
这样的动作走5次!我们可以得到一个 5 X 418 的预测值矩阵。然后我们根据行来就平均值,最后得到一个 1 X 418 的平均预测值。
重点:这一步产生的预测值我们可以转成 418 X 1 (418行,1列),记作 p1 (小写p)
走到这里,你的第一层的某个model就完成了他的使命
过拟合:实际中stacking非常容易过拟合,第二层应该采用简单的模型,如线性回归
为了更好的效果,第一层学习器要尽量多样化:
- 不同的数据集,如使用不同样本的子集,或者不用特征的子集
- 不同的算法
结合策略
1、平均法(回归)
在上面几节里面我们主要关注于学习器,提到了学习器的结合策略但没有细讲,本节就对集成学习之结合策略做一个总结。我们假定我得到的T个弱学习器是{h1,h2,…hT}
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
最简单的平均是算术平均,也就是说最终预测是
如果每个个体学习器有一个权重w,则最终预测是
2、投票法(分类)
对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是{c1,c2,…cK},对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是(h1(x),h2(x)…hT(x))。
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
https://www.cnblogs.com/pinard/p/6131423.html