可以使用LOOCV在整个数据集上评估我的模型性能吗?

假设我最初将数据集分为训练集(80%)和测试集(20%),对训练集进行10折交叉验证,并获得平均R²值为75%。之后,我在测试集上检查最佳模型的准确性,得到R²值为74%,这表明模型相当稳健。现在,在将模型部署到实际应用之前,我用整个数据集对其进行了调整。有人问我模型的近似R²值;如果我说74%或75%,我将忽略这样一个事实:模型现在是用更多的数据(测试集)调整过的。使用整个数据集对所选模型进行留一法交叉验证(LOOCV),将预测目标与实际目标进行比较,检查R²值(假设现在是80%),然后说现实世界的模型很可能具有80%的R²,这种方法是否合理?我认为没有问题,但不知道这种方法是否正确。


回答:

确实,你应该在整个数据集上重新训练模型,这可能会带来性能提升。然而,在这种情况下,你的整个数据集不应该包括训练集和测试集!它应该只是训练数据集,但不进行任何交叉验证。因此,之前你有80%的数据用于训练,并且进行了10折交叉验证,这意味着你实际上是在完整数据(训练集+测试集)的72%上训练模型,并保留8%用于验证。现在,你应该在整个80%的数据上进行训练,并再次在未见过的测试集上报告你的最终结果。

如果你在训练集+测试集上进行LOOCV,你就无法报告在验证样本上的性能表现,因为这是模型微调的方式,你甚至可能会过度拟合验证数据。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注