数据集的划分,验证集参与训练了吗?

本文介绍了在机器学习和深度学习中数据集的划分,主要分为训练集、验证集和测试集。验证集用于在每个epoch后评估模型性能,帮助调整超参数,但不直接参与训练。测试集则用于最终评估模型的泛化能力,确保模型未过拟合训练数据。数据集划分比例通常依据数据量大小,小数据量时可能不设验证集,大数据量时验证集和测试集占比约1%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集的划分,验证集参与训练了吗?

前言

在周志华老师的《机器学习》这本书中,我们知道训练机器学习以及深度学习的模型的时候,对数据集需要进行划分,通常划分成训练集和测试集,一般我们还会对训练集进行再划分一部分作为验证集。
在这里插入图片描述

一、验证集怎么用?

验证集参与训练了吗?

从《机器学习》这本书中,我们知道,训练集是拿来训练模型参数的,对于所有的训练集,训练一个epoch之后,我们会用验证集来测试一下模型在上面的性能,由于训练集和验证集的不可交性,所以在验证集上面的结果是有参考意义的。

但是重点是:
1. 验证集并没有参与训练过程梯度下降过程的,狭义上来讲是没有参与模型的参数训练更新的。
2. 但是广义上来讲,验证集存在的意义确实参与了一个“人工调参”的过程,我们根据每一个epoch训练之后模型在valid data上的表现来决定是否需要训练进行early stop,或者根据这个过程模型的性能变化来调整模型的超参数,如学习率,batchsize等等。
3. 因此,我们也可以认为,验证集也参与了训练,但是并没有使得模型去overfit验证集

二、为什么需要测试集?

训练集就是用来训练参数的,说准确点,一般是用来梯度下降的。而验证集基本是在每个epoch完成后,用来测试一下当前模型的准确率,然后调整超参数。因为验证集跟训练集没有交集,因此这个准确率是可靠的。那么为啥还需要一个测试集呢?

这就需要区分一下模型的各种参数了。事实上,对于一个模型来说,其参数可以分为普通参数超参数。在不引入强化学习的前提下,那么普通参数就是可以被梯度下降所更新的,也就是训练集所更新的参数。
另外,还有超参数的概念,比如网络层数、网络节点数、迭代次数、学习率等等,这些参数不在梯度下降的更新范围内。尽管现在已经有一些算法可以用来搜索模型的超参数,但多数情况下我们还是自己人工根据验证集来调。

那么就很明显了,我们还需要一个完全没有经过训练的集合,那就是测试集,我们既不用测试集梯度下降,也不用它来控制超参数,只是在模型最终训练完成后,用来测试一下最后准确率,确定模型的泛化能力强弱。

三、数据集的划分比例

一般情况而言划分比例:
数据量较小(传统机器学习)
没有验证集,训练集:测试集=7:3
有验证集,训练集:验证集:测试集=6:2:2

在这里插入图片描述

数据量较大(大数据划分)
假设有100W条数据,只需要拿出1W条来当验证集,1W条来当测试集,就能很好地work了。
在这里插入图片描述
因此,在深度学习中若是数据很大,我们可以将训练集、验证集、测试集比例调整为98:1:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值