Stacking, Stacked泛化算法
Stacking, Stacked generalization Algorithm
我正在尝试了解堆叠的工作原理,但到目前为止我不确定我是否理解正确。到目前为止,这是我的理解:
我们用完整的数据集训练每个 k 基础学习器(0 级)。
我们让每个 k 基学习器预测整个数据集。
我们根据 k 基础学习器的所有预测创建一个新数据集。新数据集看起来像我们的原始数据集+每个基学习器的预测。
此数据集用于训练元学习器(level-1)。
我的问题:
- 到目前为止是否正确?
- 我经常读到交叉验证以某种方式用于堆叠,但我想不通,它是如何使用的?或者它甚至是我所缺少的重要部分?
非常感谢
您的理解基本正确!在
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 个折叠)来获得(希望)模型对未见数据的预测的无偏估计。然后你将元模型拟合到那些(那里没有交叉验证)。
我正在尝试了解堆叠的工作原理,但到目前为止我不确定我是否理解正确。到目前为止,这是我的理解:
我们用完整的数据集训练每个 k 基础学习器(0 级)。
我们让每个 k 基学习器预测整个数据集。
我们根据 k 基础学习器的所有预测创建一个新数据集。新数据集看起来像我们的原始数据集+每个基学习器的预测。
此数据集用于训练元学习器(level-1)。
我的问题:
- 到目前为止是否正确?
- 我经常读到交叉验证以某种方式用于堆叠,但我想不通,它是如何使用的?或者它甚至是我所缺少的重要部分?
非常感谢
您的理解基本正确!在
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 个折叠)来获得(希望)模型对未见数据的预测的无偏估计。然后你将元模型拟合到那些(那里没有交叉验证)。