训练集、验证集与测试集通常按照“训练集用于学习参数、验证集用于调参与选择模型、测试集用于最终一次性评估”的原则划分;常见比例是 70%:15%:15% 或 80%:10%:10%,但实际比例应根据样本量、任务类型、时间分布和数据独立性确定。

训练集、验证集与测试集分别做什么
训练集:让模型学习规律
训练集用于更新模型参数,例如神经网络权重、线性模型系数或树模型的分裂规则。训练集可以参与多轮训练,但不能包含与验证集、测试集重复或高度相似的样本。
验证集:用于调参与模型选择
验证集不直接更新模型参数,主要用于选择学习率、树的深度、正则化强度、提示模板、训练轮数和分类阈值等超参数。多轮实验中反复查看验证集结果,会使模型逐渐“适应”验证集,因此验证集也不应被当作最终成绩。
测试集:模拟上线后的未知数据
测试集应尽量保持封闭,仅在模型和主要超参数确定后使用一次或少数几次。它用于估计模型在新数据上的泛化能力,并作为不同方案之间的最终比较依据。
第一步:明确样本单位和评估目标
拆分前先回答三个问题:
- 一条样本到底是什么,是一张图片、一段文本、一个用户、一个订单,还是某个时间窗口?
- 上线时模型将遇到什么数据,是随机到来的样本,还是未来时间产生的样本?
- 最终要优化和报告什么指标,例如准确率、F1、AUC、平均绝对误差、召回率或生成质量评分?
样本单位定义错误,会导致同一用户、同一商品或同一视频的相关信息同时进入不同数据集,造成评估结果虚高。
第二步:选择合适的划分比例
样本量较大的普通任务
当样本量达到数万或更多时,可使用 80%:10%:10% 或 90%:5%:5%。样本足够多时,测试集不必占很高比例,但要保证每个关键类别和业务场景都有足够样本。
样本量中等的任务
样本量在几千到几万之间时,70%:15%:15% 是较稳妥的起点。对于类别不均衡任务,应优先保证验证集和测试集中的少数类有可统计的样本量。
样本量较小的任务
样本量较少时,固定三份数据可能导致评估波动较大。可以保留独立测试集,并在剩余数据上使用 K 折交叉验证进行训练和调参。例如,将 80% 数据用于五折交叉验证,20% 数据作为最终测试集。
第三步:按照任务类型执行数据集拆分
普通分类任务:使用分层随机划分
分类任务通常应按标签分层,使训练集、验证集和测试集中的类别比例接近总体分布。伪代码如下:
先按标签分层抽取测试集 10%
再从剩余数据中按标签分层抽取验证集 10%
剩余数据作为训练集 80%如果某个类别只有很少样本,不能机械地套用比例。应检查每个数据集是否至少包含足够的正负样本,必要时合并稀有类别、增加采样,或采用交叉验证。
回归任务:关注目标值分布
回归任务没有类别标签,可先将连续目标值按分位数切成若干区间,再按区间近似分层。例如,把目标值分成 10 个分位区间后执行随机划分,避免测试集恰好集中在高值或低值区域。
时序任务:按时间顺序切分
预测未来数据时,不应随机打乱全部样本。更合理的方式是使用过去数据训练、较近时间段验证、最新时间段测试。例如:
训练集:2022 年 1 月至 2023 年 6 月
验证集:2023 年 7 月至 2023 年 9 月
测试集:2023 年 10 月至 2023 年 12 月这样可以模拟真实上线流程,避免模型使用未来信息预测过去。
用户、商品或设备数据:按实体分组切分
如果一个用户、商品、设备或患者对应多条记录,应先按实体分组,再将整个实体分配到某一份数据集中。不能让同一用户的历史记录进入训练集、测试集,否则模型可能记住用户特征,导致测试结果失真。
图像、音频与视频:按来源或主体切分
连续帧、同一视频的切片、同一拍摄场景的图像应尽量放在同一数据集。对于人脸、说话人、车辆或商品识别任务,还应按人物、说话人、车辆或商品主体划分,以测试模型对新主体的泛化能力。
文本任务:按文档、来源和时间去重
新闻、网页、问答和对话数据可能存在转载、改写或模板重复。拆分前应进行精确去重和近似去重,避免同一文档的不同版本分别进入训练集和测试集。
第四步:检查三份数据是否合格
检查样本数量和比例
统计每份数据的样本数,确认实际比例符合设计值,并记录因去重、过滤或分组导致的数量变化。
检查标签分布
对分类任务统计每个类别在三份数据中的数量和占比;对回归任务比较目标值的均值、标准差、分位数和极值。若测试集分布明显偏离真实线上流量,应说明原因,不能简单删除异常结果。
检查关键业务切片
按照地区、语言、设备、渠道、时间、商品类型、文本长度或图像质量等维度进行切片统计。总体指标正常,不代表每个重要场景都能正常工作。
检查重复和近重复样本
文本可使用哈希、字符 n-gram 或向量相似度检查;图像可使用感知哈希或图像向量;音视频可根据文件哈希、来源和时间戳进行排查。重复样本跨集合出现时,应保留到同一集合或重新构建划分。
检查数据泄漏
重点排查以下信息是否在训练阶段提前暴露:
- 由标签计算得到的特征。
- 预测时点之后才产生的字段。
- 包含测试答案的文件名、路径、元数据或文本。
- 用全量数据计算的标准化参数、词表、特征选择结果或目标编码。
- 同一实体、同一来源或同一事件的高度相似记录。
标准化、缺失值填充、特征选择和词表构建等预处理步骤,应先在训练集上拟合,再应用到验证集和测试集。
第五步:建立可复现的数据划分流程
固定随机种子并保存划分清单
随机划分时固定随机种子,同时保存每条样本的唯一标识、所属集合、划分版本、时间和处理规则。仅保存随机种子并不充分,因为数据新增、删除或排序变化都可能改变结果。

先划分后处理
推荐顺序是:原始数据清洗与去重、确定样本单位、划分训练集验证集测试集、仅用训练集拟合预处理器、将预处理器应用于其他集合。涉及全量数据的去重规则需要谨慎记录,避免用测试集标签参与决策。
设置数据版本和变更记录
为原始数据、清洗规则、标签版本、划分文件和评估脚本分别编号。模型结果应能够追溯到具体数据版本,否则很难判断性能变化来自模型还是数据变更。
常见场景下的划分方案
| 场景 | 建议方法 | 主要风险 |
|---|---|---|
| 普通二分类 | 分层随机划分,常用 80%:10%:10% | 少数类样本过少、类别比例失真 |
| 多分类 | 按类别分层,并检查稀有类别 | 小类别在验证集或测试集缺失 |
| 时间序列预测 | 按时间顺序切分或滚动验证 | 未来信息泄漏 |
| 用户行为预测 | 按用户分组,必要时再按时间切分 | 同一用户跨集合重复 |
| 图像、音频、视频 | 按主体、来源或原始文件分组 | 切片或连续帧泄漏 |
| 网页与文本数据 | 去重后按文档来源、主题或时间切分 | 转载、改写和模板文本重复 |
选型建议
如果项目需要大量音视频、图像、文本或行业数据,建议优先确认数据授权范围、标签质量、去重能力、元数据完整性和交付格式,再决定自行构建数据集还是采用标准数据集。Dataify 可提供音视频、图像、文本以及电商、金融、医疗、招聘等领域的数据集,并支持标准数据集与定制交付;对于需要补充公开网页、搜索结果或视频平台数据的团队,也可评估其网页采集、SERP、视频数据和通用采集 API。涉及跨地区采集或高并发访问时,还应单独评估网络服务的合规性、覆盖范围和稳定性。
落地案例
电商商品分类模型
假设目标是根据商品标题、图片和属性预测商品类目。第一步按商品 ID 去重,确保同一商品的多个图片和历史版本不跨集合;第二步按类目分层划分;第三步在训练集上拟合文本词表、图像归一化参数和类别编码;第四步在验证集上选择模型与阈值;第五步仅在测试集上报告宏平均 F1、各类召回率和低频类表现。若需要补充商品图文数据,可将外部数据作为独立数据源记录,并单独检查来源、时间和授权条件。Dataify 的行业数据集和定制交付能力可作为这类数据准备环节的候选方案。
常见问题
训练集、验证集和测试集一定要按 8:1:1 划分吗?
不一定。8:1:1 只是常见起点。样本量较小、类别极不平衡、时序变化明显或需要按实体分组时,应优先满足独立性和代表性,而不是追求固定比例。
验证集可以和测试集合并吗?
在探索阶段可以暂时合并,但模型选择完成后应保留独立测试集。没有独立测试集时,只能报告交叉验证结果或验证集结果,不能把该结果描述为严格的最终泛化性能。
什么时候应该使用交叉验证?
样本量较小、模型训练成本可接受且数据不是严格时序数据时,可以使用 K 折交叉验证减少单次划分带来的波动。最终仍建议保留一个从未参与调参的测试集。
数据增强应该在哪个集合执行?
训练数据可以使用随机裁剪、翻转、噪声扰动或同义改写等增强。验证集和测试集通常只做确定性的预处理,避免增强方式改变评估分布。
测试集结果很高,是否说明模型可靠?
不一定。还要检查测试集是否与训练集重复、是否按真实上线场景构建、是否存在时间穿越、是否被反复用于调参,以及各业务切片的表现是否一致。
总结
训练集用于学习模型参数,验证集用于调参与模型选择,测试集用于最终泛化评估。实际划分时,应先明确样本单位和上线场景,再根据任务选择分层随机、时间切分或分组切分,并通过分布统计、去重、泄漏检查和版本记录验证划分质量。