真实面经题目 · 原创解析

推荐系统多路召回的候选分数能直接相加吗,如何做归一化、配额和融合?

这道题考察多路召回的融合意识。不同通道的原始分数通常没有同一语义:cosine、共现分、热度、规则 rank 和模型分不可直接相加。好答案要把归一化、排序融合、校准、配额、去重、多通道命中特征、通道贡献和线上指标串起来。

出现于:百度 · 算法

60 秒回答模板

多路召回的分数一般不能直接相加,因为不同通道分数尺度和含义不同。向量召回可能是 cosine,ItemCF 是共现或相似度,热门召回是热度,规则召回可能只有 rank。正确做法是保留通道来源、原始分、通道内 rank 和召回原因,先做通道内归一化或 rank-based fusion,再用配额控制覆盖面;同一 item 多通道命中时去重并保留命中特征。简单融合可以 weighted sum(normalized_score),更稳的是把通道 id、rank、归一化分、多通道命中等交给粗排/精排学习。验证看 Recall@N、覆盖率、多样性、通道贡献、排序入选率和线上 CTR/CVR/GMV,而不是只看某一路分数。

考点 不要裸加分数
难度 真实面经题
回答目标 说明多路召回融合要先处理分数不可比,再用归一化、配额、去重和下游排序特征形成稳定候选池。

深入解析

01

原始分数不可比

cosine similarity、内积、共现次数、CTR 估计、热度分和规则 rank 的单位、范围和校准程度都不同。直接相加会让尺度大的通道支配结果,而不是让更相关的候选胜出。

02

先保留召回上下文

每个候选要记录通道来源、原始分数、通道内排名、召回原因、召回时间和是否多通道命中。这些信息用于去重、融合、下游排序、归因和通道效果分析。

03

归一化有多种选择

通道内可用 min-max、z-score、分位数、rank percentile;对异常值敏感时可用 rank-based 方法,例如 reciprocal rank fusion;如果数据足够,可把通道分数校准到点击率或转化概率,如分桶校准、Platt scaling 或 isotonic regression。

04

配额保证覆盖

配额不是拍脑袋平均分。可以按用户类型、场景、通道历史贡献、实时流量和业务目标动态调节。新用户可多给热门、地域和内容通道,老用户可多给个性化通道。

05

融合边界要清楚

召回层目标是提供足够好、足够多样的候选集合,不应试图完成精排。简单融合用于截断和去重,复杂相关性、校准和多目标权衡应交给粗排或精排承接。

06

评估看端到端

离线看 Recall@N、HitRate、MRR、NDCG、通道重叠率、覆盖率和多样性;线上还要看排序入选率、曝光占比、点击转化、负反馈、延迟和资源成本。

易错点

  • 把 cosine、热度、共现次数和 CTR 估计直接相加。
  • 只做全局 min-max,被异常值压扁大部分候选分数。
  • 固定通道配额长期不调,低效通道持续占用候选预算。
  • 去重时丢掉多通道命中信息,损失排序特征和归因能力。
  • 只优化 Recall@N,不看多样性、过滤率、排序入选率和线上业务指标。

面试官追问

多通道命中的 item 应该取最高分还是相加?

没有固定答案。可以取最大归一化分、加权求和,也可以把命中通道数、各通道 rank 和分数作为特征交给排序模型。关键是去重后保留通道信息,便于模型学习和归因。

新召回通道没有校准数据怎么办?

先给小配额和保守权重,使用 rank-based 融合或通道内分位数,线上灰度收集曝光点击数据,再做校准和配额优化。避免新通道直接大流量覆盖主通道。

如何做动态配额?

按用户冷启动程度、场景、时间、通道历史贡献、实时效果和候选可用量调配。也可以用 bandit 或策略模型,但必须加安全边界,防止低质量通道短期探索过量。

召回融合和粗排的边界是什么?

召回融合负责汇总、去重、配额和粗粒度截断;粗排负责在较大候选集上用更多特征估计相关性和业务目标。召回层不应引入过重特征或过高延迟。