交叉验证是验证集的合适替代品吗?

机器算法验证 机器学习 分类 交叉验证 文本挖掘
2022-01-18 06:11:00

在文本分类中,我有一个包含大约 800 个样本的训练集和一个包含大约 150 个样本的测试集。测试集从未使用过,等待使用到最后。

我正在使用整个 800 个样本训练集,在调整和调整分类器和特征时进行 10 倍交叉验证。这意味着我没有单独的验证集,但每次用完 10 折,就会自动选择一个验证集。

在我对一切都满意并想要进入评估的最后阶段之后,我将在整个 800 个样本上训练我的分类器。并在 150 个样本测试集上进行测试。

我对文本分类中交叉验证的这种用法的理解正确吗?这种做法有效吗?

交叉验证的另一个问题是:

而不是 10 倍,我还尝试留下一个作为性能的一般指标。因为对于留一法,不可能有关于 f1/precision/recall 的信息,我想知道留一法的准确性和 10 倍的指标之间的关系是什么?

任何见解将不胜感激。


编辑:

是对交叉验证的一个很好的介绍。它也指其他研究论文。

1个回答

您确实正确地描述了使用交叉验证的方式。事实上,你很幸运在最后有一个合理的验证集,因为通常交叉验证用于优化模型,但没有进行“真正的”验证。

正如@Simon Stelling 在他的评论中所说,交叉验证将导致较低的估计错误(这是有道理的,因为您不断重用数据),但幸运的是所有模型都是这种情况,因此,除非发生灾难(即:错误只会减少对于“坏”模型稍有一点,对于“好”模型则更多),选择在交叉验证标准上表现最佳的模型通常也是“真实”的最佳模型。

有时用于稍微纠正较低错误的方法,特别是如果您正在寻找简约模型,是选择最小模型/最简单方法,其交叉验证误差在(交叉验证)最优值的一个 SD 范围内。作为交叉验证本身,这是一种启发式方法,因此应谨慎使用(如果这是一个选项:根据调整参数绘制错误图:这将使您了解是否有可接受的结果)

考虑到错误的向下偏差,重要的是不要发布来自交叉验证的错误或其他性能度量,而不要提及这些来自交叉验证(尽管说实话:我见过太多的出版物没有提到性能度量是通过检查原始数据集的性能获得的——所以提到交叉验证实际上会让你的结果有价值)。对你来说,这不是问题,因为你有一个验证集。

最后的警告:如果您的模型拟合导致了一些接近的竞争对手,那么最好在之后查看他们在您的验证集上的表现,但不要您的最终模型选择基于此:您最多可以使用它来缓解您的良心,但是在您查看验证集之前,您的“最终”模型必须已经被选中。

写你的第二个问题:我相信西蒙已经在他的评论中给出了你需要的所有答案,但是为了完成图片:通常,它是在发挥作用的偏差 - 方差权衡。如果您知道,平均而言,您将获得正确的结果(无偏性),那么代价通常是您的每个单独计算可能与它相差甚远(高方差)。在过去,无偏见是 nec 加超,在当今,人们有时会接受(小)偏见(所以你甚至不知道你的计算的平均值会导致正确的结果),如果它导致较低的方差。经验表明,10 折交叉验证的平衡是可以接受的。对你来说,偏差只会是你的模型优化的一个问题,因为您可以在之后(无偏见地)在验证集上估计标准。因此,几乎没有理由不使用交叉验证。