The World Best ST.

推荐系统学习

字数统计: 2.4k阅读时长: 8 min
2020/03/15 Share

推荐系统

推荐系统用于提供那些客户没有想到去搜索,但是对客户又有价值的内容

概述

术语

条目(item)

推荐系统的实体。对淘宝来说就是商品,对抖音来说就是视频

查询(Query)

推荐系统用以给出推荐的相关信息

用户信息:用于ID,用户先前产生交互的条目
上下文信息:一天中的时间,用户的设备
条目信息:商品名称,商品类别

嵌入(Embedding)

从离散集合(查询集或要推荐的条目)到嵌入(Embedding)空间的向量空间映射。 许多推荐系统都依赖于学习查询和项目的合理嵌入(Embedding)表示。

推荐系统架构

推荐系统的一种通用体系架构由三部分组成:召回、打分、重排

召回(粗排)

在此第一阶段,系统从潜在的庞大语料库开始,并生成更小的候选集。例如,抖音中的召回将从数十亿个视频中选出数百或数千个。考虑到语料库的庞大规模,该模型需要快速评估查询。给定模型可以有多个召回队列,每个召回队列都筛选出不同类型的候选子集。
见解:就是按照大类别进行粗略编排。

计分(精排)

接下来,另一个模型对候选集进行评分和排序,以选择要显示给用户的集合(大约10个)。由于此模型评估的是商品的相对较小子集,因此系统可以依靠其他信息来使用更精确的模型。
见解:根据更细的模型将粗略编排的结果进行精细编排。

重排(调序)

最后,系统必须考虑最终排名的其他限制。例如,系统删除用户明确不喜欢的项目或提高时效内容的得分。重新排序还可以帮助确保多样性,时效性和公平性。
见解:将编排完的结果根据用户或时效性等第三方因素进行重新调整。

召回

召回是推荐系统的第一阶段。 给定query,系统将生成相关的候选集合。 常见的召回方法:

基于内容过滤

  • 使用item之间的相似性来推荐与用户喜欢的item相似的item。

例如:如果用户A观看了两个可爱的猫视频,则系统可以向该用户推荐可爱的动物视频。

根据用户先前的操作或明确的反馈(例如点击,评论等),基于内容的过滤,假设一个应用商店要推荐给用户相应的APP。建立一个特征举证,每一行代表一个应用程序,每一列代表一个特征。包括不同的类别特征(例如,Education, Casual, Health),应用程序的发布者信息等。为简化起见,假定此特征矩阵是布尔类型的的:非零值表示应用程序具有该特征。

还可以在同一特征空间中表示用户。一些与用户相关的特征可以由用户明确提供。例如,用户在其个人资料中选择“娱乐应用”。其他特征可能是隐式的,具体取决于它们先前安装的应用程序。使用item相关特征来推荐给用户与之前喜欢的item类似的item。

优点:

  • 该模型不需要其他用户的任何数据,因为推荐是针对该用户的。 这使得更容易扩展到大量用户。

  • 该模型可以捕获用户的特定兴趣,并可以推荐其他用户很少感兴趣的但该用户喜欢的item。

缺点:

  • 由于item的特征表示在某种程度上是手工设计的,因此该技术需要大量领域知识。 因此,模型很依赖手工设计特征的好坏。
  • 该模型只能根据用户的现有兴趣提出建议。 换句话说,该模型扩展用户现有兴趣的能力有限。

协同过滤:

  • 同时使用query和item之间的相似性来进行推荐。这样可以提高模型的推荐拓展性。也就是说,协同过滤模型可以根据相似用户B的兴趣向用户A推荐商品。此外,可以自动学习Embedding,而无需依赖手工设计的特征。

例如:如果用户A与用户B类似,并且用户B喜欢视频1,则系统可以向用户A推荐视频1(即使用户A尚未看过任何与视频1类似的视频)。

优点:

  • 无需领域知识:不需要相关领域知识,因为Embedding是自动学习的。
  • 发掘用户兴趣:该模型可以帮助用户发现新的兴趣点。 系统可能并不知道用户对给定的item的兴趣度,但是模型仍会推荐给他,因为相似的用户有着相同的兴趣点。
  • 很好的初始模型:在某种程度上,该方法仅需要反馈矩阵即可训练矩阵分解模型。 而且该方法不需要上下文特征。 实际上,该方法可以用作多个召回队列中的一个。

缺点:

  • 冷启动问题:如果在训练数据中item从未出现过,则系统也无法计算其Embedding,也无法得到相应的预测结果。

基于神经网络的方法:

  • 利用神经网络生成相应的候选集。

排序

在生成候选对象之后,另一个模型会对生成的候选对象进行打分和排序,得到最后要推送的item列表。 推荐系统可能具有使用不同来源的多个召回队列,例如:

  • 矩阵分解模型的相关item。
  • 个性化的用户item。
  • “本地”与“非本地”项目; 也就是说,要考虑地理信息。
  • 热门或流行item。
  • 社交网络; 也就是朋友喜欢或推荐的item。

系统将这些不同的来源组合成一个通用的候选库,然后由单个模型对其进行打分并根据该分数进行排名。 例如,系统可以根据以下特征训练模型以预测用户观看视频的概率:

  • 查询特征(例如,用户观看记录,语言,国家/地区,时间)
  • 视频特征(例如标题,标签,视频Embedding)
    然后,系统可以根据模型的预测对候选库中的视频进行排序。

为什么还需要精排?

  • 一些系统依赖多个召回队列。 这些不同召回队列的得分不具有可比性。
  • 由于候选池较小,因此系统可以负担得起更多特征和更复杂的精排模型(可以更好地捕获上下文)。

选择排序模型的目标函数

常用的优化目标:

  • 最大化点击率:如果目标函数只针对点击进行优化,则系统可能会推荐诱导用户点击的视频。 该目标函数可以提高用户点击,但不能带来良好的用户体验。 用户的兴趣可能会很快消失。

  • 延长观看时间:如果目标函数针对观看时间进行优化,则系统可能会推荐较长的视频,这可能会导致不良的用户体验。 多个短视频的观看时长和一个长视频的观看时长一样是一样的。

  • 增加多样性并最大化观看时间:推荐较短的,但更可能吸引用户的视频。

打分的位置偏差

与在屏幕上方显示的item相比,在屏幕下方显示的item被点击的可能性较小。 但是,在对视频打分时,系统通常不知道最终将显示该视频的链接在屏幕上的哪个位置。 对所有可能的位置进行打分太耗时了。 即使对多个位置打分是可行的,系统仍可能无法在多个排序得分中保持一致性。

解决方案

  • 创建与位置无关的排序。
  • 对所有候选item进行排序,假设他们都在屏幕的顶部。

针对位置偏差也可使用相应的点击模型对排序结果进行调权纠正

重排

在推荐系统的最后阶段,系统对候选item重新排序,以考虑其他因素或约束。 一种重新排序的方法是使用过滤器来删除一些候选item。

时效性

大多数推荐系统旨在融合最新的使用信息,例如当前用户历史记录和最新item。使模型保持最新状态有助于模型给出更好的推荐。

多样性

如果系统始终推荐与query Embedding “最接近”的item,则候选item往往彼此非常相似。 多样性的缺乏会导致无聊的用户体验。 例如,如果仅推荐与用户当前正在观看的视频非常相似的视频,那么用户可能会很快失
去兴趣。

公平性

模型应公平对待所有用户。 因此,请确保模型没有从训练数据中学习到无意识的偏见。

参考资料:

https://github.com/mJackie/RecSys

https://blog.csdn.net/zhuzhufxz/article/details/80165078

CATALOG
  1. 1. 推荐系统
    1. 1.1. 概述
      1. 1.1.1. 术语
        1. 1.1.1.1. 条目(item)
        2. 1.1.1.2. 查询(Query)
        3. 1.1.1.3. 嵌入(Embedding)
      2. 1.1.2. 推荐系统架构
        1. 1.1.2.1. 召回(粗排)
        2. 1.1.2.2. 计分(精排)
        3. 1.1.2.3. 重排(调序)
    2. 1.2. 召回
      1. 1.2.1. 基于内容过滤
        1. 1.2.1.1. 优点:
        2. 1.2.1.2. 缺点:
      2. 1.2.2. 协同过滤:
        1. 1.2.2.1. 优点:
        2. 1.2.2.2. 缺点:
      3. 1.2.3. 基于神经网络的方法:
    3. 1.3. 排序
      1. 1.3.1. 为什么还需要精排?
      2. 1.3.2. 选择排序模型的目标函数
      3. 1.3.3. 打分的位置偏差
    4. 1.4. 重排
      1. 1.4.1. 时效性
      2. 1.4.2. 多样性
      3. 1.4.3. 公平性