Netflix 推荐系统 (Part One)-排序算法

850 阅读4分钟

这一系列的文章是关于netflix techblog的推荐系统相关文章的总结。大部分内容来自netflix-techblog:recommendations

按照时间顺序,最早的关于推荐系统的文章发表于2012年.

Netflix Recommendations: Beyond the 5 stars (Part 1)

Netflix Recommendations: Beyond the 5 stars (Part 1)

最早在2006年,Netflix举办了一个名叫Netflix Prize的比赛,用来征集movie rating prediction算法。最终, Matrix Factorization和Restricted Boltzmann Machines (RBM)算法在比赛中取得了最好的结果。Netflix把这两个算法用到了自己的产品中。 Netflix在这篇blog中阐述了推荐算法的重要性以及他们为什么要使用推荐算法,但我们忽略这一部分,只阐述技术相关的问题。

从用户进入首页开始,Netflix就开始在各种地方使用推荐系统,以使用户尽可能获得个性化的体验。Netflix的推荐系统有这些目标:

  • Accuracy:这是一般推荐系统都有的预测准确度的目标
  • Diversity:在家庭使用的场景,多样性尤为重要
  • Awareness:Netflix希望用户知道个性化内容是怎样生成的,其中最典型的一个做法是explainable recommendation reason

在推荐理由的可视化上,Netflix充分利用了与Facebook的连接,这样他们就可以使用好友的兴趣爱好来进行reco以及reco reason的解析。

一些最有识别度的collection被称为genre,这相当于一些cluster,根据这些cluster推荐能更好地保证diversity。内容之间的similarity也是考虑的重点,实际上,大部分推荐系统都是以此为根基的。 Netflix的推荐系统从结构上就是经典的普通推荐系统,主要由retriver和ranker组成,而上述的算法主要是用在ranking阶段的。

Netflix Recommendations: Beyond the 5 stars (Part 2)

Netflix Recommendations: Beyond the 5 stars (Part 2)

Ranking是推荐系统最重要的组成部分之一。推荐系统的目标主要是提供一些有吸引力的物品供人选择。 这通常通过选择一些项目并按某个指标的顺序对其进行排序来完成。 最常见的呈现推荐项目的方式是某种形式的列表,推荐系统需要一个适当的排名模型,可以使用各种各样的信息来为每个项目提供最佳的项目排名。 Netflix选择的排序目标是"受欢迎程度"和"预期用户评分",这是很容易理解的,当然在实际情况的不同场景中,还会有很多其它的附属指标。

许多监督学习方法可用于排名。 典型的选择包括Logistic回归,支持向量机,神经网络或基于决策树的方法,如梯度提升决策树(GBDT)。 另一方面,近年来出现了大量专门用于学习排名的算法,例如RankSVM或RankBoost。 没有简单的办法去确定哪种模型在给定的排名问题中表现最佳。您的特征空间越简单,您的模型就越简单。 只有和特征空间和实际情况匹配的算法,才是好算法。

Data and Models

Netflix的数据源包括:

  • 来自用户的数十亿item rating。每天收到数百万的new ratings。
  • 使用item popularity作为基线。有很多方法可以计算受欢迎程度,可以在不同的时间范围内计算它,例如每小时,每天或每周。或者按地区或其他相似性指标对成员进行分组,并计算该组内的受欢迎程度.
  • 每天收到数百万个流播放事件,其中包括持续时间,时间和设备类型等上下文。
  • 用户每天都会在他们的队列中添加数百万个项目。
  • 每个item都有丰富的元数据:演员,导演,流派,家长评级和评论。
  • 知道Netflix推荐的项目以及向用户展示的内容,并了解这些如何影响用户的行动。还可以观察用户的interaction:滚动,鼠标悬停,点击或在给定页面上花费的时间。
  • 社交数据:可以处理相关朋友观看或评分的内容。
  • 用户每天直接在Netflix服务中输入数百万个搜索字词。
  • 上面提到的所有数据都来自内部资源。还可以利用外部数据来改进的功能。例如,可以添加外部项目数据功能,如票房表现或评论。
  • 当然,这还不是全部:还有许多其他功能,例如可以在预测模型中使用的人口统计,位置,语言或时间数据。

以下model是Netflix曾经考虑或者尝试过的,但这并不是全部:

  • Linear regression
  • Logistic regression
  • Elastic nets
  • Singular Value Decomposition
  • Restricted Boltzmann Machines
  • Markov Chains
  • Latent Dirichlet Allocation
  • Association Rules
  • Gradient Boosted Decision Trees
  • Random Forests
  • Clustering techniques from the simple k-means to novel graphical approaches such as Affinity Propagation
  • Matrix factorization

数据驱动是我们研究推荐系统时一般会采用的方法,Netflix也不例外。具体表现就是,每个上线的算法都要经过AB test。它的AB Test的流程和大部分公司都没什么区别。