我为数据集构建了不同的分类模型(逻辑回归、随机森林和 xgboost)。我想结合所有模型的预测来减少方差并增加鲁棒性。我读到仅仅平均所有模型的预测并不是最好的组合方式。此外,理想情况下,与其他低性能模型相比,性能良好的模型应该被赋予更多的权重。有人可以建议我如何为每个模型分配权重吗?或者我应该对所有 3 个模型从 0.01 迭代到 0.9,并根据每个组合的错误分类率来决定权重?
组合不同模型的权重
机器算法验证
模型平均
预测组合
2022-03-20 02:38:31
1个回答
Stacking (Wolpert 1992) 是一种使用高级模型组合多个基本模型的方法。每个基本模型的输出作为高级模型的输入提供,然后对其进行训练以最大化性能。使用相同的数据来训练基础模型和高级模型会导致过度拟合,因此使用交叉验证代替。每个基础模型都在训练集上进行训练。然后通过每个基本模型馈送验证集,以获得用于训练高级模型的输入。这种技术有时被称为混合,当使用一个简单的、保留的验证集而不是交叉验证时。堆叠可用于不同类型的问题(例如分类、回归、无监督学习)。它在实践中运行良好,已成为机器学习竞赛中的流行工具。
在您的情况下,基本模型将是逻辑回归、随机森林和 xgboost。这些模型中的每一个都给出了预测的类概率,这些概率将用作高级模型的输入。一般来说,基本模型没有必要输出类概率,但我们可以在可用时使用它们。一个简单的高级模型可能是来自每个基本模型的预测类别概率的加权平均值。在这种情况下,您会找到最小化验证集对数损失的权重(受权重为非负且总和为 1 的约束)。一个替代的高级模型可能是逻辑或多项逻辑回归(即使基础模型输出分数而不是概率,如支持向量机,它也会起作用)。更高级的模型也是可能的(随机森林,
一般来说,最好的高级模型将取决于问题。已经发现,对高级模型的特定约束在某些设置中是有帮助的。请注意,高级模型可能会过度拟合验证集(例如,请参见此处)。
参考:
沃尔珀特 (1992)。堆叠泛化。
布雷曼 (1996)。堆叠回归。
丁和威滕 (1999)。堆叠泛化中的问题。
Kaggle 集成指南(博客文章,2015 年)