2012年11月17日星期六


[译]推荐引擎反思

原文链接:http://www.readwriteweb.com/archives/rethinking_recommendation_engines.php

注:原文先是介绍了netflix的竞赛和推荐系统的分类,这些内容都被我略过,直接翻译了最主要的问题。所以,下文中提到的“竞争者”就是netflix竞赛的参与者,而“第五类算法”就是指如下四类推荐算法之外的第五种。
四类推荐算法:
    * 个性化的推荐:基于用户过去的行为作出推荐。
    * 社会推荐:基于相似用户的过去的行为进行推荐。
    * 基于item的推荐:基于事物间的相似性进行推荐。
    * 前面三种方法的混合。

车库里的人

推荐问题的复杂性在于它广泛的可能性。这即是说,很难精确地确定事物的哪一个基因适用于某个具体的人,很难指出一部电影或音乐的哪一部分特点让我们给它打5分。要转变技术人员的思维是很困难的。《连线》文章上提到了一个竞争者使用的是一个非常罕见的计谋来使得他的算法能有效运行。

他是来自伦敦的Gavin Potter,昵称是“车库里的人”,他的方法的依据是人类的惰性。显然,对电影的打分依赖于我们对之前看过的电影的打分。例如,如果你连续看了三部电影,并给它们打了4分,当你看到下一部稍好一点的电影时,会给它打5分。反之,如果你连续地给三部电影打了1分,那么当你看到如上一样的一部5分电影时,你却会打出4分。

当你还在思考这是不是真的的时候,你会发现这类算法现在已经占据了第五类推荐算法的位置,并在不断地发展当中,而其它的算法则发展甚少。通过一点心理学的知识来增强数学公式无疑是个好办法,这是我们接下来要谈及的。用过滤器来取代推荐系统

这样的情况曾多少次发生在你的身上:一个朋友给你推荐了一部电影或一个宾馆,你高高兴兴地去了影碟店或宾馆,但却败兴而归?很多!很显然,炒作使得期望的门槛提高了,反而更多的可能是带来失望。以数学语言来说,这种类型的错误被称为假阳性。现在考虑另一种情况,如果你的朋友不是给你推荐一部电影,而是告诉你你不会喜欢某部电影的,所以不用花钱去租它回来了;这种情况下会发生什么?

这种情况会带来些什么坏处呢?不会有什么坏处,因为很可能你就不会去看这部电影。但即使你看了,并且你也喜欢它,你也不会感觉到有负面的情绪影响。这个例子说明了我们对于假阳性和假阴性错误的不同反应。假阳性使我们感到沮丧,但假阴性不会。以过滤代替推荐的思想就是为了平衡这样的一种现象。

当Netflix作出推荐时,它总会有一个出错的比率。或早或晚地,它总会有出现差错的时候,然后会向你推荐一部你不喜欢的电影。如果推荐系统不是这样做,而是向你展示一堆新的片子,同时附带一个按钮:把那些我不喜欢的过滤掉。算法是一样的,但用户感受却大不一样的。

实时过滤

在实时新闻的时代,这种想法变得越来越重要与强大。我们越来越需要对新信息进行连续地过滤。拿我们的RSS阅读器来说,过滤是我们每天都得干的事情。我们从新闻流的角度来看这个世界,其中过去的事情是不相关的。我们不需要推荐,因为我们已经订阅得太多了。我们需要的是噪声过滤。需要一个算法会说:“嘿,你一定不会喜欢那个东西的,隐藏它吧。”

如果机器能做到那样,积极地把我们周围无用的信息扔开,剩下的我们就可以自己来处理了。从邮件过滤系统来借鉴一下,如果我们身边的工具都有一个按钮:“给我把这个过滤一下”,可能这个功能还是默认启用的,那我们就能做更多的事情了。

结论

构建一个完美的推荐引擎是一件非常复杂的任务。不管用什么方法,协同过滤或基于item相似的推荐都是不会被原谅的商业工具,假阳性般的错误会很快地让用户流失。可能把心理学应用于这个问题可以让用户懂得感激这些复杂的算法所做的事情。如果机器过滤掉那些我们一定不会喜欢的,而不是给我们推荐一些东西,我们可能会更加地宽容和给予更多的理解。
关于作者
阿稳, 豆瓣, 算法工程师
推荐系统;数据挖掘;算法架构及实现的可扩展性;R环境编程
如果你的问题已经能从我的博客中得到解答,就最好不过了:

没有评论:

发表评论