本文讲述Stacking入门级应用的学习历程。学习过程中感谢@贝尔塔的模型融合方法,以及Kaggle初战如何进入前10%的文章(作者张凌浩)。谢谢你们提供的信息。同时,Kaggle上也有一些关于ensemble的文章和代码,比如这篇。本文适合被堆叠折磨的新手。在网上为数不多的堆砌内容中,我已经假设你已经阅读了上面提到的有用文章。然而,看完之后,我的心依旧处于低谷之中。希望以下内容能为你在曲折的stacking学习道路上点亮一盏小火炬,为你提供一丝微弱的光亮。本文使用Kaggle的Titanic(泰坦尼克号预测)入门竞赛讲解stacking(两层!)的应用。数据行数:train.csv有890行,即890人,test.csv有418行(418人)。数据的列数取决于你保留了多少特征,这个因人而异。我自己的火车保持7+1(1是预测列)。在网上为数不多的堆砌内容中,相信你看过这张图:如果你能一下子看懂这张图,那就OK了。如果你不一下子理解它,你就会有麻烦。在接下来的一段时间里,你会继续迷茫……因为这张图绝对是‘误导’。(注意!我没说这张图是错的,虽然是错的!!!但是网上为数不多的教学中有一张无码图还是不错的,谢谢我的小弱鸡)。我换了张图:每轮5折,Model1要做5次fulltr??aining和predictions。Titanic栗子:TrainData有890行。(请对应图中上半部分)每折叠会生成713行smalltr??ain和178行smalltest。我们使用模型1训练一个713行的小火车,然后预测一个178行的小测试。预测的结果是一个长度为178的预测值,这种动作进行了5次!长度为178X5=890预测值的预测值,恰好与Train数据的长度重合。这个890的预测值是Model1产生的,我们先保存,因为后面要作为第二层模型的训练源。要点:我们可以将这一步生成的预测值转化为890X1(890行,1列),记为P1(大写P),则称TestData有418行。(请对应下图,是的,是的,那些绿色的方框)每折叠一次,713线小火车训练出来的Model1就要预测我们所有的TestData(全部!因为TestData确实不是加5倍,所以每次都是!)。此时模型1的预测结果是一个长度为418的预测值,重复5次!我们可以获得一个5X418的预测矩阵。然后我们对行进行平均以获得1X418的平均预测。要点:我们可以将这一步生成的预测值转化为418X1(418行,1列),记为p1(小写p)。到这里,你的一级Model1已经完成了它的使命。第一层还会有其他的Model,比如Model2。同样走一遍之后,我们可以得到890X1(P2)和418X1(p2)列的预测值。好吧,假设你在第一层有3个模型,所以你会得到:来自5倍的890X3预测值矩阵,(P1,P2,P3)和来自测试数据的418X3预测值矩阵,(p1,p2,第3页)。——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————……数据预测值矩阵418X3是您的测试数据,使用经过训练的模型来预测它们。——————————————***,放一段Python代码,在网上为数不多的堆砌内容中,这几行代码你已经看过了吧?一直卡在这里,现在补充一点,希望对你有帮助:
