XGBoost 在模型筛选测试集上的统计性能你好,
我正在使用模型筛选和嵌套交叉验证来比较多个机器学习模型对某种疾病的分类结果。XGBoost 在 ROC-AUC 和误分类率方面在测试集上表现最佳。但是,当我想通过执行决策阈值分析来更详细地查看其他统计数据时,我得到了所有其他模型的所有性能数据(F1 分数、MCC、灵敏度、规格等),但没有得到测试集中 XGBoost 的数据。这是为什么呢?我也想报告这些统计数据。请问有什么技巧可以让我获取 XGBoost 模型测试集的这些统计数据吗?
问候,
周一
基础数据分析与建模预测模型和机器学习回复:XGBoost 在模型筛选测试集上的统计性能你好@鲁 ,
只是为了澄清,决策阈值调整应该在验证集上进行,而不是在测试集上进行。
以下是有关所用术语及其用法的一些提醒:
- 训练集 :用于模型的实际训练,
- 验证集 :用于模型优化(例如超参数微调、特征/阈值选择等)和模型选择,
- 测试集 :用于对所选模型在新/未见数据上的泛化和预测性能评估。
验证集的目的是帮助比较和选择模型,以及微调超参数或决策阈值。
在模型训练和微调期间不应以任何方式使用测试集,因为它作为模型的最终公正“验证”和模型性能的最终评估。
您可以在以下对话中阅读有关验证集和测试集之间的区别的更多信息:
如果我们在 JMP pro 中将模型分别应用于测试数据和训练数据时,仍然在输出中看到“训练”和“验证”结果,那么为了仅获得测试和训练数据的结果,我们该怎么做呢? 交叉验证 - 验证列方法
...
关于您的具体问题,如果我没有记错的话,XGBoost 仅通过@russ_wolfinger创建的插件可用于 JMP Pro 版本,因此由于它是通过插件添加的功能,因此所有模型调整选项可能不可用(例如决策阈值。您可以在JMP 愿望清单上创建愿望,或在专用于XGBoost 插件的页面上撰写有关此情况的评论。
但是,如果 XGBoost 是表现最佳的模型,您可以:
- 首先将测试集与训练/验证数据分开!这样,模型在任何步骤都不会看到测试数据,并且只有在模型具有固定的超参数和决策阈值后才会使用测试数据。
- 在您的训练/验证数据集上创建K 折验证列。
- 启动 XGBoost 平台(从插件菜单),指定 K-folds 列验证:

- 运行XGBoost训练,并调整验证集上的决策阈值:

- 保存预测公式并评估测试集上的性能。
希望这个答案能对你有所帮助,
回复:XGBoost 在模型筛选测试集上的统计性能感谢@Victor_G的精彩回复
@鲁 ,想提一下,对于模型筛选,我们在 19 版中修复了一个泄漏问题——现在可以通过 Early Adopter 版本获取,并将在几周后正式投入生产。建议您在获取 19 版后重新运行。我相信 XGBoost 测试结果应该会出现,并且正如@Victor_G敏锐指出的那样,始终使用测试集拆分来比较模型。
注意:XGBoost 和 Torch 与其他 JMP 平台不同,它们仅使用双向拆分(训练和验证),但在训练期间不会窥视验证拆分,因此验证结果不会泄漏。它们的设置旨在进行完整的 K 折交叉验证,并保存超出折叠范围的预测,而不是进行单一的三向拆分。
一些额外的建议:
1. 尝试 XGBoost 中的“自动调整”选项,使用@Victor_G描述的独立设置。(插件中还附带一个实用程序“制作 K 倍列”。)您很可能可以获得更好的折叠外性能。
2. Torch 深度学习神经网络也绝对值得一试,为了获得绝对的最佳性能,可以将它们与 XGBoost 结合使用。
回复:XGBoost 在模型筛选测试集上的统计性能感谢 Victor 和 Ross 的精彩回复。我已经迫不及待地想看看 19 版模型筛选平台在不久的将来会带来哪些“新功能”!
问候,
游戏