题目重点:VO pair programming 在 Jupyter Notebook 用杂乱数据建分类模型;先跑通可复现基线,再解释缺失、切分和泄漏。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练版表格数据有目标列 y、数值与类别特征,缺失/异常值可能存在;分类二元或多类需看真实目标。
- 先按任务适用单位划分 train/validation(时间序列按时间、同用户数据按用户),再在训练集拟合填补、编码与缩放。
- 模型从简单基线起步;不把作者当时的风控团队描述当所有 MLE 岗位固定数据或标签。
解题路线
- 开头确认目标列、正类、预测时刻可用特征、评价指标与数据泄漏风险;快速看 shape、类型、缺失率、类别分布和几行样本。
- 先切 train/validation,再建 pipeline:数值特征以训练集统计量填补、类别特征以未知类别可处理的编码转换;丢弃 ID/后验字段,选择少量可信特征。
- 用 dummy baseline 与一个简单模型如 logistic regression 或小树对比,先在 notebook 跑通 fit→predict→metric;类不平衡时同时看 Recall/Precision、PR-AUC 或任务代价。
- 错误分析挑 FP/FN 切片,检查缺失、极端值、时间漂移;若有时间再加特征,不在未验证前提下堆复杂模型。
- 向面试官解释为何选切分、特征、填补与指标,标清没有时间做的试验;保存随机种子与管线,保证 notebook 从头运行可复现。
手动走一遍
训练例:表里有 user_id、交易金额、事后人工审核结论。若预测交易提交时的风险,审核结论是标签或后验信息,不能作为输入特征;同 user 多行随机散进 train/test 可能高估泛化,应按预测目标选择 user/时间切分。
规模与取舍
N 行、D 特征:初步统计 O(ND),简单线性模型每轮训练约 O(ND),one-hot 类别扩展后维度可能显著增大;具体上限看真实数据。题目无规模与 SLA。
易错点与追问
容易失分的边界
- 在全数据上填补/标准化后再切分,验证集信息泄漏。
- 先花大半轮调复杂模型,端到端基线未运行。
- 用事后才知道的字段预测事前事件。
- 只报 accuracy,忽略类别不平衡与业务成本。
- Notebook 随机运行顺序导致重启后无法复现。
继续深挖
- 如何在 45 分钟内证明没有泄漏?
- 标签非常不平衡时选什么指标?
- 缺失本身可能有信号,怎样编码?
- 离线好、线上差先查哪几类漂移?
