推荐系统
推荐系统用于提供那些客户没有想到去搜索,但是对客户又有价值的内容
概述
术语
条目(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往往彼此非常相似。 多样性的缺乏会导致无聊的用户体验。 例如,如果仅推荐与用户当前正在观看的视频非常相似的视频,那么用户可能会很快失
去兴趣。
公平性
模型应公平对待所有用户。 因此,请确保模型没有从训练数据中学习到无意识的偏见。
参考资料: