我一直在尝试在 Kaggle 上完成这个回归任务。像往常一样,他们提供了一个 train.csv(带有响应变量)和一个 test.csv(没有响应变量)文件,分别供我们训练模型和计算我们的预测。
我进一步将 train.csv 文件拆分为 train_set 和 test_set。我使用这个后续的 train_set 来训练一个模型列表,然后我将仅基于 10 倍交叉验证分数 (RMSLE) 和超参数调整后将其列入一个模型。现在我有一个最好的模型,它是随机森林(具有最佳超参数),平均 RMSLE 得分为 0.55。在这一点上,我还没有触及 test_set。
因此,当我在 train_set 数据上训练相同的精确模型,但在 test_set 上评估其结果时(为了避免过度拟合我调整过的超参数),它会产生 0.54 的 RMSLE 分数。这是我开始怀疑的时候,因为我在 test_set 上的分数略好于 train_set 的平均分数(test_set 结果应该稍微差一点,因为模型没有看到 test_set 数据,对吧?)。
最后,我继续使用相同的模型但使用 test.csv 文件(没有响应变量)提交我的结果。但后来 Kaggle 给了我 0.77 的 RMSLE 分数,这比我的交叉验证分数和我的 test_set 分数差很多!
我对为什么会发生这种情况感到非常沮丧和困惑,因为我相信我已经采取了一切措施来预测我的模型会过度拟合。请给出详细而简单的解释,我还是初学者,所以我可能不太了解技术术语。