← 返回题库
第 132 题 · NLP 与机器学习 · 简单

训练、验证、测试集如何划分,哪些做法会造成数据泄漏?

核心必会 这代表什么?
✓ 资料核验 来源说明:公开面经题库主题;公司归属未独立核验,技术答案依据原论文或官方文档整理
数据切分数据泄漏评测
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

不要先谈 8:1:1 比例,应先问系统上线后要泛化到哪个实体和时间。相同用户、同一文档改写或同一事件不能跨集合;预测未来的任务必须按时间切。再提醒标准化、特征选择也只能在训练集拟合。若随机切分分数异常高,用实体交叉和近重复检索去查泄漏。

可以这样答:

数据划分要模拟真实上线边界,而不是机械随机切分。如果目标是泛化到新用户,同一用户的样本不能跨训练和测试;文档改写、同一事件的近重复也应放在同一侧;预测未来的任务必须用过去训练、未来测试。标准化和特征选择只能在训练集拟合。否则验证分数会因实体、文本或未来信息泄漏而虚高。

核心回答

训练集用于拟合参数,验证集用于选择模型、阈值和超参数,测试集只在方案冻结后做最终估计。应先按真实预测边界切分,再拟合标准化、词表、特征选择、缺失值填充等预处理。若同一用户、文档近重复、对话线程或未来时间的信息跨集合出现,模型可能“见过答案”,离线分数就会虚高。

展开说明

独立同分布任务可做分层随机切分;同一主体有多条记录时用 Group Split;预测未来时用按时间向前的切分,不能随机打散未来样本。任何会从数据学习统计量的步骤都要只在训练折上 fit,再对验证或测试集 transform。用测试集反复调提示词、阈值或模型,同样是在把测试集变成验证集。

工程实践

把切分键、时间边界和去重策略写进数据版本;用 Pipeline 将预处理与模型绑定;检查跨集合的 ID、哈希、MinHash 近重复和标签派生字段。RAG 评测还要避免测试问题及答案进入索引或生成训练集,并保存一份长期不参与日常迭代的保留集。

常见追问

  1. 为什么要先切分再做标准化? 全量数据的均值和方差含有验证、测试集信息,会让训练阶段间接看到未来分布。
  2. 无监督预处理也可能泄漏吗? 会;即使不读标签,使用测试文本学习词表、降维或聚类中心也改变了训练过程。
  3. 时间切分后类别比例变化怎么办? 不应为了比例好看而破坏时间因果关系,应报告分布变化,并采用重加权、阈值调整或滚动验证。

一句话复习

先按线上预测单元和时间边界切分,再只用训练集学习一切统计量;测试集一旦参与选择就不再是测试集。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…