集成学习 task7

stacking具体流程

我们就对着下图(两层的stacking)来详细描述一下如何做模型stacking:

  • 首先将数据分为5份,
  • 在stacking的第一层定义5个基模型[model_1 ,model_2,model_3,model_4,model_5],其中每个模型选择做一下5折的交叉验证的预测,这样就相当于每个模型将所有数据预测了一遍,举个例子,最终每一个训练数据会被转换为**[1,1,1,1,0]**形状,维度为5的向量。
  • 将第一层5个基模型的输出预测向量[1,1,1,1,0],作为第二层模型model_6的特征做训练,
  • 做test时,直接将test的数据喂给之前第一层训练好的5个基模型,5个模型预测出的至平均后作为第二层模型的输入。

大家可以简单的将stacking的第一层模型理解成一个超强的特征转换层

stacking

Stacking注意事项

做Stacking模型融合时需要注意以下个点,我们拿2层stacking模型融合来举例子:

  • 第一层的基模型最好是强模型,而第二层的基模型可以放一个简单的分类器,防止过拟合。
  • 第一层基模型的个数不能太小,因为一层模型个数等于第二层分类器的特征维度。大家可以把勉强将其想象成神经网络的第一层神经元的个数,当然这个值也不是越多越好。
  • 第一层的基模型必须准而不同",如果有一个性能很差的模型出现在第一层,将会严重影响整个模型融合的效果。

通过上述的描述,大家没有发现其实2层的stacking 其实和两层的神经网络有些相像,只不过stacking将神经网络第一层的神经元换成了强大的机器学习模型