Applied Scientist 2 · Phone Screen ML Fundamentals

Microsoft AS 类别不平衡:采样、权重与真实基率评估

区分训练时改变样本权重和部署时的真实基率,选择 PR-AUC、召回/精确率和校准,避免只看 accuracy。

题目重点:区分训练时改变样本权重和部署时的真实基率,选择 PR-AUC、召回/精确率和校准,避免只看 accuracy。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练版二分类中正例基率 p 很低,正例漏报和误报成本因业务而异;题目未明确 p、决策阈值或样本量。
  • 评估集保留部署时的真实分布,不能把人为 50/50 重采样后的评估指标当线上精确率。
  • 若训练样本经 case-control 采样改变先验,输出概率需按采样/部署基率校正或在真实分布校准。

解题路线

  1. 先排查标签质量和采集偏差:罕见正例是业务事实,还是漏标/延迟标签?若负例尚未成熟,过早标 0 会制造伪不平衡。
  2. 训练可选正例过采样、负例下采样、类别权重或 focal loss;每个选项改变梯度或样本覆盖,不能在无独立验证时断言一种最好。下采样需保留难负例和群体覆盖。
  3. 评价报告混淆矩阵、precision、recall、PR-AUC、ROC-AUC、log loss、校准与按关键群组分层;低基率下 ROC-AUC 尚可但实际 precision 可能仍低。
  4. 按业务容量/成本选阈值:若人工每周只能审 100 例,优先看 precision@100/recall@100;如果漏报严重,调阈值并报告误报量。
  5. 采样改变先验后在真实分布的 holdout 上重新校准,并监控基率漂移;线上 A/B 或影子测试确认处理量和结果,不只调训练 loss。

手动走一遍

10,000 人只有 100 个正例,全预测负例有 99% accuracy 却召回 0。若模型在人工可处理的前 100 名中找出 40 个正例,precision@100=40%、recall=40%;这比只报 99% accuracy 更贴近干预目标。把验证集也重采样为一半正例会虚高 precision。

规模与取舍

类别权重几乎不增加模型训练样本数;过采样可扩大训练步数,下采样降低步数但丢信息。PR-AUC 计算需对 N 个验证分数排序,通常 O(N log N) 时间;线上容量规划按预测流量和阈值决定。

易错点与追问

容易失分的边界

  • 把 accuracy 作为唯一指标。
  • 在全数据上先过采样再切训练/验证,同一正例复制体跨集合泄漏。
  • 验证集改为 50/50 后仍把 precision 当线上真实值。
  • 调整 class weight 后直接把模型分数当真实概率,不检查校准。
  • 未等标签窗口结束就把未知记负。

继续深挖

  • 为何 PR-AUC 更敏感于正例基率变化?
  • 如何从采样后的 posterior 校正回部署基率?
  • 正例漏标而非仅稀少时有哪些方法?
  • 阈值与人工审查能力变化时怎样重新设定?
✓已复制微信号!