训练集、验证集、测试集的划分依据

训练集、验证集、测试集作用

  • 训练集用来调试神经网络
  • 验证集用来查看训练效果
  • 测试集用来测试网络的实际学习能力

训练集毋庸置疑,是用于模型拟合的数据样本,用来调试网络中的参数。我们容易混淆的是验证集和测试集:验证集没有参与网络参数更新的工作,按理说也能用来测试网络的实际学习能力;测试集本来也能就是用来测试效果的,按理来说也能查看训练效果。

我们换个说法或者详细一些可能就会明白了:

验证集(validation set): 查看模型训练的效果是否朝着坏的方向进行。验证集的作用是体现在训练的过程。举个栗子:通过查看训练集和验证集的损失值随着epoch的变化关系可以看出模型是否过拟合,如果是可以及时停止训练,然后根据情况调整模型结构和超参数,大大节省时间。

测试集(test set): 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。测试集的作用是体现在测试的过程。

对原始数据进行三个数据集的划分,也是为了防止模型过拟合。当使用了所有的原始数据去训练模型,得到的结果很可能是该模型最大程度地拟合了原始数据,亦即该模型是为了拟合所有原始数据而存在。当新的样本出现,再使用该模型进行预测,效果可能还不如只使用一部分数据训练的模型。

测试集谁能来当

说到这里大家可能还会说,验证集没有参与网络参数更新的工作但是不能当测试集的原因还是没说啊,好,现在就来说一说。(下面的生动形象传神的比喻是Kieven2oo8提出的,博客我贴在了后面的参考里)

先来一个形象的比喻:

  • 训练集-----------学生的课本;学生根据课本里的内容来掌握知识。
  • 验证集-----------作业;通过作业可以知道不同学生学习情况、进步的速度快慢。
  • 测试集-----------考试;考的题是平常都没有见过,考察学生举一反三的能力。

传统上,一般三者切分的比例是:6:2:2,验证集并不是必须的。

  1. 训练集直接参与了模型调参的过程,显然不能用来反映模型真实的能力(防止课本死记硬背的学生拥有最好的成绩,即防止过拟合)。
  2. 验证集参与了人工调参(超参数)的过程,也不能用来最终评判一个模型(刷题库的学生不能算是学习好的学生)。
  3. 所以要通过最终的考试(测试集)来考察一个学(模)生(型)真正的能力(期末考试)。

测试集为了具有泛化代表性,往往数据量比较大,所以往往只取测试集的其中一小部分作为训练过程中的验证集。当然有的论文中没有设置验证集也是可以的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值