你在做一个首页信息流的 CTR 模型,要加一维特征「用户过去 7 天在该一级类目下的点击率」。训练样本取自 8 月 1 日–8 月 7 日的曝光日志(每天约 2 亿条),你打算 1–6 日做训练、7 日做验证。请说明:这个特征的统计窗口在离线训练和线上 serving 分别应该怎么算?为什么不能直接对整份日志算一个「过去 7 天」的统计再 join 回每条样本?
面试官在考什么
判断候选人是否真正理解特征的时间边界与训练-服务一致性,而不是只会调库算统计量。
回答框架 · 前两步
- 统计窗口必须以样本自身的时间戳为界,只用该曝光时刻之前的数据;否则未来的点击信息会进入特征,造成标签泄漏。
- 离线正确做法是按天做滚动快照:每天用 T-1 及之前的 N 天日志算好统计并落成每日快照表,再把 T 日的样本 join 到 T-1 的快照上,而不是对全量日志算一个窗口再 join 回去。
还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。
同一能力域的其他题
- 冷启动问题你会怎么处理?新用户和新物品的策略一样吗?请分别说。
- 离线 AUC 涨了但线上 CTR 没涨,你会按什么顺序排查?请给出具体清单。
- CTR 模型里为什么要用 GAUC 而不只看 AUC?GAUC 是怎么算的、它解决了什么问题?
- 特征工程里你会怎么做特征穿越(label leakage)的检查?请举一个推荐场景里常见的穿越例子。
- 你做过线上 A/B 实验,请说明分流、样本量、显著性判断的要点。如果一个实验 p 值不显著,你怎么处理?
- 某信息流推荐的排序模型里,你打算把「item 近 1 小时实时 CTR」(曝光做分母、点击做分子、分钟级更新)作为特征。离线看这个特征和 label 的相关性很高,但你把低曝光 item 单独拉出来看,它们的 CTR 分布方差极大:曝光 5 次点击 1 次的 item,CTR=20%;曝光 200 次点击 3 次的 item,CTR=1.5%。请回答:(a) 你会怎么把这个特征喂给模型;(b) 平滑参数怎么定;(c) 线上和离线怎么保证算的是同一个东西。