machine-learning - Stacking、堆叠泛化算法

标签 machine-learning stacked ensemble-learning

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

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

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

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

  4. 该数据集用于训练元学习器(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 个折叠)来获得(希望)模型对未见数据的预测结果的无偏估计。然后将元模型拟合到这些模型(那里没有交叉验证)。

关于machine-learning - Stacking、堆叠泛化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39979136/

相关文章:

python - Python 子图中的作用域类似于 MATLAB 的 stackedplot()

c# - 使用后面的代码创建堆积条形柱形图

r - H20 - R 中的堆叠回归中的错误消息

python - 使用管道作为估计器的 VotingClassifier

c# - 集成学习,多分类器系统

python - Keras:嵌入句子数组作为输入

machine-learning - 用于大规模近重复文档检测的最先进方法?

optimization - 专门针对误报的二元分类目标

machine-learning - 将输入数据缩放到神经网络

python - 如何使用 pandas python 绘制堆积条形图