训练集、验证集和测试集分别做什么?

训练集用于学习参数,验证集用于选择方案,测试集只在最后评估一次模型的真实泛化能力。

学习路线:AI 入门与 PyTorch 基础(1~20) · 第 6 课
Learning Path

AI 入门与 PyTorch 基础(1~20)

从 AI 基本概念、机器学习任务、深度学习直觉、PyTorch 入门到中文文本分类项目全貌。

学完本阶段你能做到:能说清 AI、机器学习、深度学习、PyTorch 训练流程和一个中文文本分类项目的大致链路。

推荐读法:零基础建议顺序阅读;已有基础的读者可以把它当作路线地图和查漏补缺清单。

查看完整阶段 · 20 篇
Lesson Guide

这一课怎么学

先看目标,再带着问题读正文。读完后用练习确认自己真的理解了。

本节你会学到

  • 说清楚「训练集、验证集和测试集分别做什么?」解决的核心问题
  • 知道它在「AI 入门与 PyTorch 基础(1~20)」中的位置
  • 把 训练集、验证集和测试集、机器学习、分类与回归 这些关键词联系起来

前置知识

  • 建议先读完上一篇:特征、标签和数据集是什么?模型到底从什么里面学习
  • 能区分输入、输出、数据和模型目标。

概念回顾

  • 【训练集、验证集和测试集】训练集负责学习,验证集负责选择方案,测试集负责最后验收。 前面或后面会反复用到它。
  • 【机器学习】机器学习的重点不是手写所有规则,而是准备数据、定义目标,让模型自己找到可复用的模式。 前面或后面会反复用到它。
  • 【分类与回归】判断邮件是不是垃圾邮件是分类,预测房价是多少是回归。 前面或后面会反复用到它。
  • 【过拟合】过拟合就像背答案,训练题都会了,但真正考试时不一定会。 前面或后面会反复用到它。

核心概念

常见误区

  • 不要只记定义,要追问它解决了什么问题。
  • 不要只看一个指标,要结合任务目标判断模型是否真的有用。

课后练习

  • 用 3 句话向一个零基础朋友解释「训练集、验证集和测试集分别做什么?」。
  • 打开概念库里的「训练集、验证集和测试集」,补一遍它和本文的关系。
  • 读下一课「准确率、精确率、召回率和 F1 到底怎么看?」前,先写下你认为它会解决的问题。

自检练习与参考答案

1. 为什么不能只看一个指标?

单一指标会掩盖类别不平衡、业务代价和错误分布。评估要结合任务目标、混淆矩阵和具体错误样本。

2. 什么时候准确率会误导你?

当类别不平衡或不同错误代价差异很大时,准确率可能很高但模型仍然没解决关键问题。

下一步建议读「准确率、精确率、召回率和 F1 到底怎么看?」。

如果让学生先看考试原题,再用同一套题评价学习效果,得到的高分并不能说明他真正掌握了知识。

机器学习也一样。为了知道模型能否处理没见过的数据,需要把数据分开使用。

第 6 课视频 · 训练集、验证集和测试集(约 1 分 19 秒)

训练集:让模型学习

训练集参与参数更新。

模型反复读取训练样本,计算预测误差,再根据误差调整参数。训练集通常占数据的最大部分。

模型在训练集上表现越来越好,只能说明它越来越熟悉这些训练数据,并不代表它能处理新数据。

验证集:帮助选择方案

验证集不用于直接更新模型参数,而是帮助我们做选择,例如:

  • 使用几层网络;
  • 学习率设置多少;
  • 训练多少轮;
  • 选择哪个模型版本;
  • 是否需要提前停止训练。

因为会反复根据验证结果调整方案,模型开发过程实际上也在间接适应验证集。

测试集:最后一次检查

测试集用于最终评估。它应该尽量模拟模型上线后真正遇到的新数据。

测试集不应该参与选模型、调参数或决定训练轮数。否则它就不再是独立的最终考试。

常见划分比例

没有适合所有项目的固定比例,常见起点包括:

训练集 70% / 验证集 15% / 测试集 15%
训练集 80% / 验证集 10% / 测试集 10%

数据很少时可以使用交叉验证。时间序列数据则不能随意打乱,通常需要按照时间先后划分。

划分前还要注意分布

分类任务中,如果某个类别本来就很少,随机划分后可能全部落在某一个集合里。可以使用分层抽样,让各集合中的类别比例更接近。

重复样本、同一用户数据或同一来源图片也可能跨集合泄漏,需要根据业务关系分组划分。

这一课先记住什么

  • 训练集学习参数;
  • 验证集选择方案;
  • 测试集进行最终评估。

下一课会回答:模型做完分类后,除了准确率,我们还应该看哪些指标?

Discussion

留言讨论