资讯

模型验证是什么?用模型没见过的数据检验它的真实水平

2026-11-053 分钟阅读百科
TL;DR模型验证(Model Validation)是用独立于训练集的数据评估机器学习模型性能的过程,用来检验模型能否泛化到新数据、是否过拟合,常用方法包括留出验证集、K 折交叉验证和时间序列的滚动验证,也用于选择模型和调节超参数。

模型验证(Model Validation)是在一个独立于训练数据的数据集上,评估机器学习模型性能的过程。它是机器学习模型开发流程中重要的一步,可以帮助确保模型能够泛化到新的、从未见过的数据上,而不是只是过度拟合了训练数据。

为什么不能只看训练集上的表现

一个模型在训练数据上表现得很好,并不代表它真的学会了。就像一个学生把练习册上的题目和答案全都背了下来,做练习册时能拿满分,但一到考试遇到新题就不会了。模型也一样:它可能只是“记住”了训练数据,包括其中的噪声和偶然的规律,这叫过拟合。要知道模型在真实世界中会表现如何,必须用它在训练中从未见过的数据来检验。

数据的三种划分

机器学习中通常把数据分成三部分。训练集:用来训练模型,让模型从中学习规律。验证集:用来在开发过程中评估模型、比较不同的模型和超参数设置,比如选择哪种模型结构、学习率设为多少、训练多少轮该停止。测试集:在所有开发工作完成后,用来做最终的、一次性的评估,报告模型真实的性能。测试集必须严格保持独立,不能参与任何调整模型的决策;否则,反复根据测试集的结果调整模型,测试集就相当于变成了另一个验证集,最终的结果会过于乐观。

常见的验证方法

留出法:最简单的方法,直接从数据中留出一部分作为验证集,比如 80% 用于训练、20% 用于验证。简单快速,但结果可能受到具体怎么划分的影响,数据量小时尤其不稳定。K 折交叉验证:把数据平均分成 K 份,轮流用其中的一份作为验证集、其余 K 减 1 份作为训练集,重复 K 次,最后取平均的表现。这样每一份数据都既被用于训练、也被用于验证,结果更稳定可靠,常用于数据量不大的情况,代价是需要训练 K 次。分层抽样:在划分时保证各个类别在训练集和验证集中的比例一致,适用于类别不均衡的数据。时间序列验证:对于有时间顺序的数据,比如股价、销量,不能随机打乱划分,而必须用过去的数据训练、用未来的数据验证,模拟真实的预测场景,否则会出现用“未来信息”预测“过去”的问题。

需要警惕的问题

数据泄露:验证或测试数据的信息,不知不觉地混进了训练过程,比如在划分数据之前就对全部数据做了归一化处理,或者同一个病人的不同记录分别出现在了训练集和测试集中,都会让验证结果虚高。分布差异:验证数据应该尽量反映模型将来实际面对的数据,如果两者差异很大,验证结果就可能失去参考价值。在大模型时代,评测基准的题目可能已经混入了模型的训练数据,这种“数据污染”问题也让模型的真实水平更难判断。