堆叠,堆叠泛化算法

时间:2016-10-11 14:05:56

标签: machine-learning stacked ensemble-learning

我试图理解堆叠是如何工作的,但到目前为止我还不确定我是否理解正确。所以这是我到目前为止所理解的:

  1. 我们使用完整的数据集训练每个 k 基础学习者(第0级)。

  2. 我们让每个 k 基础学习者预测整个数据集。

  3. 我们根据 k 基础学习者的所有预测创建新数据集。新数据集看起来像我们的原始数据集+每个基础学习者的预测。

  4. 此数据集用于训练元学习者(第1级)。

  5. 我的问题:

    1. 到目前为止这是正确的吗?
    2. 我经常读到交叉验证以某种方式用于堆叠,但我无法弄清楚,它是如何使用的?或者它甚至是一个必不可少的部分,我错过了?
    3. 非常感谢

1 个答案:

答案 0 :(得分:3)

您的理解大多正确!在

  

新数据集看起来像我们的原始数据集+每个基础学习者的预测。

一个可以使用每个基础学习者的原始特征+预测,但是当人们谈论堆叠时,他们通常只使用每个基础学习者的预测。

  

我经常读到交叉验证以某种方式用于堆叠,但我无法弄清楚,它是如何使用的?或者它甚至是一个必不可少的部分,我错过了?

是的,交叉验证通常与堆叠一起使用。当你按照你所描述的那样进行时,元模型(你称之为第1级)可以从基础模型所做的预测中过度拟合,因为每个预测都是在看过整个数据集之后进行的。

所以你要做的就是交叉验证,并将数据分解为k-folds。您使用第k个保持折叠的预测(循环通过它们的所有k)来获得(希望)无偏估计模型将预测未见数据。然后你将元模型拟合到那些(没有交叉验证)。