在堆叠泛化中,如果我理解得很好,我们将训练集划分为训练集/测试集。我们使用训练集来训练 M 个模型,并对测试集进行预测。然后我们使用预测作为新模型的输入。因此,新的训练集将具有对应于 M 个模型预测的 M 个特征。最后,我们使用最后一个模型进行最终预测。首先,我的理解正确吗?如果是这样,如何使用最后一个模型进行预测,因为它具有不同的特征。
1 级模型的预测如何成为堆叠泛化中新模型的训练集。
数据挖掘
集成建模
2021-10-13 20:05:21
1个回答
您已经创建了一个模型管道,并且必须运行所有经过训练的模型(首先是“较低级别”的模型)才能使用堆栈对新数据进行预测。
使用测试数据集,它会稍微容易一些,因为您可以在测试时存储“级别 1”模型的预测,并且只在这些存储的数据上运行最终模型。
除了您的简要描述外,通常为了避免重复使用训练数据的偏差,您会使用 k 折交叉验证或类似机制,最终模型的训练数据应该是每个模型的 cv 预测。您不想使用这些模型的训练预测,因为它们可能会过拟合,而“1 级”测试和生产预测则不会,这会在“2 级”中引入训练数据和测试数据之间的总体差异模型。
使用“1 级”模型中的 M 个新功能以及部分或全部原始功能也是一种很常见的变体。这为元模型提供了更多数据,以在决定第一阶段模型之间的相对权重时作为决策依据(假设此顶级模型是非线性的)。