Netflix 推荐系统的最新解读:算法、商业价值与创新。

sddtc 于 2016-06-26 发布

2009年由Netflix发起的Netflix Prize百万美金竞赛,绝对是推荐系统领域最标致性的事件,这次比赛不但吸引了众多专业人士开始投身于推荐系统领域的研究工作,也让这项技术从学术圈真正地进入到了商业界,引发了热烈的讨论并逐渐深入到了商业的核心腹地,功德无量。当然,最受益的肯定还是Netflix公司自己,不仅大有取代Amazon成为新一代推荐引擎之王的架势,而且从商业回报本身上看也无疑取得了非常巨大的回报。7年过去了,Netflix推荐系统的现状如何呢?ResysChina将带来最新的深度解读。

早年举办Netflix Prize竞赛的时候,Netflix推荐系统的主要目标是预测用户对某部影片的评分(1-5分),因为当年Netflix的主营业务还是DVD租赁,打分是Netflix最主要的获取用户反馈的方式。Netflix虽然仍然在使用着由Netflix Prize衍生出来的算法,但目前Netflix的核心业务模式已经转变为在线流媒体,因此Netflix可以从更多维度去了解用户的使用行为,比如,如何观看(使用什么设备、每天的什么时间,每周的哪天,观看的频度),用户是如何发现视频的,甚至是哪些视频已经推荐给了用户但并未被播放,等等。Netflix的最新用户数据:注册会员6500万人,每天观看视频的总时长1亿个小时。

Netflix新一代推荐系统的承载形式是「会员首页」,这也是每个会员登录之后的第一页,平均每3小时的视频播放中就有2个小时是从这里发起的。大家都知道,首页几乎是所有产品最最重要的页面,Netflix敢于把首页基于推荐系统来驱动,一来说明他们对推荐系统的重视程度,二来也是表明他们对自己推荐技术的高度自信。

Netflix讲解了使用到的几种最核心的推荐算法。

1、Personalized Video Ranker: PVR

这是Netflix推荐系统最核心的部分。基于「基因」的电影推荐主要就是由PVR来完成的,比如上图一中左图的第一行是「悬疑电影」,「悬疑」就是一种基因。PVR是千人千面的,即使同一个基因推荐序列,每个用户看到的影片及排序都是不同的。Netflix推荐系统中PVR的应用极其广泛,它是针对每个用户给出个性化推荐结果的基础,比如和「流行度」算法结合,可以让热门推荐也变得个性化起来。希望详细了解PVR算法的,可以看这篇文章[1]。

2、Top-N Video Ranker

上图一中右图第一行的「Top Picks」就是Top-N算法最典型的应用。一定程度上可以认为,Top-N是PVR算法的一个特例。PVR关注的是每个推荐序列的排序,而Top-N的核心目标是从所有序列中找出来最最相关的。可以简单理解为,Top-N的计算范围仅限于每个推荐序列头部的数据,优化目标也是从所有推荐序列中优中选优。

3、Trending Now

Netflix发现近期趋势(从几分钟到几天)是预测用户观看行为的有效因子,而且如果能够与合适的个性化方法结合起来的话效果还会更好。Netflix使用trending ranker[2]算法来生成Trending Now的推荐结果。这个算法在两类场景里尤其适用:1)每隔几个月(比如每年一次)会重复,且每次发生都会有一波明显的短期效应的,比如每年情人节期间的浪漫爱情片;2)突发的、短期的事件,比如媒体大规模报道了一场在人口密集区域登陆的飓风,就会引发一波对于飓风及其他自然灾害相关的纪录片和影片的关注。上图二左图的第二行为Trending Now的示例。

4、Continue Watching

Netflix使用continue watching raker来对是否继续观看某部影片或者某个系列来进行建模。Continue Watching不是未观看完视频的简单陈列,它会综合考虑距离上次观看的时间,是停在了影片的中段、开头还是结尾,使用的什么设备,期间是否又观看了别的影片等众多因素。上图二右图的第一行为此种推荐的示例。

5、Video-Video Smilarity

Because You Watched (BYW) 推荐——基于观看历史的推荐——是一种普遍被使用的非常重要的推荐形态,Netflix自然也不例外,上图一左图第二行就是示例。这类推荐方法的核心是计算两个影片的「相似度」,可以计算基于内容的基因相似度,可以从行为角度计算Item-based协同过滤的余弦相似度,当然也可以综合使用多种方法。这种相似度本身是非个性化的,Netflix会在把BYW推送到个人页面的时候加入个性化相关的度量。

6、Page Generation: Row Selection and Ranking

基于上面介绍的这些算法,Netflix通常会对每个用户都生成一个上万行的推荐结果集合。因此,如何把这些结果收缩到40行内放到用户首页内,且同时要保障相关性和多样性,这就非常讲究功力了,要综合考虑包括时间、场合、不同的家庭成员贡献账号等在在内的多种因素。2015年以前,Netflix主要使用的是基于规则的方法来生成推荐结果页面。今天,Netflix已经演进出了一种充分个性化且针对相关性与多样性进行了优化的页面生成算法[3]。

7、Evidence

这些算法一起组成了完整的Netflix推荐系统。但还有其他的一起算法,比如推荐理由选择算法,它和推荐算法一起构成了Netflix推荐的完整用户体验,用户依据推荐理由来判断推荐的影片是否适合他。Netflix把完整的推荐理由放在了示例图中页面左上角的部分,包括,1)对于影片的预测评分;2)内容介绍;3)演员阵容、所获奖项之类的元数据;4)推荐图片的选择能其他UI相关的部分,等等。推荐理由选择算法会评估推荐影片相关的可供显示的所有条目,然后选择出最有利于帮助用户做出判断的条目显示在页面的推荐理由区域。举个栗子,推荐理由选择算法会决定是应该标明一部影片获得过奥斯卡,还是提示用户这部影片和他最近刚看完的某部影片非常相似;它还会从多个版本的图库中选择出一张最贴合给定推荐理由的图片。

8、Search

Netflix的推荐在整个产品里面可以说是无处不在,从流播放时长来看,80%的用户选择都或多或少受到了推荐的影响。其余的20%来自于搜索,搜索也有自己的算法。用户通常都是搜索影片、演员或者是我们目录提供的基因;我们综合使用了信息检索及相关技术为用户提供最相关的搜索结果。但是,因为用户的搜索词也会经常触碰到不在我们库里的影片、演员或者是基因,再或者是一些宽泛概念,以至于搜索也变成了某种推荐问题。比如以下图三为例,1)左图是用户搜索「usual」的结果,推测用户很可能是要搜索影片「The Usual Suspects」,但这部影片Netflix库里没有,图中显示的搜索结果是基于这个推测做出的推荐结果;2)右图是用户搜索「fren」的结果,首先是显示名字里面包含fren的影片,左下角显示相关的演员,然后下面是推测用户是要找「French Movies」给出的推荐结果。在这些例子里面,当「搜索」没有结果的时候,推荐会接管用户请求给出来推荐结果。

本文转自: Netflix推荐系统的最新解读:算法、商业价值与创新