recommendation-system-4-steps

这里

推荐系统的主要四个阶段(召回、粗排、精排、重排)

阶段特点
召回从海量物品中快速找回一部分重要物品
粗排进行粗略排序,保证一定精准度并减少物品数量
精排精准地对物品进行个性化排序
重排改进用户体验

传统划分:
1、召回
        根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。

特点:速度快。

2、排序
        可以融入较多特征,使用复杂模型,来精准地做个性化推荐。

特点:结果精准。

精细划分:
1、召回(多路召回)
        根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。

2、粗排(可用可不用,根据场景选择)
        通过少量用户和物品特征,简单模型,对召回的结果进行个粗略的排序,保证一定精准的前提下,进一步减少选取的物品数量。

作用:防止用户召回环节返回的物品数量还是太多,导致排序环节速度跟不上,所以在召回和精排之间加入一个粗排。

3、精排(重要)
        可以使用任何特征和复杂模型,尽量精准地对物品进行个性化排序。

4、重排
        改进用户体验,可以采用各种技术及业务策略(技术产品策略主导),比如:去已读、去重、打散、多样性保证、固定类型物品插入等等。







召回(Recall)

 

  • 起源:召回的概念起源于信息检索领域,用于描述搜索系统从文档集中检索出相关文档的能力。在推荐系统中,召回阶段的目标是从海量的物品或内容中,初步筛选出可能与用户兴趣相关的候选集合。
  • 目的:确保系统能够覆盖到用户可能感兴趣的物品或内容,避免遗漏。
  • 作用:召回是推荐系统的第一步,它为后续的排序阶段提供了候选集合,是推荐系统的基础。

更加详细内容见文章推荐系统中召回的定义及起源是什么?

粗排(Coarse Ranking)

  • 起源:粗排的概念是在推荐系统追求更高性能和效率的过程中形成的。由于召回阶段可能会产生大量的候选物品,直接对所有候选物品进行精细排序可能会导致计算成本过高。因此,粗排阶段的作用是对候选物品进行初步排序,过滤掉明显不符合用户兴趣的物品,减少后续精排的计算量。
  • 目的:在保证一定召回率的前提下,减少候选物品的数量,提高后续排序阶段的效率。
  • 作用:粗排是召回和精排之间的过渡阶段,它在保证召回率的同时,通过简单的模型或规则对候选物品进行初步排序,减少了后续精排的计算量。

精排(Fine-grained Ranking)

  • 起源:精排的概念是在追求更高推荐准确性的过程中产生的。在粗排阶段过滤掉明显不符合用户兴趣的物品后,精排阶段会对剩余的候选物品进行精细的排序和打分,以找到最符合用户兴趣的物品。
  • 目的:利用复杂的模型和特征,对候选物品进行精细的排序和打分,确保推荐结果的准确性。
  • 作用:精排是推荐系统的核心部分之一,它通过复杂的模型和算法对候选物品进行精细的排序和打分,确保推荐结果的准确性和个性化程度。

重排(Re-ranking)

  • 起源:重排的概念来源于对推荐结果多样性的需求。在某些情况下,即使精排阶段已经产生了准确的推荐结果,但由于业务规则、多样性需求等因素,还需要对推荐结果进行重新排序。
  • 目的:在满足准确性的前提下,考虑多样性、新颖性等因素,对推荐结果进行重新排序。
  • 作用:重排是在精排之后的一个可选阶段,它可以根据特定的业务规则和需求对推荐结果进行重新排序,提高推荐结果的多样性和新颖性。




召回词起源

召回是指生产者按照规定程序和要求,对存在缺陷的消费品,通过补充或者修正警示标识、修理、更换、退货等补救措施,消除缺陷或者降低安全风险的活动。这个定义主要适用于消费品领域,尤其是当消费品存在由于设计、制造、警示等原因导致的危及人身、财产安全的不合理危险时。

召回起源于美国。1966年,美国国会通过了《国家交通及机动车安全法》(National Traffic and Motor Vehicle Safety Act),其中明确规定了缺陷汽车产品召回的相关厂商、管理部门、管理程序和召回方式,并规定汽车制造商有义务向消费者、管理当局公开发布汽车召回的信息。这一法律的颁布,标志着召回制度在美国的正式建立。

随后,其他国家也开始陆续实施召回制度。例如,日本、英国、法国分别在1969年、1979年和1984年开始实施汽车产品召回。到了2004年,中国也由国家质检总局等四部委联合发布了《缺陷汽车产品召回管理规定》,标志着中国开始实施汽车产品召回管理。

除了汽车产品,召回制度也逐渐扩展到其他消费品领域,如家电、玩具、食品、软件等。召回的目的在于保护消费者的权益,确保消费者在购买和使用消费品时的人身和财产安全。

推荐系统中召回

定义

在推荐系统中,召回(Recall)的定义是从海量的物品库(如商品、视频、文章等)中,根据用户和商品的部分特征,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节进行进一步处理。

关于推荐系统中召回的起源,可以追溯到个性化推荐系统的研究和发展。个性化推荐的研究起源于20世纪90年代,由美国明尼苏达大学GroupLens研究小组最先开始研究。他们想要制作一个名为Movielens的电影推荐系统,从而实现对用户进行电影的个性化推荐。这一系统让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从未看过并可能感兴趣的电影。这是个性化推荐系统的一个早期实例,其中就包含了召回的思想。

随着技术的不断发展,推荐系统的召回方法也在不断丰富和完善,包括基于内容的召回、协同过滤召回、基于模型的召回等多种方法。这些方法都是为了提高召回的准确性和效率,以便更好地满足用户的需求。

目的

召回(Recall) 是推荐系统中一个重要的阶段,其主要目的是从海量的物品库(如商品、视频、文章等)中,快速、准确地找出与用户兴趣或需求相关的物品子集,作为后续排序阶段的候选集。

为什么要设计召回阶段:

  1. 处理海量数据:在推荐系统中,物品库通常非常庞大,包含数百万甚至数十亿个物品。直接对所有这些物品进行排序和推荐是不现实的,不仅计算资源消耗巨大,而且效率低下。因此,召回阶段首先通过一定的策略和方法,从海量的物品库中筛选出与用户相关的物品子集,作为后续处理的候选集。
  2. 提高推荐效率:召回阶段通过快速、高效的算法,能够在短时间内从海量物品中找出与用户兴趣或需求相关的物品。这大大提高了推荐系统的响应速度,使得用户能够在短时间内获得推荐结果。
  3. 满足多样化需求:召回阶段可以采用多种不同的策略和方法,如基于内容的召回、协同过滤召回、深度学习召回等,以满足不同场景下用户的多样化需求。例如,在电商场景下,可以通过用户的历史购买记录和浏览行为,利用协同过滤算法找出与用户兴趣相似的物品;在视频推荐场景下,可以利用深度学习模型对视频进行特征提取和表示学习,从而找出与用户兴趣相关的视频。
  4. 为后续排序阶段提供候选集:召回阶段输出的物品子集将作为后续排序阶段的候选集。排序阶段将对这些候选集进行更精细的打分和排序,以产生最终的推荐结果。因此,召回阶段的效果将直接影响后续排序阶段的性能和推荐结果的质量。

综上所述,召回阶段在推荐系统中扮演着至关重要的角色,它通过处理海量数据、提高推荐效率、满足多样化需求以及为后续排序阶段提供候选集等方式,为整个推荐系统提供了坚实的基础和支撑。

基于内容的召回

基于内容的召回(Content-Based Recall),一般也叫做标签召回,是推荐系统中一种重要的召回策略。它的核心思想是根据物品的内容特征以及用户的历史行为(如点击、浏览、购买等)来召回用户可能感兴趣的物品。

具体来说,基于内容的召回主要分为以下几个步骤:

  1. 内容理解:系统首先需要对物品的内容进行理解和分析,提取出物品的关键特征或标签。这些特征或标签可以是物品的文本描述、图像特征、视频标签等。
  2. 用户标签学习:系统会根据用户的历史行为数据,学习用户的兴趣和偏好,并将其表示为一系列的特征或标签。
  3. 推荐列表生成:系统会根据用户标签和物品标签的匹配程度,从海量的物品库中筛选出与用户兴趣最相关的物品,生成推荐列表。

基于内容的召回具有以下优点:

  • 适用于冷启动场景:对于新用户或新物品,由于缺少历史行为数据,协同过滤等依赖用户-物品交互信息的召回方法可能无法有效工作。而基于内容的召回可以仅依赖物品的内容特征和用户的基本信息,因此在冷启动场景下具有优势。
  • 能够捕获用户的长期兴趣:基于内容的召回可以通过分析物品的内容特征来捕获用户的长期兴趣,从而推荐与用户长期兴趣相关的物品。

然而,基于内容的召回也存在一些局限性:

  • 内容特征的设计:内容特征的提取和设计需要依赖人工经验和专业知识,因此可能受到设计者领域知识的影响。
  • 多样性问题:由于基于内容的召回主要依赖物品的内容特征和用户的历史行为,因此可能无法充分考虑到用户兴趣的多样性,导致推荐结果较为单一。

为了提高基于内容召回的准确性和效果,研究者们通常会结合其他召回方法(如协同过滤、深度学习等)进行联合召回,以实现更好的推荐效果。

基于协同过滤召回

基于协同过滤的召回(Collaborative Filtering Recall)是推荐系统中一种重要的召回策略。它的核心思想是利用用户的历史行为和其他用户的行为进行比较,找出相似的用户或物品,然后根据这些相似用户或物品的行为来预测目标用户可能感兴趣的物品,从而进行召回。

具体来说,基于协同过滤的召回可以分为基于用户的协同过滤(User-User Collaborative Filtering)和基于物品的协同过滤(Item-Item Collaborative Filtering)两种。

  1. 基于用户的协同过滤:这种方法首先会找出与目标用户兴趣相似的其他用户,然后根据这些相似用户的行为来预测目标用户可能感兴趣的物品。在计算用户之间的相似性时,通常会考虑用户的历史行为(如点击、购买、评分等),并使用各种相似性度量方法(如余弦相似性、皮尔逊相关系数等)来计算。
  2. 基于物品的协同过滤:这种方法则是通过分析用户的历史行为来找出相似的物品,然后根据这些相似物品来推荐给用户。在计算物品之间的相似性时,也会考虑用户的历史行为数据,但更多的是关注物品本身之间的相似性(如物品的标签、属性、描述等)。

基于协同过滤的召回具有以下优点:

  • 能够挖掘用户的潜在兴趣:通过比较用户之间的行为相似性,可以找出与目标用户兴趣相似的其他用户,从而发现目标用户可能感兴趣的但尚未接触过的物品。
  • 不需要过多的领域知识:相对于基于内容的召回,基于协同过滤的召回不需要对物品的内容进行深入分析,只需要考虑用户的行为数据即可。

然而,基于协同过滤的召回也存在一些局限性:

  • 冷启动问题:对于新用户或新物品,由于缺少历史行为数据,很难进行准确的推荐。
  • 稀疏性问题:在实际应用中,用户-物品交互矩阵通常非常稀疏,即大部分用户只与少量的物品有交互行为,这会影响推荐的准确性。
  • 实时性问题:当用户的行为数据发生变化时,需要重新计算用户或物品的相似性,这可能会影响推荐的实时性。

为了克服这些局限性,研究者们通常会结合其他召回方法(如基于内容的召回、深度学习等)进行联合召回,以实现更好的推荐效果。

基于深度学习召回

基于深度学习的召回(Deep Learning-based Recall)是一种在推荐系统中应用深度学习技术来进行召回的策略。它的核心思想是利用深度学习模型对用户和物品进行表示学习(Representation Learning),将用户和物品转化为模型可处理的向量表示,并通过这些向量的相似度来召回用户可能感兴趣的物品。

具体来说,基于深度学习的召回可以分为以下几个步骤:

  1. 数据表示:将用户和物品转化为模型可处理的向量表示。这通常通过嵌入层(Embedding Layer)来实现,将用户和物品映射到低维空间中的向量。这些网络层的组合可以根据具体任务的复杂性进行调整。
  2. 损失函数定义:定义适当的损失函数,用于衡量模型输出与实际用户行为之间的差异。在推荐系统中,常用的损失函数包括二元交叉熵(Binary Cross Entropy)或均方误差(Mean Squared Error)等。
  3. 模型训练:利用历史行为数据对模型进行训练。通过优化算法(如随机梯度下降)来最小化损失函数,更新模型参数。
  4. 召回候选物品:在训练完成后,可以利用模型为用户生成候选物品列表。具体来说,对于给定的用户向量,可以计算其与所有物品向量的相似度,并按照相似度排序,选取相似度较高的物品作为候选物品进行召回。

基于深度学习的召回具有以下优点:

  1. 强大的表示学习能力:深度学习模型可以自动学习用户和物品的复杂特征表示,从而更准确地捕捉用户的兴趣和物品的特性。
  2. 灵活性:深度学习模型可以根据具体任务和数据特点进行定制和优化,以适应不同的推荐场景。
  3. 可扩展性:随着数据量的增加和模型能力的提升,基于深度学习的召回可以不断扩展和优化,以提高推荐的准确性和效率。

然而,基于深度学习的召回也存在一些挑战和限制,如模型复杂度较高、计算成本较大、需要大量的标注数据等。因此,在实际应用中需要根据具体场景和需求来选择合适的召回策略。

基于混合模型的召回

混合模型的召回(Hybrid Recall)在个性化推荐系统中指的是采用多种不同的召回策略或算法,并将它们的结果进行有效整合,以生成一个更全面、更准确的候选物品集合。混合模型召回的目的是通过结合不同召回策略的优势,来克服单一策略可能存在的局限性,从而提高整体召回效果和用户满意度。

混合模型召回可以采用以下几种主要方式:

  1. 加权融合:
    • 为不同的召回策略分配不同的权重,并将它们的结果按照权重进行融合。权重的分配可以根据历史数据、实验结果或业务需求来确定。
  2. 策略排序:
    • 根据一定的规则或条件,对不同的召回策略进行排序,然后按照顺序依次执行。例如,可以先执行效率较高但精度稍低的策略,再执行精度较高但计算成本较大的策略。
  3. 特征互补:
    • 不同的召回策略可能依赖于不同的特征或数据源。混合模型可以通过整合这些不同来源的特征,来生成更丰富、更全面的候选物品集合。
  4. 模型集成:
    • 在某些情况下,可以使用机器学习或深度学习模型来整合不同召回策略的结果。例如,可以使用集成学习的方法,将多个召回模型的预测结果进行融合,以提高整体效果。
  5. 结果重排:
    • 在将不同策略的结果合并后,可以使用一定的规则或模型对候选物品进行重排,以进一步提高推荐结果的准确性和多样性。

混合模型召回的优点包括:

  • 提高召回率:通过结合多种召回策略,混合模型可以覆盖更广泛的用户兴趣和物品,从而提高召回率。
  • 提高准确性:不同的召回策略可能在不同场景下具有不同的优势,混合模型可以充分发挥这些优势,提高推荐的准确性。
  • 增强鲁棒性:当某个召回策略出现问题或失效时,混合模型可以依靠其他策略来保持整体效果的稳定。
  • 适应性强:混合模型可以根据业务需求和数据特点进行灵活调整和优化,以适应不同的推荐场景。

需要注意的是,混合模型召回的实现需要考虑多个因素,如策略选择、权重分配、数据融合等。在实际应用中,需要根据具体情况进行设计和调整,以达到最佳效果。






推荐系统中的召回和排序

在推荐系统中一般会分为召回和排序两个阶段:

召回

召回的目标是从千万级甚至亿级的候选中召回几千个item,召回一般由多路组成,每一路会有不同的侧重点(优化目标),如在广告中成熟期广告和冷启动广告分为两路召回(如果广告比较多,还可能分冷热广告分别召回)。在推荐系统,不同路可能代表了不同的优化目标,如喜欢、关注、观看时长、评论这些都可以分不同的路召回。

目前召回常用的方法有:协同过滤、FM、FFM、图模型、双塔模型、还有YouTube在2017年论文中提出的DNN模型、字节的Deep Retrieval算法等

在工业届,常常会用FM、双塔模型等先学习user embedding、和 item embedding,然后用ball tree、fast ball tree 等近似最近邻算法进行检索,加快效率

 

排序

排序阶段就是把召回的结果进行排序,把top k(k 一般都是个位数)结果作为推荐系统最终的输出。

排序阶段常用的算法:LR -> FM -> deepFM等

 

为什么要把排序分为精排和粗排?

把排序阶段分为粗排和精排,其实就是生成环境中成本和结果的一个平衡。进入排序阶段的候选集一般确实只有几千个,但是对于抖音、YouTube这种量级的应用来说,他们request是非常多的,依然不能上太复杂的模型和特征。

因此把排序分为粗排和精排:

粗排漏斗一般是: 几千 -> 几百

精排漏斗一般是:几百 -> 几个

这样精排可以把模型和特征做到极致,可以达到非常高的精度

 

召回和粗排的差别在哪里?

1. 建模目标不同

召回是漏斗的最上游,可以说是决定了推荐系统的上限

召回的目标是召回用户可能感兴趣的 item,会考虑多方面的因素

 

粗排是对召回的结果进行排序,top k 送入精排,常用的有两种建模方式:

1. 独立建模,如在在广告推荐中,粗排也是优化ecpm,在推荐中也是优化Finish、Staytime等

2. 对齐精排,用 leaning to rank 等方法去学习精排的序

2. 正负样本的选择不同

如果说召回决定了推荐系统的上线的话,那么可以说样本的构造决定了模型的上限

先看召回阶段:

正样本一般选择用户有正反馈的样本,如ctr中用户点击了的作为正样本,like中用户点了喜欢的作为正样本

但是负样本该怎么选呢?

最简单的方法就是把send给用户后,用户没有正反馈的样本作为负样本。但是这样会带来一个问题,那就是召回模型在training和serving面临的样本分布是不一样的,违反了机器学习的基本原则。

具体的来说就是,真正被send给用户的item只占所有item非常小的一部分,召回模型在serving时会面临很多它以前从来没有见过的样本,召回模型在这些样本上会很难区分

怎么解决这个问题呢?

通常的方法就是从召回的池子中进行随机采样,具体做法待补充

 

再来看粗排:

粗排的基本目标一般是对其精排,所以可以把精排的top k 个样本作为正样本,然后从精排中其它样本中随机采样,作为负样本

粗排对其精排本身没有太大问题,但是这里也有一个ee(exploit-explore)问题,如果粗排完全对其精排的话,可能会导致模型探索不足,为了缓解这个问题,我们可以适当补充一些进入召回但是没有进精排的样本作为负样本