跳到正文 →

个性化推荐系统从0到1

嘉宾介绍 胡一川

胡一川是助理来也的联合创始人和CTO。助理来也是一个基于智能交互和推荐技术的私人助理应用。胡一川曾任百度架构师,负责百度视频推荐团队。2011年联合创立视频推荐引擎今晚看啥,并于2012年被百度收购。胡一川本科和硕士毕业于清华大学,博士毕业于宾夕法尼亚大学。


个性化是移动互联网与PC互联网最大不同点之一。正因为如此,个性化推荐系统被广泛应用于视频、电商、社交、新闻等各种互联网产品中。本期讲座主要介绍个性化推荐系统的基本原理、架构、算法和案例,希望能帮助到初创公司从0到1完成个性化推荐系统的搭建。

01|推荐系统案例

个性化是互联网产品的一大特点,推荐系统被广泛的应用于各种互联网产品中。我们先来看几个例子。

第一个例子是亚马逊。亚马逊是最早大规模使用推荐系统的互联网公司之一,推荐系统领域早期的几个专利都出自亚马逊。亚马逊刚成立时,首页上推荐的图书都是由专业编辑精心挑选出来的。1997年前后,亚马逊组建了一个小团队,尝试用算法来推荐图书。一开始大家都持怀疑态度,认为机器不可能推荐得比专业人士好。而事实上,机器推荐的效果比编辑推荐的效果好很多,远远超出了大家的预期。

第二个例子是Netflix。Netflix是一个在线影视内容提供商,这几年很火的《纸牌屋》就由它们出品。Netflix上有大量的影视内容,全球有几千万的付费会员,但整个网站没有搜索功能,每个人进入Netflix首先看到的是一个个性化的页面,里面的每一个影视内容都由推荐算法生成。Netflix非常重视推荐系统,曾经组织过一个推荐算法比赛,奖金一百万美元,当时引起了很大的轰动。

第三个例子是Facebook。作为一个社交网络,Facebook希望每个新用户加入后,能在短时间内添加更多的好友,这有助于提高用户活跃度与留存率。所以,Facebook在页面右侧做了一个People You May Know的区块,推荐用户可能认识的人。这个模块大大的提高了用户添加好友的速度,让Facebook迅速爆发。今天这个功能也成为了社交产品的标配。

从上面几个例子可以看出来,推荐系统的价值在于帮用户(user)去发现他感兴趣的物品(item),包括商品、内容、人等等。只有当物品的数量足够多时,推荐系统才有意义。

02|影响推荐系统的技术要素

影响一个推荐系统有4个要素,分别是领域知识数据算法用户界面。在设计一个推荐系统时,首先要思考这4点,然后再着手设计和实现。

领域知识是指推荐的物品属于什么领域。推荐图书、推荐电影、推荐好友,虽然都是推荐系统,背后的逻辑和方法都大不相同。这通常是产品经理需要考虑的问题,但作为推荐系统的设计者,也需要思考这些问题。

数据是指那些可以被推荐算法使用到的数据,主要分两类。一类是内容数据,主要指描述可推荐的物品的数据。以图书为例,标题、作者、简介、目录、评论等都属于内容数据。

另一类是用户行为数据,主要指用户与物品之间所产生交互数据。还以图书为例,用户的浏览行为、购买行为、评分行为都属于用户行为数据。构建一个好的推荐系统,往往要把大量的精力放在数据的获取、清洗、处理和挖掘上。

有了数据,就可以使用不同的算法来实现推荐了。推荐算法通常分为两类。一类叫相关推荐算法,就是针对一个物品推荐若干个类似的物品。在很多电商网站商品详情页,有一个叫「买过该商品的人还买过」区块,就属于相关推荐。

另一类算法叫个性化推荐算法,即直接向用户推荐若干个物品,而这些物品之间可能并不相关。在很多互联网产品首页有一个「猜你喜欢」的区块,就属于个性化推荐。当然,相关推荐也可以和个性化推荐结合起来,产生个性化的相关推荐。

最后一个要素是用户界面。很多设计推荐系统的人并不重视这一点,但我认为它非常重要。原因有两点。首先,用户界面决定了你能获取什么样的用户行为数据,这些数据是推荐算法的基础。其次,用户界面直接影响到用户的使用体验,同样的推荐算法在不同的用户界面下可能得到很不一样的结果。

以上是设计一个推荐系统时需要考虑的4个要素。这4个要素并不独立,而是相互影响,因此需要综合考虑。

03|推荐系统的关键问题

首先还是说说算法。很多人谈到推荐算法,就认为是矩阵分解,但事实上并非如此。矩阵分解只有在数据密度足够高的时候,才会有比较好的效果。当年Netflix举行比赛公布的数据包含17000部电影,平均每个用户对200个电影进行评分,稀疏度大概是1%。这是非常高的,因此矩阵分解在这样的数据上效果很好。

但对很多创业公司而言,物品的数量更大,用户的行为更少,导致数据非常稀疏。这种情况下,用一些基于相似度、基于特征的算法效果会更好。

接下来说一下推荐系统的评估。我们可以通过离线和在线两种方法来评估一个推荐系统。离线评估主要是在用户的历史行为数据上看推荐系统的召回率、准确率等指标。在线评估主要通过A/B测试来看推荐系统在线上的效果。A/B测试可以对比个性化推荐算法与非个性化推荐算法的效果,也可以对比多个个性化推荐算法的效果。

关于在线评估指标,点击率是一个比较通用的评估指标。但点击率高并不意味着推荐的效果好,因此最好用和业务相关的指标来评估一个推荐系统。以视频推荐为例,即使点击率很高,但用户点击之后如果马上关掉,就并没有达到推荐的效果。因此,对于视频推荐系统而言,推荐带来的观看时长,也是非常重要的指标。

最后说一下冷启动问题。当一个新用户过来时,如何为他生成有意义的推荐,这是每个推荐系统都会遇到的问题。

这里提供两种解决思路。第一个思路是想办法获取更多用户的信息,比如社交信息。举个例子,如果你的产品支持微博登录,可以拿到用户在微博上关注的人和发过的微博,基于这些信息,往往可以产生一个不错的初始推荐。我们当时做今晚看啥时,就提供了微博登录、豆瓣登录等各种社交帐号登录,通过这种方式来获取用户的基本信息,生成初始化的推荐。

第二个思路是让推荐系统变得更加的实时,用户在这一刻的行为能迅速影响到下一刻的推荐结果,这样只需要有较少的用户行为就能获得相对个性化的推荐结果。这种方法比较适合用户行为数据比较丰富的产品。

04|推荐系统的非技术因素

除了以上几点,设计一个推荐系统还应当考虑到一些非技术的因素。

比如说,推荐内容的可解释性。也就是说,你为什么向用户推荐这些物品,这对于一个推荐系统的效果影响很大。比如说,有一个区块要向用户推荐几部电影,如果取名为「猜你喜欢」效果就不会很好,但如果取名为「这些电影和你喜欢的XXX、YYY、ZZZ类似」,效果就会好很多。

再比如说,推荐内容的新颖性。如果总是向用户推荐和他历史行为类似的物品,最终推荐的内容会越来越局限,缺乏新颖性。因此,在设计算法时,要考虑增加推荐内容的新颖性,让用户有机会看到他之前完全没看到过、但可能会感兴趣的内容。


Q&A

Q1:对于初创公司,拥有何种量级的数据才要上推荐系统?

A:这要看你的产品里能够被推荐的物品是否足够多、足够长尾,推荐系统对于帮助你的用户发现更多物品是否有帮助。通常来讲,商品(书籍、服装)、内容(新闻、视频、音乐)、人这些都是适合推荐的。在这种情况下,即便你的用户不太多,也可以从早期就开始规划推荐系统。

 

Q2:业界典型的推荐系统,比如SNS的,电商的,视频的,一般的用户点击率大概是多少?

A:影响推荐系统点击率的因素很多,比如推荐算法、推荐区域的位置(第一屏和第二屏可以差一个数量级)等,所以很难说一半的点击率大概是多少。可以分享一下我在做视频推荐的例子,在百度视频(http://v.baidu.com)首页第二屏电影推荐区域,个性化推荐的点击率大概在20%-30%。

 

Q3:有关冷启动问题。新用户应该推什么内容给他?

A:如果对于用户完全一无所知,那么只能推荐一些热门的内容,并考虑到推荐的多样性。但是,如果能了解一些用户最基本的信息,对于冷启动也会有帮助,比如让用户上来先选一下性别、年龄等。

 

Q4:现在有没有看到一个跨网站的数据交换系统可以补充冷启动数据沉淀不足的?

A:我刚刚提到的社交数据可以算作这一类。有一些广告投放系统,也会有一些用户的行为数据,可以作为用户特征来解决冷启动的问题。

 

Q5:怎么对用户行为建模,建立用户行为数据库?

A:因为用户的行为种类非常多,而且非结构化,所以首先还是要看用户行为建模的目的是什么,需要解决什么样的问题。在这个基础上,再对用户行为数据进行更细致的清洗、分析和挖掘。

归类 全部文章