· Xiaojing Yang · Machine Learning · 4 min read
EN训练集、验证集和测试集
如何划分训练集、验证集和测试集,才能让模型评估保持诚实。
核心观点
测试集不是用来做决策的,而是用来检验决策之后是否可靠的。
1. 为什么数据划分重要
机器学习不只是拟合模型,而是估计模型在没见过的数据上会怎样。如果训练和评估之间共享了信息,分数就会过于乐观。
学习参数
选择特征、模型、阈值和超参数
根据验证集证据改进
最终检查
监控真实数据
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 会保护之后每一个分数的意义。
面试回答模板
如果面试问到这个概念,我会分四层回答:
- 先给短定义;
- 再讲直觉;
- 指出常见失败模式;
- 最后连接到真实评估或部署决策。