Stacking, Stacked泛化算法

Stacking, Stacked generalization Algorithm

我正在尝试了解堆叠的工作原理,但到目前为止我不确定我是否理解正确。到目前为止,这是我的理解:

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

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

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

  4. 此数据集用于训练元学习器(level-1)。

我的问题:

  1. 到目前为止是否正确?
  2. 我经常读到交叉验证以某种方式用于堆叠,但我想不通,它是如何使用的?或者它甚至是我所缺少的重要部分?

非常感谢

您的理解基本正确!在

The new data set looks like our original data set + the predictions of each base learner.

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

I often read that cross validation is somehow used for stacking, but i could not figure out, how it is used? Or is it even an essential part, that I'm missing?

是的,交叉验证通常与堆叠一起使用。发生的情况是,当您按照您的描述进行操作时,元模型(您称之为 1 级)可能会根据基本模型所做的预测过度拟合,因为每个预测都是在看到整个数据集后进行的。

所以你要做的是交叉验证,并将数据分成 k 折。您使用对第 k 个保留折叠的预测(循环遍历所有 k 个折叠)来获得(希望)模型对未见数据的预测的无偏估计。然后你将元模型拟合到那些(那里没有交叉验证)。