我试图了解堆栈的工作原理,但到目前为止,我不确定我是否正确理解堆栈。所以这是我到目前为止所了解的:
我们将使用完整的数据集训练每个k个基础学习者(级别0)。
我们让k个基础学习者中的每一个都预测整个数据集。
我们根据k个基础学习者的所有预测创建一个新的数据集。新数据集看起来像我们的原始数据集+每个基础学习者的预测。
此数据集用于训练元学习者(级别1)。
我的问题:
到目前为止,这正确吗?
我经常读到交叉验证以某种方式用于堆栈,但是我不知道该如何使用它?还是我想念的东西甚至是必不可少的部分?
非常感谢
最佳答案
您的理解基本上是正确的!上
新数据集看起来像我们的原始数据集+每个基础学习者的预测。
人们可以使用每个基础学习者的原始功能和预测,但是当人们谈论堆叠时,他们通常仅使用每个基础学习者的预测。
我经常阅读交叉验证以某种方式用于堆栈,但是我不知道该如何使用它?还是我想念的东西甚至是必不可少的部分?
是的,交叉验证通常与堆栈一起使用。发生的事情是,按照您的描述进行操作时,元模型(您称其为1级)可能会与基础模型所做的预测过度拟合,因为每次预测都已经看到了整个数据集。
因此,您要做的是交叉验证,然后将数据分解为k折。您可以使用第k个展开的折叠中的预测(遍历所有k个预测)来获得(希望)模型在看不见的数据上预测的无偏估计。然后,您将元模型适合那些模型(那里没有交叉验证)。
关于machine-learning - 堆叠,堆叠泛化算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39979136/