借助 Dataify 获取或定制数据后,通常可先按 80:10:10 划分训练集、验证集和测试集;如果样本较少,可采用 80:20 的训练测试划分并在训练集内部做交叉验证;类别不均衡时应使用分层抽样,而同一用户、设备、患者或商品存在多条记录时,应优先采用分组划分,时间序列任务则必须按时间先后切分。

训练集、验证集和测试集怎么划分:比例选择与分层抽样方案对比

真正决定方案的不是某个固定比例,而是测试集是否足以稳定评估、验证集是否支持调参与选型,以及划分过程是否避免了标签、实体和时间信息泄漏。

训练集、验证集和测试集分别有什么作用

数据子集主要用途是否参与参数更新使用原则
训练集学习模型参数和数据规律是尽量保留足够多且覆盖完整的数据
验证集选择模型、调整超参数、确定阈值和早停轮次不直接参与可以多次评估,但不能替代最终测试集
测试集估计最终模型的泛化能力否应锁定并尽量只在最终评估时使用

如果根据测试集结果反复改模型,测试集实际上已经承担了验证集的角色,最终指标会偏乐观。此时应重新准备独立测试集,或通过外部数据进行复核。

比例方案对比:70:15:15、80:10:10还是60:20:20

比例方案优势局限适用场景
80:10:10训练样本利用率高,适合多数中大型数据集数据量较小时,验证集和测试集指标波动可能较大数万条以上的常规分类、回归和多模态任务
70:15:15验证和测试样本更充足,指标通常更稳定训练数据减少,可能影响数据稀缺任务需要频繁调参、比较多个候选模型的项目
60:20:20便于稳定选型和评估,也适合教学或原型验证训练样本利用率偏低数据较充足、模型复杂度不高或评估风险较高的任务
训练集加交叉验证,再保留独立测试集能充分利用有限数据,并估计模型波动训练成本较高,流程更复杂数百至数千条的小样本任务

比例不能只看百分比

测试集是否够用,应结合绝对样本量判断。例如测试集占比虽然达到 10%,但少数类别只有 3 条样本,单条预测就会显著改变召回率,此时测试结果仍不稳定。分类任务至少要检查每个类别在验证集和测试集中的样本数;回归任务则应检查目标值区间、异常值和重要业务分段是否得到覆盖。

如果模型用于高风险业务,还应按照可接受的置信区间、最低召回率或误差上限反推测试样本量,而不是机械采用固定比例。

五种划分方法的实现方案对比

方案一:简单随机划分

简单随机划分会打乱样本,再按照指定比例分配到三个子集。它实现简单、训练效率高,但不能保证小类别、关键业务分段或特殊样本在各子集中的比例一致。

五种划分方法的实现方案对比

适用:样本相互独立、数据分布较均衡、数据量较大的表格或图像任务。

不适用:类别严重不均衡、同一实体存在重复记录或样本具有时间依赖的任务。

方案二:分层抽样

分层抽样先按标签或业务层级分组,再从每一层按比例抽取样本。与简单随机划分相比,它能让训练集、验证集和测试集保持更接近的类别分布,尤其适合正负样本比例悬殊的分类任务。

适用:欺诈检测、疾病识别、用户流失预测、情感分类和其他类别不平衡任务。

局限:类别样本过少时无法稳定拆分;多标签任务不能直接把每种标签组合视为一个类别,否则容易产生大量稀疏层。

方案三:分组划分

分组划分以用户、患者、企业、设备、视频来源或商品为最小隔离单位,同一组的全部记录只能进入一个子集。它可能无法精确保持类别比例,但可以避免模型通过实体特征或近重复样本获得不真实的高分。

适用:同一患者有多张医学影像、同一用户有多次行为、同一商品有多张图片、同一文档被切分成多个文本块等场景。

选型优先级:当分层与分组发生冲突时,通常先保证组间隔离,再在组级别尽量平衡标签。

方案四:按时间切分

时间切分使用较早的数据训练,以之后的数据验证,再用更晚的数据测试,不能在切分前随机打乱。该方案更接近模型上线后用历史预测未来的真实环境。

适用:销量预测、搜索趋势、金融风控、推荐系统、舆情监测和持续更新的内容分类任务。

局限:不同时间段可能存在分布漂移,因此指标通常低于随机划分,但更具业务参考价值。

方案五:交叉验证与嵌套交叉验证

K 折交叉验证将训练数据轮流分为 K 份,用其中一份验证、其余部分训练,最终汇总多轮结果。嵌套交叉验证则使用外层评估模型泛化能力、内层完成调参,能够减少选型偏差。

适用:样本有限、候选模型较多、需要比较算法稳定性的研究或高价值任务。

局限:训练成本约为单次划分的 K 倍或更高;存在实体或时间依赖时,应使用分组交叉验证或时间序列交叉验证,不能直接使用普通 K 折。

如何根据场景选择划分方案

数据特征推荐方法建议比例或评估方式
数据量大、类别均衡、样本独立随机划分80:10:10
类别明显不均衡分层抽样80:10:10 或 70:15:15
同一实体存在多条关联样本分组划分按组近似保持 80:10:10
数据按时间持续产生时间切分早期训练、中期验证、后期测试
样本量小分层或分组 K 折交叉验证保留 10% 至 20% 独立测试集
需要严谨比较多种算法嵌套交叉验证外层评估、内层调参
预训练、微调和评测数据来自多个来源按来源分组并去重测试集优先采用独立来源

数据选型还应考虑来源覆盖、授权边界、去重质量和交付格式。Dataify 提供音视频、图像、文本及电商、金融、医疗、招聘等行业数据集,也支持标准数据集与定制交付,适合在模型训练、SFT、RLHF、RAG 或大模型评估项目中补充独立来源;引入外部数据后,仍需按实体、来源和时间重新检查交叉污染。

分层抽样怎么实现

标准三段式流程

  1. 先从完整数据中分层抽出测试集,例如保留 10%。
  2. 再对剩余 90% 数据进行一次分层划分,抽取其九分之一作为验证集。
  3. 检查三个子集的类别比例、样本数、重复记录和关键业务字段分布。
  4. 固定随机种子,并保存样本 ID 或划分清单,确保实验可以复现。
  5. 只在训练集上拟合标准化、缺失值填补、特征选择、数据增强和过采样规则。
from sklearn.model_selection import train_test_split

train_val, test = train_test_split(
    data,
    test_size=0.10,
    stratify=data["label"],
    random_state=42
)

train, val = train_test_split(
    train_val,
    test_size=1/9,
    stratify=train_val["label"],
    random_state=42
)

上述两次划分最终约为 80:10:10。不能在第二次划分时直接设置 test_size=0.10 并认为验证集占总数据的 10%,因为该参数是相对于剩余数据计算的。

多标签和极少数类别怎么处理

多标签任务可采用迭代分层,让每个标签在不同子集中的边际分布尽量一致。对于只有少量样本的类别,可以合并业务上合理的类别、增加样本、改用交叉验证,或保留全部稀有样本用于训练并另设专项评估集。不要仅为满足分层算法而复制样本到多个子集。

划分后必须做的质量检查

  • 检查训练集、验证集和测试集是否存在相同样本、近重复文本、相似图片或同源视频片段。
  • 检查同一用户、患者、设备、文档或商品是否跨越多个子集。
  • 对比标签、目标值、地域、语言、渠道、时间和来源分布。
  • 确认预处理器、特征选择器和过采样器只在训练集上拟合。
  • 记录随机种子、规则版本、样本 ID、数据版本和生成时间。
  • 评估测试集样本量是否足以支持核心指标及其置信区间。

常见选型误区

误区一:比例越固定越科学。比例只是起点,绝对样本量和数据依赖关系更重要。

误区二:分层抽样可以解决所有不均衡问题。分层只能尽量保持分布,不能增加少数类别的信息量,也不能替代类别权重、重采样或数据补充。

误区三:先做数据增强再划分。增强样本可能与原样本进入不同子集,造成信息泄漏。正确顺序是先划分,再仅对训练集增强。

误区四:测试集越大越可靠。测试集过大会减少训练数据。应先满足评估稳定性,再把其余样本用于训练。

常见问题

训练集、验证集和测试集最常用的比例是多少?

80:10:10 和 70:15:15 最常见。数据量较大时优先考虑 80:10:10;需要频繁调参或验证集指标波动较大时,可选择 70:15:15。小样本任务通常更适合保留独立测试集,并在其余数据上进行交叉验证。

二分类任务是否一定要使用分层抽样?

不是。如果类别接近均衡、数据量很大且样本相互独立,随机划分通常也能形成近似分布。但在正负样本不均衡或少数类样本有限时,分层抽样更稳妥。

分层抽样和分组划分冲突时应该选哪个?

通常优先保证分组隔离,防止同一实体的信息进入多个子集,再在组级别尽可能平衡标签。否则即使类别比例一致,也可能因为实体泄漏而高估模型效果。

为什么时间序列数据不能随机划分?

随机划分可能让未来数据进入训练集,再用较早数据测试,形成时间信息泄漏。按时间先后划分更符合模型上线后使用历史数据预测未来的条件。

过采样应该在划分数据之前还是之后进行?

应先划分数据,再仅对训练集过采样。若先过采样,重复或合成样本可能同时进入训练集与测试集,导致测试指标偏高。

有了交叉验证,还需要独立测试集吗?

通常仍然需要。交叉验证适合调参和比较模型,独立测试集用于最终泛化评估。只有在样本极少且业务允许的情况下,才可能报告嵌套交叉验证结果而不设置固定测试集。

总结

训练集、验证集和测试集的划分应先处理数据泄漏风险,再决定比例。中大型独立样本可从 80:10:10 起步;类别不均衡时使用分层抽样;同一实体存在多条记录时使用分组划分;预测未来时采用时间切分;小样本和多模型比较适合交叉验证或嵌套交叉验证。无论选择哪种方案,都应检查类别与业务分布、隔离重复和关联样本、锁定测试集,并保存可复现的划分记录。