内容介绍
-
简单加权融合:
- 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
- 分类:投票(Voting)
- 综合:排序融合(Rank averaging),log融2
2. stacking/blending:
构建多层模型,并利用预测结果再拟合预测
3. boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
多树的提升方法
Stacking相关理论介绍
简单来说 stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。
将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。
上面说的投票法和平均法都是很有效的结合策略,还有一种结合策略是使用另外一个机器学习算法来将个体机器学习器的结果结合在一起,这个方法就是Stacking。
在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(meta-learner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。
实现过程:
在stacking中会用到整个train data
每一次的交叉验证包含两个过程:
1. 基于训练数据训练模型;
2.基于训练数据训练生成的模型对检验数据进行预测
在这部分操作完成后,我们还要对数据集原来的整个testing set进行预测,这个过程会生成与testing data相同长度的预测值b,这部分预测值将会作为下一层模型testing data的一部分,记为b1。因为是5折交叉验证,所以以上提及的过程将会进行五次,最终会生成针对检验数据预测的5列长度为training data 长度的1/5的数据a1,a2,a3,a4,a5,和地狱之对应的五组与testing data长度相等的预测值b1,b2,b3,b4,b5。
完成图model1的整个步骤之后,阿静a1,a2,a3,a4,a5是对原来training data的预测值,将其拼凑起来,记为A1,将b1,b2,b3,b4,b5各部分相加取均值,得到引得testing data的矩阵,记为B1.
以上就是stacking中一个模型的完整流程,stacking中同一层通常包含多个模型,假设还有Model2: LR,Model3:RF,Model4: GBDT,Model5:SVM,对于这四个模型,我们可以重复以上的步骤,在整个流程结束之后,我们可以得到新的A2,A3,A4,A5,B2,B3,B4,B5矩阵。对testing set的预测会是5列2500行数据b1,b2,b3,b4,b5.
在此之后,将A1,A2,A3,A4,A5并列合并得到一个t新的矩阵,作为training data,1,B2,B3,B4,B5并列合并得到一个新的矩阵,作为testing data ,给下一层模型使用,冉跟他们基于此矩阵进行训练。
Blending
Blending与Stacking大致相同,主要区别在于,Blending的训练集不是通过K-Fold的cv侧阔获取预测值来生成撕第二阶段的模型特征,而是建立一个Holdout集。
Blending的优点:
1,比Stacking简单(不用进行k次交叉验证获得stacker feature)
2,避开了信息泄露问题:generlizers和stacker使用了不一样的数据集
Blending的缺点:
1,使用少量的数据
2,blender可能会过拟合
3,stacking 使用多次的cv会比较稳健