一、简介
stacking是基于blending的扩展。由blending原理可知,数据集被分成了三份,训练集和验证集其实都在起训练作用,只不过前者训练第一层分类器,后者训练第二层分类器。这样好吗?这样不好:首先,数据集划分的随机性会导致构建的模型不够稳健,也就是说,划分方式的改变可能会导致构建的模型差异很大;其次,划分后用作训练的数据集明显变小,得想办法再利用。stacking的思想就是把K折交叉验证引入训练过程,这样的话,第一层分类器和第二层分类器训练数据都会更加稳健、丰富。
二、个人理解
由于模型偏差来自于两方面:模型方差和模型偏差。blending的基本思想是提高模型复杂度减少模型偏差,但是训练数据集的变化和模型本身的变化都会造成模型方差的增加,而stacking则通过K折交叉验证的思路减少blending方差,从而提高集成模型精度。
直观来看,在数据集小的情况下,blending增加模型复杂度的同时可能会因数据不够带来相当大的方差,有可能得不偿失。。。