返回博客列表

推荐系统的两步走战略:召回与排序

详解推荐系统的两阶段架构,分析召回和排序各自的目标、算法选择和效果评估方法。

2024-02-084 分钟阅读Yaron
#推荐系统基础#召回算法#排序算法#工程实践

推荐系统的"两步走"战略:召回与排序

在探索推荐系统的世界时,我们总会遇到两个如雷贯耳的核心概念:"召回"与"排序"。它们是所有大型推荐系统处理海量信息的标准作业流程,也是保证推荐既快又准的基石。

这两个词听起来可能有些抽象,但其背后的思想,其实与我们生活中的一个场景——"皇帝选妃"——不谋而合。今天,我们就借这个生动的比喻,来彻底看懂推荐系统这套经典的"两步走"战略。

第一步:海选 —— 这就是"召回 (Recall)"

想象一下,你是一位皇帝,要在全国几千万适龄女子中,挑选一位皇后。你不可能一个一个地去面试,那会耗费数十年光阴。所以,你的第一步必然是"海选"。

你颁布了一道圣旨:"从全国各省,把所有年龄在16-20岁、出身官宦之家、略懂琴棋书画的女子,都送到京城来。"

这次"海选"有几个关键特点:

  • 标准简单,求快求全:你只用了几个非常粗略、容易筛选的条件(年龄、家世)。地方官员可以依据这些简单标准,快速地完成第一轮筛选。
  • 目标是"宁滥勿缺":你不在乎送来的人里有些你不喜欢,但你绝对不希望错过任何一个潜在的"天命之女"。所以标准不能定得太死。
  • 结果量大:这道圣旨下去,可能会有成百上千名秀女被送到京城,形成一个庞大的"候选名单"。

在推荐系统中,召回层 (Recall Layer) 就扮演着这个"海选"的角色。

  • 它的目标快、全。从数百万、上千万的物品库中,用一些高效、简单的算法(如ItemCF、向量检索等),快速地捞出几百到几千个"可能相关"的候选物品。
  • 它的产出:一个相对较大的候选集 (Candidate Set)

第二步:殿选 —— 这就是"排序 (Ranking)"

现在,几千名秀女已经齐聚京城。你不可能再用"年龄、家世"这种粗略的标准了。是时候进行极其精细的"殿选"了。

你会让每一位秀女都到你面前,然后你开始动用你所有的智慧和感官去综合打分

  • 她的容貌怎么样?(物品的静态特征)
  • 她的才情如何?(物品的内容特征)
  • 她和我聊不聊得来?(用户-物品的交叉特征
  • 我今天心情好不好?(场景特征)
  • 国师说她的生辰八字和我合不合?(专家特征)

你为每一位秀女都在心里打了一个极其精准的、综合了所有因素的"喜爱分数",然后按照这个分数从高到低排名,分数最高的那位,就是你的皇后!

在推荐系统中,排序层 (Ranking Layer) 就扮演着这个"殿选"的角色。

  • 它的目标。它接收来自召回层的几百个候选物品,然后动用一个非常复杂、强大、但计算量也很大的模型(如逻辑回归、Wide&Deep等),把所有能用的特征(用户U、物品I、场景C)全都用上,为每一个候选物品计算出一个精准的预测分数(如点击率pCTR)。
  • 它的产出:一个我们最终要呈现给用户的、经过精确排序的推荐列表(比如Top 10)。

总结:为何必须"两步走"?

答案很简单:为了在"效果"和"性能"之间取得完美的平衡

  • 如果只用"排序"模型去处理所有物品:就像让皇帝亲自面试全国几千万女子一样,虽然理论上最准,但系统会慢到卡死,用户等半天都看不到推荐结果,体验为零。
  • 如果只用"召回"的简单方法:就像只看年龄和家世就定了皇后,虽然快,但结果会非常粗糙,推荐的东西很可能不是用户最想要的。

因此,"召回 + 排序" 这个经典的二级漏斗架构,是所有大型推荐系统为了应对海量数据,在保证用户体验(速度)的同时,追求最佳推荐效果(精度)而做出的一种必然的、非常聪明的工程选择。

流程图解