项目库
数据 & MLCerabyte Health · 数据科学实习生 · 2022
一个看着特别牛的爽约预测模型——直到我发现它在偷看未来
分享者:M. Alvarez · 前健康科技公司数据科学实习生
这位分享者在那家健康科技公司的面试里讲的就是这个项目,后来拿到了实习 offer。
走进这场面试
4 个当年真实追问 · 1 个 hard · 约 12 分钟
答完每一题,才翻开当事人当年的接法。
他们当时是怎么讲的
一个预测门诊爽约的小模型,第一周就冲到了高得可疑的准确率。这个故事其实讲的是我发现的那处数据泄露,以及我是怎么逮到它的。
展开全文
在一家健康科技创业公司,我的项目是做一个模型,预测哪些病人会爽约,好让诊所给他们多发提醒。我的第一版 AUC 大概在 0.94,说实话对一个暑期实习生来说这好得有点不真实。我一看特征重要性,有一个特征一家独大:一个预约的“状态(status)”字段。原来这个字段是在就诊之后才更新的,所以它本身就已经编码了这个人到底来没来。典型的泄露——模型是在偷看答案。我把所有在预约时点或之后才写入的特征全删了,只用预约时就已知的东西重建:提前预约时长、历史爽约次数、星期几、距离分档、预约类型。AUC 掉到了 0.71 左右。没那么惊艳,但是真的。我选概率阈值时,是看前台实际有多少发提醒的产能来定的,而不是去最大化准确率,因为类别是不平衡的。我在最终文档里专门把这段泄露的故事写清楚,因为我想让下一个人别再信那个 status 字段。诊所拿风险最高的那一档人跑了个小规模试点,发提醒。我把它定性为一个有潜力的信号,而不是一个已经解决的问题。
当年真实被问到的
你到底是怎么确认那个 status 字段是在泄露,而不只是它本身就有预测力?
困难为什么用 AUC,而不干脆报个准确率?
中等你是怎么选那个分类阈值的?
中等实际的效果,跟你一开始设想的,差在哪儿?
简单