训练集、验证集和测试集区别

我们在进行模型评估和选择的时候,先将数据集随机分为训练集、验证集和测试集,然后用训练集训练模型,用验证集验证模型,根据情况不断调整模型,选择其中最好的模型,再用训练集和测试集训练模型得到一个最好的模型,最后用测试集评估最终的模型。

  • 训练集

训练集是用于模型拟合数据样本。

  • 验证集

是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。在神经网络中,用验证集去寻找最优的网络深度,或者决定反向传播算法的停止点,或者在神经网络中选择隐藏层神经元的数量。验证集是可以多次使用的,来不断调节参数。

缺陷:模型在一次次重新手动调参并继续训练后所逼近的验证集,可能只代表一部分非训练集,导致训练好的模型泛化能力不够。

  • 测试集

用来评估最终模型的泛化能力,但不能作为调参、选择特征等算法相关的依据,测试集只能使用一次。

为什么要用交叉验证?

如果验证集较大,那么训练集就会变得很小,如果数据集本身就不大的话,显然这样训练出来的模型就不好。如果验证集很小,那么此验证误差就不能很好地反映出泛化误差。此外,在不同的划分方式下,训练出的不同模型的验证误差波动也很大(方差大)。到底以哪次验证误差为准?谁都不知道。但是如果将这些不同划分方式下训练出来的模型的验证过程重复多次得到的平均误差可能就是对泛化误差的一个很好的近似。

  • 交叉验证法

就是尝试利用不同的训练集或者验证集来对模型进行多组不同的训练或者验证,来解决对单独测试结果过于片面以及训练数据不足的问题。

K折交叉验证法就是将数据(除去测试集的数据)分成相对来说数据量相同但是数据互不相交的k份,依次从K份中选出1份作为验证集,其余K-1份作为训练集,这样就进行了K次单独的模型训练和验证,最后将K次验证结果取平均值,作为模型的验证误差。

交叉验证博客:https://zhuanlan.zhihu.com/p/113623623

posted on 2022-03-02 20:33  啥123  阅读(1772)  评论(0编辑  收藏  举报