· Xiaojing Yang · Machine Learning · 4 min read

EN

训练集、验证集和测试集

如何划分训练集、验证集和测试集,才能让模型评估保持诚实。

核心观点

测试集不是用来做决策的,而是用来检验决策之后是否可靠的。

1. 为什么数据划分重要

机器学习不只是拟合模型,而是估计模型在没见过的数据上会怎样。如果训练和评估之间共享了信息,分数就会过于乐观。

健康的开发循环
Train
学习参数
Validation
选择特征、模型、阈值和超参数
Iterate
根据验证集证据改进
Test
最终检查
Deploy
监控真实数据

2. 三个集合的角色

数据集角色不该做什么
训练集学习参数当成最终表现报告
验证集做开发选择当成完全未使用的证据
测试集最终估计反复拿来调参

Google MLCC 里一个非常好的直觉是:validation/test set 会被反复使用“磨损”。这句话面试里很好用。

3. sklearn 例子

from sklearn.model_selection import train_test_split

X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.30, random_state=42, stratify=y)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.50, random_state=42, stratify=y_temp)

4. AI/NLP 连接

NLP 里随机划分不一定安全。近重复文档、翻译版本、同一作者、同一话题、同一来源文档,都可能跨集合泄漏。在领域机器翻译里,如果同一句对同时出现在训练和测试中,系统会显得比真实情况更强。

好的划分

有代表性、去重,并且接近真实部署总体。

坏的划分

看似随机,但被重复、时间泄漏或来源重叠污染。

总结

数据划分是实验设计。干净的 split 会保护之后每一个分数的意义。

面试回答模板

如果面试问到这个概念,我会分四层回答:

  1. 先给短定义;
  2. 再讲直觉;
  3. 指出常见失败模式;
  4. 最后连接到真实评估或部署决策。

参考资料

Share:
Back to Blog

Related Posts

View All Posts »