我正在对我的二元分类问题进行logistic回归,并使用k折叠交叉验证(k=10)对模型进行了验证。但是,我不明白为什么我需要一个最终的测试集:模型的性能不能基于k折叠验证(即,来自10个结果折叠的度量标准)进行评估吗?因为,模型没有真正“看到”测试数据,这不是K折叠的全部要点吗?因此,最终的测试集似乎是多余的,但它似乎也是常见的做法,我想知道为什么?我见过一些关于超参数调优/过拟合等的文章,但是logistic回归并没有太多的超参数可调。
那么,最终测试集的意义是什么?我需要它吗?还是从10倍中的每一次提供的性能度量都足以评估模型的性能?
发布于 2023-04-29 23:27:57
ChatGPT已经给出了一个非常好的答案:
虽然k倍交叉验证可以很好地估计模型在看不见的数据上的性能,但它并不完全取代对最终测试集的需求。其原因是,在模型开发过程中,即使使用k折叠交叉验证,也有可能做出意外地将模型与验证数据相匹配的选择。例如,您可以在k折叠验证集上尝试不同的模型或超参数,直到找到最佳组合为止,并且您可以选择在验证集上性能最好的模型,而不知道模型已被过度安装到验证集。最后的测试集然后用于评估模型在完全看不见的数据上的性能,从而更准确地估计模型在现实世界中的表现。此外,最后的测试集还可以用来比较不同模型的性能,这些模型使用k倍交叉验证进行了调整。这是因为模型可能在验证集上执行类似的操作,但是在测试集上有不同的性能,这可以揭示它们的泛化能力的重要差异。
尽管如此,我还要补充一点,在验证阶段,我几乎从来没有被考虑过,根据我的经验,应该这样做。(我相对于ChatGPT lol的小优势)
通常的列车测试分割和CV使用随机分裂,这是为了衡量模型-S预测能力的未见数据。然而,这种方法失去了重要的信息,这是数据生成的时间组件。
实际上,在每个受监督的问题中,您都有不同时间生成的数据,因此应该进行完整的模型评估,以便保证模型能够预测未知的样本,但也可以预测未见的和最近的样本。
下面显示的图片描述了如何分割数据,以便我们可以测试前面提到的点。

所以要有这样的分裂,你应该
in-time test setout time test set。这样,您评估的不仅仅是您的模型性能,还包括您的模型对特性分布随时间的自然变化的弹性。
希望您看到,测试集并不像最初看起来的那样冗余。
希望能帮上忙!
https://datascience.stackexchange.com/questions/121105
复制相似问题