推荐系统的工作原理:"猜你喜欢”是怎么猜中你心思的?

发表于:2012-12-13来源:果壳作者:ccyou点击数: 标签:推荐
推荐系统的工作原理:"猜你喜欢”是怎么猜中你心思的?.如今,到网上购物的人已经习惯了收到系统为他们做出的个性化推荐。Netflix 会推荐你可能会喜欢看的视频。TiVo 会自动把节目录下来,如果你感兴趣就可以看。

  (文/Joseph A. Konstan & John Riedl)如今,到网上购物的人已经习惯了收到系统为他们做出的个性化推荐。Netflix 会推荐你可能会喜欢看的视频。TiVo 会自动把节目录下来,如果你感兴趣就可以看。Pandora 会通过预测我们想要听什么歌曲从而生成个性化的音乐流。

  所有这些推荐结果都来自于各式各样的推荐系统。它们依靠计算机算法运行,根据顾客的浏览、搜索、下单和喜好,为顾客选择他们可能会喜欢、有可能会购买的商品,从而为消费者服务。推荐系统的设计初衷是帮助在线零售商提高销售额,现在这是一块儿规模巨大且不断增长的业务。与此同时,推荐系统的开发也已经从上世纪 90 年代中期只有几十个人研究,发展到了今天拥有数百名研究人员,分别供职于各高校、大型在线零售商和数十家专注于这类系统的其他企业。

  这些年来,推荐系统有了相当的进展。开始时它们还相对较为粗糙,往往对行为做出不准确的预测;但随着更多的和不同类型的网站用户数据变得可用,推荐系统得以将创新算法应用于这些数据之上,它们迅速得到了改善。今天,推荐系统都是些极其复杂和精专的系统,常常看起来比你自己还要了解你。同时,推荐系统正在向零售网站以外的领域拓展:大学用它们来引导学生选课,移动电话公司靠它们来预测哪些用户有可能转投另一家供应商,会议主办方也测试过用它们来分配论文给审稿专家。

  我们两人从推荐系统的早期开始便一直在开发和研究它们,最初是以学术研究者的身份,参与 GroupLens 计划(GroupLens Project)。1992 年起,GroupLens 通过对美国兴趣论坛网站 Usenet 讨论区里的消息进行排序,将用户指向他们可能会感兴趣、但自己尚未发现的话题线索。几年以后,我们成立了 Net Perceptions,这是一家推荐算法公司,在互联网第一次热潮期间(1997 年 - 2000 年),一直处于业界领先地位。有鉴于此,虽然这些公司极少公开谈论他们的推荐系统是如何运作的,我们的经验使我们能够深入了解亚马逊和其他在线零售商幕后的情景。(在本文中,我们的分析是在观察和推理的基础上得出的,不包含任何内部消息)。

  下面就是我们所看到的。

  推荐算法是怎么“猜你喜欢”的?

来源:recommenderapi.com

  

  你有没有想过自己在亚马逊眼中是什么样子?答案是:你是一个很大、很大的表格里一串很长的数字。这串数字描述了你所看过的每一样东西,你点击的每一个链接以及你在亚马逊网站上买的每一件商品;表格里的其余部分则代表了其他数百万到亚马逊购物的人。你每次登陆网站,你的数字就会发生改变;在此期间,你在网站上每动一下,这个数字就会跟着改变。这个信息又会反过来影响你在访问的每个页面上会看到什么,还有你会从亚马逊公司收到什么邮件和优惠信息。

  许多年来,推荐系统的开发者试过用各种各样的方法来采集和解析所有这些数据。最近这段时间,多数人都选择使用被称为个性化协同推荐(Personalized Collaborative Recommender)的算法。这也是亚马逊、Netflix、Facebook 的好友推荐,以及一家英国流行音乐网站 Last.fm 的核心算法。说它 “个性化”,是因为这种算法会追踪用户的每一个行为(如浏览过的页面、订单记录和商品评分),以此进行推荐;它们可不是瞎猫碰上死耗子——全凭运气。说它 “协同”,则是因为这种算法会根据许多其他的顾客也购买了这些商品或者对其显示出好感,而将两样物品视为彼此关联,它不是通过分析商品特征或者关键词来进行判断的。

  不同类型的个性化协同推荐系统最晚从 1992 年开始便已经出现。除了 GroupLens 计划,另一项早期的推荐系统是 MIT 的 Ringo,它会根据用户的音乐播放列表从而给用户推荐其他他们有可能会喜欢的音乐。

  User-User 算法:计算用户之间的相似度

  GroupLens 和 Ringo 都使用了一种简单的协同算法,被称为 “用户关联”(user-user)的算法。这种类型的算法会计算一对用户之间的 “距离”,根据的是他们对同一物品打分的相似程度。举例来说,如果吉姆和简都给《电子世界争霸战》(Tron)这部电影打了 5 分,那么他们之间的距离就是 0。如果吉姆给它的续集《创:战纪》(Tron: Legacy )这部电影打了 5 分,而简只打了 3 分,那么他们之间的距离就变大了。按照这样的计算得出来品味相对 “靠近” 的用户,我们把他们称之为共有一个 “邻集”(neighborhood)。

  但是,这种用户关联的策略效果并不是很好。首先,形成有意义的邻集很难:很多用户两两之间只有很少几个共同评分,有的就完全没有;而仅有的那几个都打了分的项目呢,往往是票房大片,基本上人人都喜欢的那种。再来,由于用户之间的距离可以变得很快,算法必须当场就进行大部分的计算;而这可能会比一个在网站上这儿点点那儿戳戳的人下一个动作发出之前需要更久的时间。

  Item-Item 算法:计算物品之间的关联

  因此,大部分的推荐系统如今都依靠一种“物-物关联”(item-item)的算法,这种算法计算的是两本书、两部电影或者两个其他什么东西之间的距离,依据的是给它们打过分的用户的相似度。喜欢 Tom Clancy 书的人很可能会给 Clive Cussler 的作品打高分,因此 Clancy 和 Cussler 的书就共处一个邻集。一对物品之间的距离可能是根据成百上千万的用户的评分计算得出,在一段时间里往往保持相对稳定,因此推荐系统可以预先计算距离,并更快的生成推荐结果。亚马逊和 Netflix 都曾公开表示过他们使用的是物-物关联算法的变种,但对细节都绝口不提。

  用户关联算法和物-物关联算法都有的一个问题,是用户评分的不一致性。当给他们机会再评一次分时,用户往往会对同一件物品给出不同的得分。品味在变、心情在变,印象也在变。MIT 在上世纪 90 年代进行的一项研究表明,在最初打分一年以后,用户的评分会发生平均 1 分(满分 7 分)的变动。研究人员们也在一直在尝试不同的方法在模型中纳入这一变量;比如说,如果用户给某个商品了打一个分,但这个评分与推荐算法所了解的关于这个人和这个商品的所有其他信息不相符,有的推荐算法就会邀请用户再次对这个商品进行评价。

原文转自:http://www.ltesting.net