集成学习指的是很多不同的方法。Boosting 和 bagging 可能是最常见的两种。您似乎正在尝试实现一种称为stacking的集成学习方法。Stacking 旨在通过结合几种学习算法的预测来提高准确性。有很多方法可以进行堆叠,而不是很多严格的理论。虽然它很直观且很受欢迎。
考虑你朋友的方法。您在五折中的四折上拟合第一层模型,然后使用相同的四折拟合第二层(投票)模型。问题是第二层将偏爱具有最低训练误差的模型。您正在使用相同的数据来拟合模型并设计聚合这些模型的过程。第二层应该使用样本外预测来组合模型。你的方法更好,但还有一种方法可以做得更好。
我们将继续留出一层用于测试目的。取四折并使用 4 折 CV 来获得所有四折上每个第一层模型的样本外预测。也就是说,省略四个折叠之一,将模型拟合到其他三个,然后根据保留的数据进行预测。对所有四个折叠重复,这样您就可以对所有四个折叠进行样本外预测。然后在这些样本外预测上拟合第二层模型。然后在所有四个折叠上再次拟合第一层模型。现在你可以去你还没有触及的第五折。使用适合所有四个折叠的第一层模型以及第二层模型来估计保留数据的误差。您可以再次重复此过程,并将其他折叠保留在第一层和第二层模型拟合之外。
如果您对性能感到满意,则在所有五个折叠上为第一层模型生成样本外预测,然后在这些上拟合第二层模型。然后在所有数据上最后一次拟合第一层模型,并将它们与第二层模型一起用于任何新数据!
最后,一些一般性的建议。如果您的第一层模型彼此完全不同,您将获得更多好处。使用 SVM 和决策树,您走在正确的道路上,它们彼此完全不同。由于第二层模型会产生平均效应,因此您可能需要尝试逐步过度拟合您的第一层模型,尤其是当您有很多模型时。第二层通常很简单,并且诸如权重的非负性和单调性之类的约束很常见。最后,请记住堆叠依赖于交叉验证,这只是对真实风险的估计。如果您在折叠中得到非常不同的错误率和非常不同的模型权重,则表明您的基于 cv 的风险估计具有很高的方差。在这种情况下,您可能需要考虑一个简单的混合你的第一层模型。或者,您可以通过在每个第一层模型上放置最大/最小权重的约束来进行妥协。