Senior MLE · Phone ML Design

LinkedIn Post / Job / Friend Updates 推荐:多源召回与目标统一

不同内容源先各自召回,再在统一曝光预算下排序,处理职位过期、好友时效和长期价值。

题目重点:不同内容源先各自召回,再在统一曝光预算下排序,处理职位过期、好友时效和长期价值。

题意与假设

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

  • 训练版同一用户可看到职位帖、普通内容帖和好友动态;不同来源都有权限/可见性和有效期过滤。若原轮只问 Post 推荐中的某一来源,应收窄。
  • 目标不只点击,还看求职申请、专业互动与用户负反馈;不同事件不能直接用同一点击率当效用。

解题路线

  1. 分别从关注关系/社交图、职位匹配和内容相似度索引做候选召回,各源有配额和时效过滤。先去掉已过期/关闭职位、不可见好友动态、重复题目描述与屏蔽来源。
  2. 统一候选结构保存 source、作者/职位、发布时间、特征、召回原因和权限版本;多目标 ranker 预测不同动作,再按产品价值和校准权重合成分数。若源之间标签口径不同,先按源校准或做分层排序,不能把原始 CTR 混用。
  3. 新鲜好友动态需低延迟摄入,职位题目描述更重资格匹配与当前可申请状态;新内容冷启动用文本/作者特征与探索流量。读时多样性约束限制某一源占满页面,并对连续同类负反馈快速更新。
  4. 训练样本以实际曝光为基准,记录位置和展示策略,避免把未展示项当负例。离线按源看 Recall/NDCG、校准和申请/互动质量;线上 A/B 同时看长期留存、申请质量、被隐藏/投诉和不同来源曝光。
  5. Feed 服务可以复用 q19 的混合推拉分发,但推荐模型评估是独立问题;基础设施推送与内容相关性不应混为同一道算法。

手动走一遍

用户关注同事 A、正在寻找后端岗位。候选含 A 新动态、已关闭职位 J1、符合技能且开放的 J2、普通技术帖 P;先过滤 J1,再在时效与职位匹配之间排序,保留不同源曝光,记录用户实际看到的候选用于训练。

规模与取舍

若每源召回 Kᵢ 条,总候选 C=ΣKᵢ,轻量重排约 O(C×模型成本),全排序 O(C log C);索引规模随用户、题目描述、职位与图边增长。题目没有 QPS/模型规模,不填固定容量。

易错点与追问

容易失分的边界

  • 把职位申请、好友互动和普通题目描述点击混成同一种监督目标。
  • 关闭职位仍被推荐。
  • 未展示候选当负样本。
  • 一个来源大量候选占满页面。
  • 只看 CTR,不看申请质量与用户负反馈。

继续深挖

  • 新职位没点击如何冷启动?
  • 好友新动态需要多快进入召回?
  • 跨来源分数如何校准?
  • 位置偏差与推荐策略反馈回路怎样处理?
✓已复制微信号!