Logo
Section 1 / 7

问题描述

让我们来熟悉一下构建推荐系统这项任务。

导入

问题描述

让我们来熟悉一下构建推荐系统这项任务。

简介

我们日常使用的大多数平台都采用了推荐系统。

例如:

  1. 亚马逊首页会推荐我们可能感兴趣的商品。
  2. Pinterest 的信息流中充满了基于趋势和用户浏览历史而推荐的 Pin。
  3. Netflix 根据用户的观影偏好、热门影片等因素推荐电影或剧集。

本章将重点讲解 Netflix 的电影推荐问题,但类似的技术几乎可以应用于所有其他推荐系统。

问题描述

面试官要求你为一名 Netflix 用户展示媒体内容(电影/剧集)推荐结果。你的任务是设计推荐方式,以最大化用户实际观看这些内容的可能性。

问题可视化

推动 Netflix 成功的关键因素之一就是其推荐系统。该算法能够精准地将合适的内容推送给合适的用户。
与 Netflix 的推荐系统不同,一个简单的推荐系统只会一味推荐当前热门的电影或剧集,而不考虑具体用户的个人偏好;最多也只是查看用户过去的观看记录,并推荐同类型的影视作品。

Netflix 方法的另一个关键点在于,它能够推荐一些看似不同于用户常规选择的内容。然而,这些推荐并非凭空猜测,而是基于其他用户的观看历史——这些用户与目标用户在行为上存在某些共同模式。通过这种方式,用户得以发现原本不会主动寻找的新内容。

📝 在 Netflix 上观看的节目中,有 80% 是由推荐系统驱动的,而非用户主动搜索并观看某个特定节目。

当前的任务是构建一个类似的推荐系统,既能吸引用户持续观看,又能引导他们接触多样化的内容,从而拓宽他们的视野。

问题范围

了解了当前的问题后,接下来明确问题的范围:

  1. 截至 2019 年,平台的订阅用户总数为 1.635 亿。
  2. 每日活跃的国际用户达 5300 万。

因此,你需要为大量用户提供高质量的每日推荐服务。

在机器学习领域,构建推荐系统的一种常见方法是将其建模为分类问题,目标是预测用户对内容的互动概率。因此,问题可表述为:

“给定一名用户及其上下文信息(时间、地理位置、季节等),预测其对每部电影的互动概率,并据此对电影进行排序。”

问题建模

我们已经确定,需要先预测用户对每部电影/剧集的互动概率,然后根据该得分对影视内容进行排序或排名。此外,由于我们的核心目标是促使用户尽可能多地观看推荐内容,因此该推荐系统将基于隐式反馈(implicit feedback)构建,即使用二元值表示:用户是否观看过某部影视作品(看过为 1,未看为 0)。

下面我们来解释为何选择使用“隐式反馈”作为概率预测依据来进行电影排序,而不是采用“显式反馈”来预测评分。

构建一个推荐系统,用于预测用户对媒体内容的评分。目标是推荐那些用户可能给予高分的内容。

用户反馈类型

通常情况下,终端用户对推荐内容的反馈分为两种类型:

  1. 显式反馈(Explicit feedback):

    用户对推荐内容给出明确的评价。在本例中,表现为星级评分,例如用户给一部电影打出五颗星中的四颗星。

    此时,推荐问题被视为一个评分预测问题。

  2. 隐式反馈(Implicit feedback):

    隐式反馈来源于用户与推荐内容的交互行为。这种反馈通常是二元的。例如,用户观看了某部电影(记为 1),或未观看(记为 0)。

    此时,推荐问题被视为一个排序问题。

使用隐式反馈的一个主要优势是,可以收集到大量的训练数据,从而更深入地了解用户行为,实现更精准的个性化推荐。

而显式反馈则不具备这一优势。用户在观看电影后很少主动打分,如下图漏斗所示。

显式反馈还面临“非随机缺失”(missing not at random, MNAR)的问题:用户通常只对自己喜欢的内容进行评分。这意味着四星或五星评价远多于一星、二星或三星。因此,我们难以获取用户不喜欢哪些类型的电影的信息。同时,评分数量较少的电影在推荐过程中的影响力也会被削弱。

基于动态流的系统

指标