推荐系列(一):什么是推荐?
什么是推荐?
YouTube如何知道你可能希望接下来要观看的视频?Google Play商店如何为你挑选应用?这些恰到好处的推荐是魔法吗?答案当然是不,上述情况下,基于机器学习(ML)的推荐模型都可以确定视频和应用与你喜欢的其他内容的相似程度,然后提供推荐。推荐通常会有两种形式:
- 主页建议(home page recommendations);
- 相关项目建议(related item recommendations);
二者存在一些差别,下面进行简单介绍:
主页推荐
主页推荐根据用户的已知兴趣对用户进行个性化推荐,每个用户都能看到不同的推荐;
如果你转到Google Play Apps主页,可能会看到如下内容:
相关项目推荐
顾名思义,相关项目是与特定项目类似的推荐。在Google Play应用示例中,查看数学相关APP的用户也可能会看到相关的应用,例如有关科学的APP。
为什么进行推荐?
推荐系统可帮助用户在大型语料库中找到引人注目的内容。例如,Google Play商店数据库有数百万个应用,而YouTube则有数十亿个视频。而且每天都会添加更多应用和视频。用户如何找到新的引人注目的新内容?无非了两种途径:搜索跟推荐。搜索的时候有些关键词没有构建索引,且搜索后还是会出来大量的视频,如何挑选又陷入困难。但是,推荐引擎可以推荐给用户可能没有想过自己要搜索的内容,且自己对其感兴趣。
你知道吗?
- Google Play上40%的应用安装都来自推荐;
- YouTube上60%的观看时间来自推荐;
术语
在深入介绍下面内容之前,应该了解一些术语:
物品(items, documents)
系统推荐的实体。对于Google Play商店,这些物品是要安装的应用。对于YouTube,这些物品是视频。
查询(query, context)
系统用于给出推荐的输入。查询可以是以下组合:
- 用户信息 用户的ID;
用户之前与之互动的物品;
- 附加内容
查询时间
用户的设备
Embedding
从离散集(在本例中为查询集或要推荐的数据集)到称为嵌入空间的向量空间的映射。许多推荐系统依赖于学习查询和项目的适当 嵌入表示。
推荐系统概述
推荐系统的一种常见架构包括以下组件:
- 生成候选人(candidate generation)
- 评分(scoring)
- 重排序 (re-ranking)
生成候选人
在第一阶段,系统从潜在的巨大语料库开始,生成更小的候选子集。例如,YouTube中的候选生成器可将数十亿视频减少到数百或数千。考虑到语料库的巨大规模,模型需要快速评估查询。一个模型可能有多个候选生成器,每个候选生成器可以生成不同的候选子集。
评分
接下来,另一个模型对候选者进行评分和排名,以便选择要显示给用户的项目集(大约10个)。由于此模型评估相对较小的项子集,因此系统可以使用依赖于其他查询的更精确的模型。
重排序
最后,系统必须考虑最终排序的附加约束。例如,系统删除用户明确不喜欢的项目或提高更新内容的分数。重新排序还有助于确保多样性,新鲜度和公平性。