当前位置: 首页 > 测试知识 > 人工智能机器学习训练集、验证集、测试集的作用与划分
人工智能机器学习训练集、验证集、测试集的作用与划分
2026-08-17 作者cwb 浏览次数173

机器学习中的三个数据集用一个比喻就特别好懂:

训练集是课本和习题

证实集是模拟考试卷

测试集是高考卷

作用和划分方法。


1. 各自的作用

训练集(Training Set):让模型背书

作用:用于训练模型参数,让模型从数据中学习特征和规律。梯度下降、权重更新都在这个集合上完成。

目的:让模型在训练集上的损失(Loss)尽可能低。


证实集(Validation Set):当裁判选模型

作用:不参与训练,只用于调参。用来调整超参数(如学习率、网络层数)、选择特征,以及防止过拟合。

目的:考虑不同配置下的模型泛化能力,选出表现最好的一组超参数。注意,证实集反馈的信息会被人类用来修改模型,所以模型“间接”看到了证实集。


测试集(Test Set):当考官出分数

作用:全程封存,只在模型完全定稿后一次性使用。用于考虑模型在完全未知数据上的最后泛化性能。

目的:给出模型的准确率/误差,作为业务上线或论文投稿的依据。严禁根据测试集的结果回头去调模型,否则就是数据泄露,导致分数虚高。


2. 常用的划分比例

划分比例取决于数据总量:

数据量较大(百万级以上):训练集98%,证实集1%,测试集1%。大数据不需要太多证实和测试样本,够用就行。

数据量中等(万级~十万级):经典的 6:2:2 或 7:1.5:1.5。

数据量较小(几千条):建议少分测试集,多留训练数据,比如 6:2:2,或者干脆不用固定测试集,改用交叉证实。


3. 划分方法

绝对红线:在划分之前,必须先打乱数据。如果数据是按时间或类别排序的,直接取前70%会导致训练集和测试集分布不一致。


针对特殊情况,划分方法要调整:

小数据集:不用训练/证实/测试三份,改用 K折交叉证实(。把数据分成K份(如5份),轮流拿4份训练、1份证实,取平均分。此时一般不再单独设测试集,或用另一个独立留出集。

时序数据:绝对禁止随机划分! 必须按时间顺序切分。如用2020-2024年的数据做训练+证实,用2025年的数据做测试。用未来预测过去是毫无意义的。

类别极度不均衡:使用分层抽样,保证训练集、证实集、测试集中正负样本的比例和原始数据集保持一致。


4. 容易犯的错误

窥探测试集:这是最严重的学术不端。哪怕只根据测试集的结果改了一次参数,测试集就沦为了证实集,报告的成绩就不可信了。

数据泄露:在划分之前做了数据归一化(Standardization)。正确做法:先用训练集的均值和标准差拟合 Scaler,再变换证实集和测试集。如果先用全量数据算均值和方差,证实集和测试集的信息就已经污染了训练集。

证实集和测试集分布不一致:保证证实集和测试集来自同一个数据分布。如果训练集是网上爬的清晰图片,测试集是手机拍的模糊图片,再怎么调参也没用。


文章标签: 软件测试
咨询软件测试