很有意思的问题,谈谈我的看法。
首先不了解的stacking的朋友可以认为它是一种集成框架,集多个不同模型的长处而产生更好的结果。和bagging相同,stacking也需要多个基分类器(base classifier),来构成差异化(diversity)。对比bagging和stacking:
stacking另一个比较特别的是层状结构。以常见的两层stacking为例,第一层是不同的基模型(多个),而第二层是以上一层基模型输出结果为输入数据的分类器(一个)。从某种意义上看,和神经网络的“结构相似”。为了防止过拟合,一般第二层的模型不再使用原始训练数据进行训练,而仅依赖于第一层训练器的输出结果。比较详细的介绍可以参考 @Kris Zhao 和 @峰峰 [1, 2]在知乎上回答,此处不再赘述。
stacking是否一定可以提升效果呢?是否集成后比单个基学习器要好?
那么问题来了,为什么依然有可能表现不佳?我有几个猜测:
所以你也看出来,我们都猜不到为什么你的模型不工作,或者stacking后大幅度下降。在有限的信息下,给出一些建议:
[2] 详解Stacking
[3] Van der Laan, M.J., Polley, E.C. and Hubbard, A.E., 2007. Super learner. Statistical applications in genetics and molecular biology, 6(1).
[4] Seewald, A.K., 2002, July. How to make stacking better and faster while also taking care of an unknown weakness. In Proceedings of the nineteenth international conference on machine learning (pp. 554-561). Morgan Kaufmann Publishers Inc..
[5] Džeroski, S. and Ženko, B., 2004. Is combining classifiers with stacking better than selecting the best one?. Machine learning, 54(3), pp.255-273.