推荐系统的Pipeline架构总结


推荐的流程一般分为召回、排序、业务调控3个阶段,召回就是将用户可能会感兴趣的标的物通过算法从全量标的物库中取出来,一般会采用多个算法来召回,比如热门召回、协同过滤召回、标签召回等,排序阶段将召回阶段的标的物列表根据用户可能的点击概率大小排序(即所谓的CTR预估)。在实际业务中,在排序后还会增加一层调控逻辑,根据业务规则及运营策略对排序后的列表进一步增补微调,满足特定的运营需求。

1. 召回

推荐召回算法又分为5种范式,下面根据每种范式来结束对应的算法策略

非个性化范式

非个性化范式就是所有用户推荐一样的标的物列表,一般各种榜单就是这类推荐,如微博上的最新榜、最热榜等等。这类排行榜就是基于某个规则来对标的物降序排列,将排序后的标的物取topN推荐给用户。比如最新榜可以根据标的物上线的时间顺序来倒序排列,取前面的topN推荐给用户。最热榜可以根据用户播放量(点击量)降序排列。这里面可能需要考虑标的物的多品类特性,甚至还会考虑地域、时间、价格等各个维度。在具体实施时会比较复杂,需要根据具体的产品及业务场景来设计。
非个性化范式实现起来很简单,可解释性也很强。虽然每个用户推荐的内容都一样,但是(从生物进化上)人都是有从众心理的,大家都喜欢的东西,我们也喜欢的概率还是很大的,所以这类推荐效果还是非常不错的。
但是每个人的推荐内容一致,也可能会降低部分用户的体验,另外这类算法也可以作为冷启动者默认的推荐算法。

完全个性化范式

完全个性化范式就是为每个用户提供个性化的推荐,每个用户的推荐结果都不相同,这是粒度最细的一种推荐范式,精确到了每个用户。可用的推荐方法非常多。

  • 基于内容的个性化推荐算法
    这类推荐算法只依赖于用户自己的历史行为而不必知道其他用户的行为。该算法的核心思想是:标的物是有描述属性的,用户对标的物的操作行为为用户打上了相关属性的烙印,这些属性就是用户的兴趣标签,那么我们就可以基于用户的兴趣来为用户生成推荐列表。该类推荐算法是非常自然直观的,可解释性强。同时可以较好地解决冷启动,只要用户有一次行为,就可以基于该行为做推荐。但是,该类算法往往新颖性不足,给用户的推荐往往局限在一个狭小的范围中,如果用户不主动拓展自己的兴趣空间,该方法很难为用户推荐新颖的内容
  • 基于协同过滤的推荐算法
    基于协同过滤的推荐算法,核心思想是很朴素的“物以类聚、人以群分”的思想。所谓物以类聚,就是计算出每个标的物最相似的标的物列表,我们就可以为用户推荐用户喜欢的标的物相似的标的物,这就是基于物品的协同过滤。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物(而该用户未曾操作过)的标的物推荐给该用户,这就是基于用户的协同过滤。
    在这里插入图片描述
    协同过滤的核心是怎么计算标的物之间的相似度以及用户之间的相似度。我们可以采用非常朴素的思想来计算相似度。我们将用户对标的物的评分(或者隐式反馈,如点击等)构建矩阵,矩阵的某个元素代表某个用户对某个标的物的评分(如果是隐式反馈,值为1),如果某个用户对某个标的物未产生行为,值为0。其中行向量代表某个用户对所有标的物的评分向量,列向量代表所有用户对某个标的物的评分向量。有了行向量和列向量,我们就可以计算用户与用户之间、标的物与标的物之间的相似度了。具体来说,行向量之间的相似度就是用户之间的相似度,列向量之间的相似度就是标的物之间的相似度。相似度的计算可以采用cosine余弦相似度算法
    互联网产品中一般会采用基于物品的协同过滤,因为对于互联网产品来说,用户相对于标的物变化更大,用户是增长较快的,标的物增长相对较慢(这也不是绝对的,像新闻短视频应用,标的物数量增长就比较快),利用基于物品的协同过滤算法效果更稳定。协同过滤算法思路非常直观易懂,计算也相对简单,易于分布式实现,也不依赖于用户及标的物的其他信息,效果也非常好,也能够为用户推荐新颖性内容,所以在工业界得到非常广泛的应用。
  • 基于模型的推荐算法
    基于模型的推荐算法种类非常多,最常用的有矩阵分解算法、分解机算法等。目前深度学习算法、强化学习算法、迁移学习算法也在推荐系统中得到大规模采用。
    基于模型的推荐算法有三类预测方式,一类是预测标的物的评分,基于评分的大小表示对标的物的偏好程度。第二类是采用概率的思路,预测用户对标的物的喜好概率,利用概率值的大小来预测用户对标的物的喜好程度。另外一类是采用分类的思路,将每个标的物看成一类,通过预测用户下一个(几个)标的物所属的类别来做推荐。矩阵分解算法就是预测用户对标的物的评分,logistic回归算法就是概率预测方法,而YouTube发表的深度学习推荐就是基于分类思路的算法。

群组个性化范式

群组个性化范式首先将用户分组(根据用户的兴趣,进行聚类分组),每组用户提供一个个性化的推荐列表,同一组的用户推荐列表一样,不同组的用户推荐列表不一样。

  • 基于用户画像圈人的推荐
    用户画像一般用于做精准的运营,通过显示特征将一批人圈起来,对这批人做针对性的运营。如学生,程序员等。
  • 采用聚类算法的推荐
    聚类是非常直观的一种思路,将行为偏好相似的用户聚成一类,他们有相似的兴趣。常用的聚类策略有如下两类。将用户相关特征嵌入向量空间的方式有很多,下面都是非常主流的做法。
    采用基于内容推荐的思路,可以构建用户的特征向量(TF-IDF,LDA,标签等,前面已经介绍过)。有了用户的特征向量就可以聚类,该类所有用户特征向量的加权平均就是该组用户的特征向量,再利用群组特征向量与标的物特征向量的内积来计算群组与标的物的相似度,从而为该群组做个性化推荐。
    采用基于用户的协同过滤的思路,可以构建用户和标的物的行为矩阵,矩阵的元素就是用户对标的物的评分,利用该矩阵的行向量就构建了一个衡量用户特征的向量,基于该特征向量可以对用户聚类。先对该组用户所有的特征向量求均值,可以取k个最大的特征向量,其他特征向量忽略不计(设置为0),最终得到该组用户的特征向量。最后就可以根据基于用户协同过滤的思路来为该组用户计算推荐列表了。
    利用矩阵分解可以得到每个用户的特征向量,我们可以用该组用户特征向量的均值来作为该用户组的特征向量。再利用用户组的特征向量与标的物特征向量的内积来计算群组对该标的物的偏好,所有偏好计算出来后,通过降序排列就可以为该组用户推荐topN的标的物列表了。

标的物关联标的物范式

标的物关联标的物范式为每个标的物关联一组相关或者相似的标的物,作为用户在访问标的物详情页时的推荐,每个用户看到该标的物关联推荐的标的物都是一样的。当用户浏览一个电影时,可以通过关联相似的电影,为用户提供更多的选择空间。该推荐范式的核心是怎么从一个标的物关联到一组标的物。这种关联关系可以是相似的,也可以是基于其他维度的关联。常用的推荐策略是相似推荐。下面给出4种常用的生成关联推荐的策略。

  • 基于内容的推荐
    这类方法一般可以利用已知的数据和信息利用向量来描述标的物,如果每个标的物都被向量化了,那么我们就可以利用向量之间的相似度来计算标的物之间的相似度。如果标的物是新闻等文本信息,可以采用TF-IDF将标的物映射为词向量,我们可以通过词向量的相似度来计算标的物之间的相似度。
  • 基于用户行为的推荐
    在一个成熟的推荐产品中,会包含很多用户的行为,如用户的收藏、点赞、购买、播放、浏览、搜索等,这些行为代表了用户对标的物的某种偏好。我们可以基于该用户行为来进行关联推荐。比如常用的矩阵分解算法,可以将用户的行为矩阵分解为用户特征矩阵和物品特征矩阵,物品特征矩阵可以看成是衡量物品的一个向量,利用该向量我们就可以计算两个标的物之间的相似度了。
  • 基于标签推荐
    如果标的物是包含标签的,比如视频推荐。我们就可以利用标签来构建向量,每个标签代表一个维度。总标签的个数就是向量的维度,这样每个标的物就可以利用标签的向量来表示了。一般标的物的标签个数远远小于总标签的个数,所以这个向量是稀疏向量。这样我们就可以基于稀疏向量的表示来计算标的物之间的相似度了。
  • 基于标的物聚类的推荐
    我们可以将标的物按照某个维度聚类(如果标的物可以嵌入到向量空间,那么就很容易聚类了),同一类具备某些相似性,那么我们在推荐时,就可以将同一类的其他标的物作为关联推荐。我们需要解决的问题是,某些类可能数量很小,不够做推荐,这时可以采用一些策略来补充(如补充热门推荐等)不足的数量。

笛卡尔积范式

笛卡尔积范式是每个用户跟每个标的物的组合产生的推荐结果都不相同。笛卡尔积范式的推荐算法一般可以先采用标的物关联标的物范式计算出待推荐的标的物列表。再根据用户的兴趣来对该推荐列表做重排(调整标的物列表的顺序)、增补(增加用户的个性化兴趣)、删除(比如过滤掉用户看过的)等。笛卡尔积范式的推荐算法在真实业务场景中使用不多。

2. 排序

推荐系统排序模块将召回模块产生的标的物列表(一般几百个标的物),通过排序算法做重排,更好的反应用户的点击偏好,通过排序优化用户的点击行为,将用户更可能点击的标的物(一般几十个)取出来推荐给用户,最终提升用户体验。排序模块会用到很多特征,基于这些特征构建排序模型,排序特征在排序的效果中起到非常关键的作用,常用的特征可以抽象为如下5大类:

  • 用户侧的特征,如用户的性别、年龄、地域、购买力、家庭结构等。
  • 商品侧的特征,如商品描述信息、价格、标签等。
  • 上下文及场景特征,如位置、页面、是否是周末节假日等。
  • 交叉特征,如用户侧特征与商品侧特征的交叉等。
  • 用户的行为特征,如用户点击、收藏、购买、观看等。

排序框架需要充分利用上述五大类特征,以便更好的预测用户的点击行为。

  1. logistic回归模型
  2. GBDT模型
  3. Wide & deep模型
  4. DeepFM模型

logistic回归模型

logistic回归模型

GBDT模型

Wide & deep模型

DeepFM模型

https://blog.csdn.net/weixin_41744192/article/details/119854338

3. 业务调控

思考

是否一定需要排序模块
工业上的推荐算法一般分为召回和排序模块,召回的作用是从全量标的物集合(几万甚至上亿)中将用户可能喜欢的标的物取出来(几百个),排序阶段将召回的标的物集按照用户点击的可能性再做一次排序。但是排序阶段不是必须的,特别是对于标的物池不大的产品及团队资源较少的情形,没必要一开始就开发出排序框架。召回算法一般也会对标的物做排序(如果是评分预测模型,如矩阵分解,可以按照评分大小排序,如果是概率模型,可以按照对标的物的偏好概率大小排序)。缺失了排序模块的推荐系统可能精准度没有那么高,但是工程实现上相对更加简单,可以快速落地上线。
两种推荐算法的服务形式
推荐算法计算出的推荐结果可以直接插入数据库(如Redis等),直接为用户提供服务,另外一种方式是将核心特征计算好存储下来,当用户请求推荐业务时,推荐web服务通过简单计算将特征转化为最终给用户的推荐结果返回给用户。这两种方式一个是事先计算好,拿来就用,另外一种是准备好核心数据,在请求时实时计算最终结果。
推荐系统的评估
推荐系统是服务于公司商业目标的(盈利目标,提升用户体验、使用时长、DAU等,最终也是为了盈利),所以推荐系统落地到真实业务场景中一定要定义推荐系统的优化目标,只有目标具体而清晰,并可量化,才能更好的通过不断迭代优化推荐效果。

猜你喜欢

转载自blog.csdn.net/weixin_41744192/article/details/119832509
今日推荐