21.1. 推荐系统概述
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 SageMaker Studio Lab 中打开 Notebook

在过去的十年里,互联网已经发展成为一个大规模在线服务的平台,深刻地改变了我们交流、阅读新闻、购买商品和观看电影的方式。与此同时,网上提供的项目(我们使用术语*项目*来指代电影、新闻、书籍和产品)数量空前,需要一个能够帮助我们发现我们偏好的项目的系统。因此,推荐系统是强大的信息过滤工具,可以促进个性化服务,为个人用户提供量身定制的体验。简而言之,推荐系统在利用海量数据使选择变得易于管理方面发挥着关键作用。如今,推荐系统是亚马逊、Netflix和YouTube等许多在线服务提供商的核心。回想一下 图 1.3.3 中亚马逊推荐的深度学习书籍的例子。采用推荐系统的好处是双重的:一方面,它可以大大减少用户寻找项目的精力,缓解信息过载问题。另一方面,它可以为在线服务提供商增加商业价值,是收入的重要来源。本章将介绍推荐系统领域的基本概念、经典模型和深度学习的最新进展,并附有实现示例。

../_images/rec-intro.svg

图 21.1.1 推荐过程示意图

21.1.1. 协同过滤

我们从推荐系统中的一个重要概念——协同过滤(collaborative filtering,CF)开始。这个术语最初由Tapestry系统 (Goldberg et al., 1992) 创造,指的是“人们合作帮助彼此执行过滤过程,以处理大量的电子邮件和发布到新闻组的消息”。此后,这个术语的含义变得更加丰富。广义上讲,它是利用涉及多个用户、代理和数据源协作的技术来过滤信息或模式的过程。自问世以来,协同过滤有多种形式,也提出了许多协同过滤方法。

总体而言,协同过滤技术可分为:基于内存的协同过滤、基于模型的协同过滤以及它们的混合体 (Su and Khoshgoftaar, 2009)。代表性的基于内存的协同过滤技术是基于最近邻的协同过滤,例如基于用户的协同过滤和基于项目的协同过滤 (Sarwar et al., 2001)。像矩阵分解这样的潜在因子模型是基于模型的协同过滤的例子。基于内存的协同过滤在处理稀疏和大规模数据方面存在局限性,因为它基于共同项目计算相似度值。基于模型的方法因其在处理稀疏性和可扩展性方面的更强能力而变得更受欢迎。许多基于模型的协同过滤方法可以与神经网络相结合,从而在深度学习的计算加速下,产生更灵活、可扩展性更强的模型 (Zhang et al., 2019)。通常,协同过滤仅使用用户-项目交互数据来进行预测和推荐。除了协同过滤,基于内容和基于上下文的推荐系统在整合项目/用户的内容描述以及时间戳和位置等上下文信号方面也很有用。显然,当有不同的输入数据时,我们可能需要调整模型类型/结构。

21.1.2. 显式反馈和隐式反馈

为了了解用户的偏好,系统需要收集他们的反馈。反馈可以是显式的,也可以是隐式的 (Hu et al., 2008)。例如,IMDb 收集电影的一到十星的星级评分。YouTube 提供“赞”和“踩”按钮让用户表达他们的偏好。显然,收集显式反馈需要用户主动表明他们的兴趣。然而,显式反馈并不总是容易获得,因为许多用户可能不愿意对产品进行评分。相对而言,隐式反馈通常更容易获得,因为它主要关注对用户点击等隐式行为的建模。因此,许多推荐系统都以隐式反馈为中心,通过观察用户行为间接反映用户的观点。隐式反馈有多种形式,包括购买历史、浏览历史、观看记录甚至鼠标移动。例如,一个购买了同一作者多本书的用户可能喜欢那个作者。请注意,隐式反馈本质上是有噪声的。我们只能*猜测*他们的偏好和真实动机。一个用户观看了一部电影并不一定表示对该电影持积极看法。

21.1.3. 推荐任务

在过去的几十年里,许多推荐任务得到了研究。根据应用领域,有电影推荐、新闻推荐、兴趣点推荐 (Ye et al., 2011) 等。也可以根据反馈和输入数据的类型来区分任务,例如,评分预测任务旨在预测显式评分。Top-\(n\) 推荐(项目排序)根据隐式反馈为每个用户个性化地对所有项目进行排序。如果还包括时间戳信息,我们可以构建序列感知推荐 (Quadrana et al., 2018)。另一个流行的任务叫做点击率预测,它也基于隐式反馈,但可以利用各种类别特征。为新用户推荐和向现有用户推荐新项目被称为冷启动推荐 (Schein et al., 2002)

21.1.4. 小结

  • 推荐系统对个人用户和行业都很重要。协同过滤是推荐中的一个关键概念。

  • 反馈有两种类型:隐式反馈和显式反馈。在过去十年中,许多推荐任务得到了探索。

21.1.5. 练习

  1. 你能解释推荐系统是如何影响你的日常生活的吗?

  2. 你认为有哪些有趣的推荐任务可以被研究?

讨论