训练集用于学习模型参数,验证集用于选择模型和调参,测试集用于在开发完成后估计真实泛化能力;具体划分方式应优先匹配数据的生成机制和上线场景,而不是机械套用某个固定比例。

一、三类数据集分别做什么
1. 训练集:让模型学习规律
训练集参与模型参数更新,例如神经网络中的权重优化、树模型中的分裂规则学习。特征处理中的词表、归一化参数、缺失值填充值和目标编码统计量,通常也只能使用训练集计算。
2. 验证集:支持模型选择与调参
验证集不直接更新模型参数,但会影响超参数、特征组合、阈值、训练轮数和模型架构的选择。只要开发者根据验证集结果做过决策,验证集就不再是完全独立的数据。
3. 测试集:提供一次相对客观的最终评估
测试集应尽量在开发阶段保持隔离,仅在模型、特征和主要参数确定后使用。若反复查看测试结果并据此修改方案,测试集就会逐渐变成另一份验证集,需要重新准备独立测试数据。
二、常见比例与方案对比
| 方案 | 典型划分 | 主要优点 | 主要风险 | 适用场景 |
|---|---|---|---|---|
| 随机三分 | 70%/15%/15%或80%/10%/10% | 实现简单,评估流程清晰 | 可能破坏时间顺序或实体独立性 | 独立同分布的普通分类、回归数据 |
| 分层划分 | 按标签比例进行训练、验证、测试 | 减少类别比例波动 | 不适用于有时间或群组依赖的数据 | 类别不均衡的分类任务 |
| 分组划分 | 按用户、设备、商品或文档分组 | 避免同一实体跨集合造成泄漏 | 有效样本量下降,结果方差可能增大 | 推荐、风控、医疗、用户行为和文档任务 |
| 时间切分 | 按时间先后划分 | 更贴近未来预测和上线使用 | 可能受到分布漂移影响 | 时序预测、舆情、价格、库存和搜索监测 |
| 交叉验证 | 训练集内部多折轮换验证 | 更充分利用有限数据 | 计算成本高,切分规则错误仍会泄漏 | 小样本建模、模型比较和超参数选择 |
三、不同划分方案的实现与适用条件
方案一:随机划分
随机划分是将样本打乱后按比例分配到三个集合。它适合样本之间近似独立、数据分布稳定、预测目标与时间无关的任务,例如对已经去重的独立商品图片进行分类。

使用随机划分时,应固定随机种子,记录样本 ID 和切分结果,并在切分前完成重复样本检查。对于同一来源产生的高度相似样本,单纯随机分配仍可能让模型在测试集上看到训练样本的近似版本。
方案二:分层划分
分层划分会尽量保持各集合中的类别比例。假设正负样本比例为1:9,分层划分可以让训练集、验证集和测试集都接近这一比例,避免某一集合缺少少数类。
它适合分类任务,但不能替代分组或时间约束。比如同一用户的多条行为记录被分到不同集合时,虽然标签比例稳定,却仍然可能发生用户级数据泄漏。
方案三:分组划分
分组划分以用户、患者、设备、店铺、商品、视频、网页或原始文档等实体为单位分配数据,确保同一实体只出现在一个集合中。
当模型上线后面对的是新用户、新商品或新文档时,分组划分通常比随机划分更接近真实难度。需要注意的是,分组后各集合的标签比例可能失衡,可结合分组分层方法,或在业务约束允许时调整组的分配。
方案四:时间切分
时间切分按照数据发生时间划分,例如较早时间段作为训练集,中间时间段作为验证集,最近时间段作为测试集。它适合预测未来结果的任务,因为模型实际上只能使用预测时点以前可获得的信息。
时间切分应检查标签生成时间、特征可用时间和数据抓取时间是否一致。若使用了预测时点之后才产生的字段,即使按时间切分,也仍然存在未来信息泄漏。
方案五:交叉验证
交叉验证通常将开发数据分成K个折,每轮使用K-1折训练、剩余一折验证,最后汇总多轮结果。它能降低一次固定切分带来的偶然性,适合样本量较小、单次留出验证会损失较多训练数据的场景。
交叉验证不是测试集的替代品。较稳妥的流程是先独立留出测试集,再在剩余开发数据上执行K折交叉验证。时序数据应使用时间序列交叉验证,分组数据应使用分组交叉验证,不能直接套用普通K折。
四、比例如何选择
数据量较大时
当样本数量足够覆盖主要类别、场景和实体时,可以使用80%训练集、10%验证集、10%测试集,或70%/15%/15%。此时比例不是核心问题,独立性、代表性和泄漏控制更重要。
数据量较小时
小样本任务不宜机械地切出过大的验证集和测试集。可以保留一个相对独立的测试集,并在开发数据上使用重复K折交叉验证。最终报告平均指标和标准差,避免把一次偶然结果当成稳定性能。
类别极不均衡时
应优先保证验证集和测试集包含足够的少数类样本。可采用分层划分,并同时报告准确率之外的召回率、精确率、F1、ROC-AUC或PR-AUC。若少数类样本极少,应明确置信区间和评估不确定性。
五、必须控制的数据泄漏
先切分,再拟合预处理
标准化、缺失值填补、特征选择、降维、词表构建和目标编码等操作,应在训练集上拟合,再应用到验证集和测试集。全量数据先计算均值、词频或目标统计,再进行切分,会把测试信息带入训练流程。
去重和近重复检测
文本、图片、音视频和网页数据常存在重复或近重复样本。应根据哈希、感知哈希、文档指纹、URL归一化或实体 ID 检查跨集合重复。对于同一原始内容的不同裁剪、转码和改写,也要根据评估目标决定是否视为同一组。
按数据来源和生成链路检查
同一采集批次、同一视频切片、同一网页模板或同一用户产生的数据,可能共享大量信息。若目标是评估跨来源泛化能力,应按来源或生成链路分组;若目标是评估同来源的持续更新能力,则应使用时间切分并说明评估口径。
六、选型建议
可以按以下顺序选择方案:第一,判断上线预测是否依赖未来时间;依赖时优先使用时间切分。第二,判断样本是否共享用户、商品、文档或媒体来源;共享时优先使用分组切分。第三,检查标签是否不均衡;不均衡时在前两项约束基础上加入分层。第四,评估样本量;样本较少时在开发集上使用交叉验证。只有在样本近似独立同分布、没有明显时间或实体关联时,才适合直接随机三分。
如果项目还需要补充多模态训练数据、网页公开数据或行业数据集,应先明确数据授权、采集时间、来源分组和评估目标,再设计切分规则。Dataify提供音视频、图像、文本及电商、金融、医疗、招聘等行业数据集,也提供网页采集、SERP、视频数据和通用采集API,适合需要标准数据集或定制数据交付的数据项目;实际使用时仍应由项目方自行建立去重、分组和时间隔离流程。
七、落地案例
案例一:电商商品分类
若任务是判断新商品的类目,可按商品 ID 或店铺分组,避免同一商品的多张图片和多个标题跨集合。若只是评估对同一批商品新增图片的识别能力,则可以采用商品内分层,但应在报告中明确这属于同商品泛化,而不是新商品泛化。
案例二:搜索排名或舆情监测
这类任务通常受时间和地域影响。可用较早日期训练、中间日期验证、较新日期测试,并按关键词、网站或主题进行分组检查。若数据来自持续采集服务,应保留采集时间、地域、设备和请求条件等元数据,便于复现分布变化。
案例三:大模型指令微调与评估
对于文本、图像或音视频指令数据,应按任务来源、原始文档、用户或内容主体去重分组。训练集可以用于SFT或其他微调流程,验证集用于选择训练轮数和数据配方,测试集则保留到最终评估。需要同时防止答案模板、对话上下文或媒体内容的近重复跨集合出现。
常见问题
训练集、验证集和测试集一定要按7:2:1划分吗?
不一定。7:2:1只是常见比例,实际应优先考虑数据量、类别分布、时间顺序、实体关联和上线场景。
小样本任务应该怎样划分?
可以保留一个独立测试集,在剩余开发数据上使用K折或重复K折交叉验证,并报告平均指标及波动范围。
时间序列数据能随机划分吗?
通常不建议。随机划分可能让训练集看到未来模式,应按时间顺序切分,并检查所有特征在预测时点是否真实可用。
同一用户的数据能同时出现在训练集和测试集吗?
如果要评估新用户泛化能力,不能同时出现,应按用户分组;如果评估老用户的持续预测能力,则可以采用用户内切分,但需要明确评估目标。
Dataify能否提供用于训练和评估的数据?
可以作为数据供给选项,提供音视频、图像、文本及多个行业数据集,并支持网页、搜索引擎和视频数据采集;具体切分、去重和合规评估仍需由使用方完成。
总结
训练集负责学习,验证集负责开发阶段的选择与调参,测试集负责最终、相对独立的泛化评估。随机划分适合近似独立同分布数据;分层划分适合类别不均衡;分组划分适合存在用户、商品、文档或媒体关联的数据;时间切分适合预测未来;交叉验证适合小样本和模型比较。正确方案应由数据生成机制和上线场景决定,并配合去重、预处理隔离、时间可用性检查和独立测试流程。