Stacking是集成方法之一
下面分析计算流程,假设第一层有n个子模型,每个模型进行K折交叉验证
1、单个模型分别进行学习
首先,采用交叉验证+网格搜索,得到子模型最优超参数
然后,在此最优超参数下,每次进行交叉验证时,都会训练得到一个模型。用此模型对验证集和测试集分别预测,共进行K次预测,得到一个完整的训练集预测值和K个测试集预测值,对K个测试集预测值取平均,从而得到一个完整的训练集预测值和一个测试集预测值
2、确定新的训练集合测试集
首先,对n个子模型分别学习,得到n个训练集预测值(不取平均值),作为n维特征作为第二层模型的输入
同样,n个子模型也得到n个测试集预测值,作为第二层模型的输入
3、第二层模型学习
用新的特征构成的训练集和测试集进行预测
注:stacking在交叉验证时存在数据泄露,容易过拟合
Blending集成方法之一
Blending直接用不相交的数据集用于不同层的训练,也就是不作交叉验证,而是将训练集分为70%,30%两部分,由70%训练模型,对30%和test预测,结果为新特征输入,从而不会出现stacking中的数据泄露现象
以两层的Blending为例,训练集划分为两部分(d1,d2),测试集为test
第一层:用d1训练多个模型,将其对d2和test的预测结果作为第二层的New Features
第二层:用d2的New Features和标签训练新的分类器,然后把test的New Features输入作为最终的预测值