k-folds 交叉验证是否比使用验证集更聪明?

Is k-folds cross validation a smarter idea than using a validation set instead?

我有一组稍大 (~2000) 的医学图像,我计划在我的工作场所使用它来训练 CV 模型(使用 efficentnet 架构)。为此,我阅读了一些训练医学图像的良好实践。我已按患者拆分数据集以防止泄漏,并按照 60:20:20 的顺序将我的数据拆分为 train:test:val。然而,我读到 k-folds 交叉验证是一种比使用验证集更新的实践,但我被建议不要这样做,因为 k-folds 应该要复杂得多。在这种情况下,您会推荐什么?还有其他好的做法可以采纳吗?

常见做法

在训练集上 train:test 与 cross-validation 拆分是许多机器学习模块中标准工作流程的一部分。有关示例和更多详细信息,我推荐优秀的 sklearn 文章。

实施

实现可能有点棘手,但考虑到假设您使用的是 TF 或 Pytorch 的许多代码示例(请参阅 this SO question),这不应让人望而却步。

您应该使用 k-fold 交叉验证吗?

与单个验证集相比,k-fold cross-validation 避免了 over-fitting 固定验证集的超参数,并通过利用整个训练集来更好地利用可用数据折叠,尽管计算成本更高。这是否会产生重大影响取决于您的任务。 2000 张图像在计算机视觉方面听起来并不多,因此充分利用这些数据可能与您相关,尤其是当您计划调整超参数时。