ensemble-stacking

测试blog


  • 相比 Blending,Stacking 能更好地利用训练数据。以 5-Fold Stacking 为例,它的基本原理如图所示:
    stacking processing
  • 整个过程很像 Cross Validation。
    对于一个model,首先将训练数据分为 5 份,接下来一共5个迭代,每次迭代时,将 4 份数据作为 Training Set 对每个 Base Model 进行训练,然后在剩下一份 Hold-out Set 上进行预测。那么一个model训练最终将合成一个完整对于原始训练样本的预测单列矩阵。

  • 同时也要将其在测试数据上的预测保存下来。这样,每个 Base Model 在每次迭代时会对训练数据的其中 1 份做出预测,对测试数据的全部做出预测。

  • 多个model迭代都完成以后我们就获得了一个 #训练数据行数 x #Base Model 数量 的矩阵,这个矩阵接下来就作为第二层的 Model 的训练数据。当第二层的 Model 训练完以后,将之前保存的 Base Model 对测试数据的预测(因为每个 Base Model 被训练了 5 次,对测试数据的全体做了 5 次预测,所以对这 5 次求一个平均值形成一列,多个model形成多列,从而得到一个形状与第二层训练数据相同的矩阵)拿出来让它进行预测,就得到最后的输出。


总的来说,Stacking 方法比任何单一模型的效果都要好,而且不仅成功应用在了监督式学习中,也成功应用在了非监督式(概率密度估计)学习中。甚至应用于估计bagging模型的错误率。据论文Feature-Weighted Linear Stacking(Sill, J. and Takacs, G. and Mackey L. and Lin D., 2009, arXiv:0911.0460)而言,Stacking比Bayesian Model Averaging表现要更好!此外在Kaggle上,很多比赛多是通过Stacking获取优秀的结果!

Comments