集成学习指的是很多不同的方法。提振和装袋可能是最常见的两个。看来您正在尝试实现一种称为stacking的整体学习方法。堆叠旨在通过组合几种学习算法的预测来提高准确性。有很多方法可以进行堆叠,但是没有很多严格的理论。它是直观且受欢迎的。
考虑你朋友的方法。您要在五折中的四折上拟合第一层模型,然后使用相同的四折来拟合第二层(投票)模型。问题在于第二层将青睐具有最低训练误差的模型。您正在使用相同的数据来拟合模型并设计一个过程来聚合那些模型。第二层应使用样本外预测来组合模型。您的方法更好,但是有一种方法可以做得更好。
为了测试目的,我们将继续不遗余力。进行四折,并使用四折CV获得所有四折上每个第一层模型的样本外预测。也就是说,忽略四折之一,将模型拟合其他三折,然后根据保留的数据进行预测。对所有四折重复上述操作,以便获得所有四折的样本外预测。然后将第二层模型拟合到这些样本外预测。然后在所有四个折痕上再次拟合第一层模型。现在,您可以进入尚未触及的第五折。使用适合所有四个折叠的第一层模型以及第二层模型来估计保留数据上的误差。您可以使用第一层和第二层模型拟合之外的其他折痕再次重复此过程。
如果您对性能满意,则在所有五个折痕上生成第一层模型的样本外预测,然后在第二个模型上拟合第二层模型。然后最后一次将第一层模型适合所有数据,并将其与第二层模型一起用于任何新数据!
最后,一些一般性建议。如果您的第一层模型彼此完全不同,您将获得更多收益。您在这里使用SVM和决策树在正确的道路上,两者之间有很大的不同。由于第二层模型具有平均效果,因此您可能希望尝试增量地过度拟合第一层模型,特别是如果您有很多模型的话。第二层通常很简单,并且权重的非负性和单调性之类的约束很常见。最后,请记住,堆叠依赖于交叉验证,交叉验证只是对真实风险的估计。如果您对折线的错误率和模型权重的差异非常大,则表明基于简历的风险估计具有较高的方差。在这种情况下,您可能需要考虑简单的混合您的第一层模型。或者,您可以通过限制每个第一层模型上的最大/最小权重进行堆叠来妥协。