Stacking
Table of Contents
1. Stacking 简介
Stacking 是一种集成学习(Ensemble Learning)方法,它于 1992 年由 David H. Wolpert 提出。
2. Stacking 算法
Stacking 先从初始数据集训练出“初级学习器”,然后“生成”一个新数据集用于训练“次级学习器”(也称为“元学习器,meta-learner”)。 在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
Stacking 的算法描述如图 1 所示。Stacking 的初级学习器可以是任意分类器,次级学习器一般使用 Multi-response linear regression ,次级学习器的输出作为整个学习器的输出。
Figure 1: Stacking 算法
比如,有下面训练数据:
假设共有两个初级学习器,第 1 个初级学习器
2.1. 防止过拟合
在训练阶段,次级学习器的训练数据由初级学习器产生,若直接用初级学习器的训练集来产生次级训练集,则过拟合的风险会比较大;因此,一般是通过使用交叉验证或留一手(Hold-Out)这样的方式, 用训练初级学习器未使用的样本产生次级学习器的训练样本。
比如,在前面介绍的例子中,第 1 个初级学习器
3. 参考
《机器学习,周志华,2016》,8.4.3,学习法