我对交叉验证方法和训练验证测试方法有疑问。
有人告诉我,我可以将数据集分成 3 个部分:
- 训练:我们训练模型。
- 验证:我们验证和调整模型参数。
- 测试:从未见过的数据。我们得到一个无偏的最终估计。
到目前为止,我们已经分为三个子集。直到这里一切都好。附上一张图片:
然后我遇到了 K-fold 交叉验证方法,我不明白的是如何将测试子集与上述方法联系起来。意思是,在 5 折交叉验证中,我们将数据分成 5 份,在每次迭代中,非验证子集用作训练子集,验证用作测试集。但是,就上述示例而言,k-fold 交叉验证中的验证部分在哪里?我们要么有验证,要么有测试子集。
当我提到自己训练/验证/测试时,“测试”就是得分:
模型开发通常是一个两阶段的过程。第一阶段是训练和验证,在此期间,您将算法应用于您知道结果的数据,以揭示其特征和目标变量之间的模式。第二阶段是评分,在此阶段您将训练好的模型应用于新数据集。然后,它以分类问题的概率分数和回归问题的估计平均值的形式返回结果。最后,您将经过训练的模型部署到生产应用程序中,或使用它发现的见解来改进业务流程。
谢谢!
我想从https://towardsdatascience.com/train-validation-and-test-sets-72cb40cba9e7
训练数据集 训练数据集:用于拟合模型的数据样本。我们用来训练模型的实际数据集(神经网络中的权重和偏差)。模型会看到这些数据并从中学习。验证数据集验证数据集:用于在调整模型超参数时对模型拟合在训练数据集上的无偏评估的数据样本。随着验证数据集的技能被纳入模型配置,评估变得更加有偏见。验证集用于评估给定模型,但这是用于频繁评估。作为机器学习工程师,我们使用这些数据来微调模型超参数。因此,模型偶尔会看到这些数据,但从未从中“学习”。我们(主要是人类,至少截至 2017 年 😛 )使用验证集结果并更新更高级别的超参数。因此,验证集以某种方式影响模型,但间接影响。
测试数据集 测试数据集:用于对训练数据集拟合的最终模型进行无偏评估的数据样本。
测试数据集提供了用于评估模型的黄金标准。它仅在模型完全训练后使用(使用训练集和验证集)。测试集通常是用来评估竞争模型的(例如在许多 Kaggle 比赛中,验证集最初与训练集一起发布,而实际测试集仅在比赛即将结束时发布,并且是决定获胜者的测试集上的模型的结果)。很多时候验证集被用作测试集,但这不是一个好的做法。测试集通常是精心策划的。它包含仔细采样的数据,这些数据跨越了模型在现实世界中使用时将面临的各种类。
我想说的是:**考虑到这一点,我们仍然需要 TEST 拆分才能很好地评估我们的模型。否则我们只是在训练和调整参数,而不是把模型带到战场**