跳到正文

粗排模型评估指标与陷阱

推荐系统中离线指标与在线系统级表现的设计要点

原题:在推荐系统中,如何设计指标和实验来评估粗排模型的效果?除了离线指标外,还需关注哪些在线或系统级表现?

评估与监控 · 哔哩哔哩真题

回答与解析

粗排定位与评估核心

粗排是"漏斗中层",核心矛盾是效率与效果的平衡——用1/10~1/100的精排耗时,召回90%+的优质候选。


离线指标设计

维度 具体指标 说明
排序能力 GAUC、NDCG@K 关注头部排序质量,K通常取100~500
召回覆盖 精排候选命中率、长尾内容召回率 粗排漏掉精排能排上的好内容是大问题
效率指标 推理延迟P99、QPS、显存占用 硬约束,通常延迟<10ms

关键:粗排GAUC不必追求接近精排,但头部重叠度(粗排TopK与精排TopK的Jaccard)必须高。


在线与系统级指标

  • 业务指标:CTR、人均时长、多样性(避免粗排过度收敛)
  • 系统指标:精排有效计算率(过滤掉多少明显差的候选)、精排队列等待延迟
  • 负向指标:粗排截断导致的"本应曝光却未曝光"内容占比

实验设计要点

  1. 分层实验:粗排、精排、重排分层,避免精排迭代污染粗排实验
  2. 流量隔离:同请求内对比(Interleaving)或用户分桶,后者更常用
  3. 长周期观察:粗排影响内容生态,需观察7~14天创作者侧指标

常见坑:离线用精排打分当label,但精排本身有bias,会导致粗排过度拟合精排偏好。

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 粗排本质是效率与效果的平衡
  • 离线指标:排序能力、召回覆盖、效率
  • 在线指标:业务指标、系统指标、负向指标
  • 实验设计要点:分层、长周期、常见坑
  • 工程师取舍:更关注精排命中率和效率

这道题我觉得其实是在问,粗排作为推荐系统漏斗的中间层,怎么平衡效率和效果?说白了,粗排要用精排十分之一甚至百分之一的时间,把90%以上的好内容捞出来。所以评估粗排,核心就是看它有没有做到这一点,同时别漏掉太多好东西。

先说离线指标。我一般从三个维度看。先说排序能力,用GAUC和NDCG@K,K取100到500,主要看粗排能不能把用户真正感兴趣的东西排到前面。这里有个关键,粗排的GAUC不需要接近精排,但粗排TopK和精排TopK的头部重叠度必须高,也就是粗排筛出来的东西,精排也觉得好,这个Jaccard系数很重要。然后看召回覆盖,我会看精排候选命中率,就是精排最终打高分的东西,粗排有没有漏掉,漏了就是大问题。另外还要看效率指标,像推理延迟P99、QPS、显存占用,这些是硬约束,通常要求延迟在10毫秒以内。

再说在线和系统级指标。业务指标比如CTR、人均时长、多样性,这些是最终效果。但粗排有个风险,就是它可能会过度收敛,只给精排送去最热门的东西,导致多样性下降。所以我会关注系统指标,比如精排有效计算率,粗排过滤掉了多少明显差的候选,让精排算得更高效。还有负向指标,就是粗排截断导致的本该曝光却没曝光的内容占比。

实验设计上,我通常注意三点。先说分层实验,粗排、精排、重排要分开,不然精排的迭代会污染粗排实验。然后看流量隔离,用用户分桶或者同请求内对比,更常用的是用户分桶。另外还要看长周期观察,因为粗排会影响内容生态,需要观察7到14天创作者侧的指标,比如新内容有没有被公平曝光。这里有个常见坑:离线用精排打分当label,但精排本身有bias,会导致粗排过度拟合精排的偏好,忽略了其他可能的优质内容。

所以我会更关注粗排的效率和精排命中率之间的平衡。比如在电商场景,用户搜'手机',粗排要快速从几十万候选里筛出几百个,既要保证头部爆品不丢,又要给长尾新品留机会。如果离线只看GAUC,可能粗排就只学精排的偏好,结果新品永远出不来。所以我更倾向把精排命中率和效率作为核心指标,排序能力只要不差太多就行。

对了,还有一个延伸点,就是粗排的特征设计。粗排用的特征通常比精排轻量,比如只取用户统计特征和物品统计特征,不加实时行为序列。那怎么保证粗排学到的特征和精排一致,又不牺牲效率?这个其实挺有意思的,可以再深入聊。

关键一句:粗排特征设计如何平衡效率与一致性,比如是否采用共享embedding或蒸馏精排特征。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们做电商推荐,粗排要从几万候选里筛出几百个给精排。你一般怎么设计指标来保证粗排没把好商品漏掉?除了离线指标,线上还有什么特别要注意的吗?

  2. 问法 2 · 层层追问

    推荐系统粗排的效果你是怎么评估的?……离线一般看哪些指标?……那在线呢,比如系统负载或者对精排的影响,你会关注什么?

  3. 问法 3 · 直球架构

    设计一套粗排模型的评估方案,包括离线指标和在线系统级指标,并说明实验设计的关键点。你从哪些维度衡量,怎么避免常见坑?

同模块相关题目