Netflix每年靠它节省10亿美元 这套个性化推荐系统是怎么回事?

本文主要是介绍Netflix每年靠它节省10亿美元 这套个性化推荐系统是怎么回事?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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首页推荐的示例。首页下面那一行行的豆腐块电影海报就是Netflix给出的推荐结果,总共会有40行,每一行都是基于一种推荐算法给出的结果,通常一行推荐结果的数量不超过75个,会综合考虑用户使用的设备等用户体验因素。每一行都会有对应的「标签」用来表明推荐理由,Netflix通过这种方式让推荐结果更直白,用户也更好理解。

  

0.jpg

 

  

0.png

 

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

  1、Personalized Video Ranker: PVR

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

  2、Top-N Video Ranker

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

  3、Trending Now

  Netflix发现近期趋势(从几分钟到几天)是预测用户观看行为的有效因子,而且如果能够与合适的个性化方法结合起来的话效果还会更好。Netflix使用trending ranker算法来生成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已经演进出了一种充分个性化且针对相关性与多样性进行了优化的页面生成算法。

  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」给出的推荐结果。在这些例子里面,当「搜索」没有结果的时候,推荐会接管用户请求给出来推荐结果。

  

0.png

 

  对于推荐系统的商业价值,Netflix提到了一个很有意思点,「推荐系统帮助Netflix赢得关键时刻」:当一个会员访问Netflix,Netflix希望能够帮助他在几秒钟之内就找到他感兴趣的影片,以免他去寻找别的乐子。

  个性化技术能够帮助人们接触到那些足够小众的内容,而这些内容在其他大众传播方式下,通常会因为诸如广告价值太低等原因,无法有效露出。从Netflix的数据可以很清楚的看到,由于推荐系统的作用,他们整个平台被点播到的影片数量大大的提升了。

  Netflix使用一个专门的指标来衡量这一点,ECS - Effective Catalog Size。

  当所有的播放都来自于一部影片的时候,ECS等于1;如果播放次数与影片数相等,即每次播放的都是不同的影片时,ECS等于影片数;其它情况ECS介于这之间。如下图,Netflix基于无个性化的数据(热门影片)与个性化推荐PVR的数据做了一个对比分析,在最显著的地方,个性化推荐使得ECS提升了4倍之多,即在同样播放次数的情况下,个性化推荐驱动的播放覆盖到的影片要多得多。

  

0.jpg

 

  另外一个很重要的点,个性化技术可以显著提高推荐影片的被接受度(Take-Rate),即推荐给用户的影片真正被播放的比率。Netflix同样做了一个对比分析,见下图,黑色线是基于热门度的曲线,红色线是基于个性化PVR指标的曲线,个性化推荐使得接受度有了巨大的提升。

  而且除此之外,比接受度提高更有意义的是,优秀的推荐技术使得用户的参与度(观看时长)与退订率都受益匪浅。Netflix的月退订率很低(很小的个位数百分比),大部分是因为支付的问题,真正主动选择退订的非常少。通过在个性化推荐领域的多年耕耘,月退订率得以降低了可观的百分比。月退订率的降低,一来有效延长了会员的付费存续期,二来也降低了为弥补流失用户所要付出的成本。

  

0.jpg

 

  除了覆盖度、接受度这两个具体指标之外,全面评价推荐系统的好坏面临的挑战极大。Netflix给了一个例子,对应「纸牌屋」给出的两组推荐结果见下图。

  

0.jpg

 

  直觉上大家通常会觉得下面这组推荐结果更好,因为把老版本的纸牌屋给推荐出来了。然而并没有。Netflix实际业务数据表明,图中上面第一组的推荐结果更好。当一个推荐系统面对海量的用户以及大量的待推荐条目的时候,如何评价推荐结果就是一件极其核心的事情了,你总得搞清楚自己到底在忙活什么对吧。

  Netflix采用的是付费会员的商业模式,因此付费会员数就是非常有效的评价指标,这个数字受三个部分的影响:1)新会员转化率;2)老会员退订率;3)已退订会员的召回率。

  好的推荐系统无疑可以让用户存留率增大,存留率又和用户的观看时长非常有关系。

  Netflix在大量使用AB测试的方法来不断的优化相关的指标,一个典型的从离线实验到在线AB测试的流程如下图所示,这个整套流程基本上也是成熟推荐系统的标配套路了。需要重点考虑的问题,1)如何准确地定义目标;2)如何合理地切分数据和流量;3)如何真实评价实验结果。

  

0.jpg

 

  当然,Netflix的推荐系统也还是有各种提升空间的,Netflix列举了几点。

  更有效的实验框架:能够支持离线实验算法更快速的迭代,并且可以更有效预测线上AB测试结果;在参与度指标体系中如何能够更好地平衡电影、连续剧、专题节目等各种形式的内容等。

  适应全球化的算法:Netflix计划在2016年底进入全球市场,不同版权要求的内容会有相应的限制,比如某些影片只限于某些国家播放,如何统一有效地利用Netflix全球数据来最大化某个区域的推荐效果。

  控制正反馈带来的偏置效应:推荐系统是典型的强正反馈系统,用户参与度越高的影片会进一步推荐给更大的用户群体,然后这些影片就又会更活跃。如何能够找到更有效的方法引入随机性,从而学习到更健壮的模型。

  更好的推荐页面构建方法:推荐页面构建还是一个相对新颖、研究比较少的领域。

  会员冷启动问题:这个是推荐领域老大难的问题了,Netflix也不例外,PVR算法在老用户上的效果要明显好于新用户。如何能够在新用户首月体验期内更好的拿下他,价值巨大。

  共享账户的问题:尽管Netflix已经提供了一个付费会员支持多个独立账号的功能,但多个家庭成员共享一个账号的情况仍然很常见,需要能够更加智能地自动化解决这个问题。

  提供更好的推荐理由:如何为给到每一个用户的每一个推荐结果都搭配上更个性化的推荐理由。

  据Netflix估算,个性化推荐系统每年为它的业务节省的费用可达10亿美金。打造一套优秀的推荐系统面临着很多挑战,但无疑又价值巨大。

你也可能感兴趣:
  • 智能电销机器人加盟 月入十万不是梦!
  • 微信小程序代理 2018年最火爆赚钱项目
  • 在线客服系统 创业好项目加盟赚钱首选!
  • 智能机器人如何赚钱 千亿市场等你瓜分!
  • 云主机、私有云项目创业 有创业者已月赚30w
  • 建站推广招商加盟排行榜 快速创业必看
      </div>

这篇关于Netflix每年靠它节省10亿美元 这套个性化推荐系统是怎么回事?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/229649

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言