题目重点:围绕 Age、JobRole、MonthlyIncome、OverTime 等 HR 特征设计离职预测,明确预测时点、类别不平衡、评估和原因解释边界。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练版目标定义为‘预测时点之后 T 天内自愿离职’,T 与离职类型题目未明确,必须先与业务方定。
- 每个员工在预测时点形成一条样本,所有特征仅取该时点可用快照;数据集若只有静态最终状态,无法直接证明无泄漏。
- 模型用于风险排序和自愿支持,不自动惩罚员工;解释性的相关性不等于因果离职原因。
- 没有原 TSV,代码级数据清洗需等真实列定义、缺失率和时间戳后才写,不能虚构数据值。
解题路线
- 先确定行动:HR 希望对哪些员工、在何时、提前多久采取什么支持措施;据此确定标签窗口、漏报/误报成本、权限与隐私边界。
- 按员工与时间构造快照,检查 Age、JobRole、MonthlyIncome、OverTime 的缺失、异常、类别规模和采集时间;离职后的离职原因、最后一次薪资等字段不得进入预测前特征。
- 划分数据用时间前推且同一员工不能跨训练/验证泄漏;如果不同部门/地区分布差异显著,按群组报告误差和校准。
- baseline 可用正则化逻辑回归,XGBoost/树模型处理非线性与交互;类别不平衡用权重或采样,但评估需在原始部署比例上进行。
- 报告 PR-AUC、top-k precision/recall、校准及按群组的误报率;阈值按 HR 能处理的容量与干预成本选。对关键特征做 SHAP/部分依赖可用于模型解释,但不可把相关特征断言为离职因果。
- 上线先做影子评估和人工审核,监控特征新鲜度、漂移、干预覆盖率和长期结果;避免模型改变管理行为后标签机制失效。
手动走一遍
若某员工在 6 月 1 日做预测,OverTime 应取 6 月 1 日之前已记录的工时,不能用 6 月全月最终值;同理离职前最后一次 JobRole/薪资可能泄漏未来。若离职率 5%,全判‘留下’准确率可达 95% 却对支持目标无用。
规模与取舍
设员工快照数 N、特征数 F、树数 T、每树深度 d,树模型训练成本依实现与分桶策略而变,不能从题目推断固定量级;批量推理约 O(NTd),数据 join/历史快照通常主导 ETL 成本。容量需按预测频率、历史保留期、权限审计和人审队列规划。
易错点与追问
容易失分的边界
- 把样例字段当作实际原 TSV 全部列。
- 随机按行划分同一员工的历史记录,产生身份泄漏。
- 只报 accuracy,忽略低基率和干预容量。
- 把 SHAP 排名当离职原因或对员工自动作不利决定。
- 未经时间截断使用离职后才出现的字段。
继续深挖
- 没有可靠员工历史快照时还能否做此预测?
- 政策变更或裁员期间标签分布漂移怎样评估?
- 如何判断加班减少是否会因果性降低离职率,而非只是相关?
- 管理者只能每月联系 100 人时如何定 top-k 阈值?
