推荐引擎反思
上周我再一次看了 Alex Iskold 的这篇博文,有意翻译出来和大家分享,于是就开始行动了。昨晚翻看了阿稳大神的公开日记,发现阿稳早在08年就翻译了这篇博文,所以和阿稳翻译的校对了下,内容如下:
原文链接:http://readwrite.com/2008/02/24/rethinking_recommendation_engines
两年多年(2006年),Netflix 宣布举办推荐引擎大赛——对于能将 Netflix 的推荐系统(Cinematch)精准度提高 10% 的 team 或个人,将给予 1 百万美金的奖励。许多 team 争相参与破解这个问题,并为能使用这些前所未有的可用数据而感到兴奋。最初各支 team 的进步都很可观,但慢慢的算法的可提升空间开始止步不前,最终各支 team 的结果提升大都停留在了 8.5% 左右。
在这篇文章中,我们会讨论推荐引擎的改善不仅仅是一个算法问题,还是一个呈现问题。以过滤代替推荐,同时交付给用户的时候不要设置过高的期望,会比处理很多数据快很多。
构建一个推荐引擎是一项复杂的工作,这个我们一年前讨论过。除了技术上挑战难度的增加,也有一些根本的心理问题:人们希望推荐,如此一来,我们什么时候给用户推荐呢?也许一个更大的问题是:当用户收到不是他们想要的推荐的时候,用户该如何宽容我们?
推荐引擎遗传学
所有推荐引擎都在尝试解决以下问题:给定一个特定用户的评分,以及整个用户群,想出将会喜欢的新物品。有许多算法能用来解决这个问题,但是所有这些算法都集中于三个要素:个人的,社会化的和基本的。
* 个性化的推荐:基于用户过去的行为进行推荐
* 社会化的推荐:基于相似用户过去的行为进行推荐
* 基于 item 的推荐:基于 item 本身(如内容相似形)的推荐
* 前面三种方法的混合推荐
社会化的推荐也被称为协同过滤 —— 喜欢 X 的用户也喜欢 Y。例如:喜欢《指环王》的用户很可能会喜欢《龙骑士》和《纳尼亚传奇》。这个推荐方法的问题在于现实中难以对人们的口味进行一个简单的分类。如果两个用户对于科幻电影有着共同的喜好,并不意味着他们在戏剧和悬疑剧上也有着相似的喜好。从遗传学的角度来看待这个问题是一个比较好的方法。很多时候我们遇到人们有一些我们熟悉的特征,这些特征在其他人身上也能看到。例如:眼睛可能很面熟,或者是嘴唇,但是他们确是完全不同的人种。
另一种推荐是基于 item 的推荐。这种推荐系统最好的例子的就是 Pandora 的音乐推荐服务。Pandora 为每首音乐标注了 400 多个特征,这些特征可以形象的称为“音乐基因”,Pandora 就是基于这些“音乐基因”进行工作的,它会根据这些“基因”自动匹配音乐。然而这种方法在算法调优上有很大的挑战,并且想要把类似的方法应用在其他类型的垂直网站也是一件非常有挑战的事情。例如:对于电影,你需要考虑从哪些维度评测一部电影,从导演,演员,剧情;还有一些比较模糊的如音效,场地,灯光,摄影等等。这些电影一定会有的东西,但却很复杂。
车库里的家伙
推荐问题的复杂性在于它广泛的可能性。具体说就是:对于某一个具体的人,很难准确的确定哪一些基因适用于他,很难指出一部电影或一首音乐的哪些基因让我们给它打 5 分。转变工程师的思维是很困难的。这就是为什么《连线》文章中强调参赛者们使用了一种非常罕见的技巧来使他的算法有效运行。
这个家伙来自伦敦的 Gavin Potter,网名 Guy In The Garage(车库里的家伙),他的方法依赖了人的惰性。很显然,对电影的评分依赖于我们之前看过的电影的评分。例如:如果你连续观看了三部电影,并给它们打了 4 分,那么当你看到下一部稍好一点的电影时,你将会打 5 分。反之,如果你连续给三部电影打了 1 分,那么当你看到和刚刚一样的一部 5 分的电影时,你可能只会打 4 分。
当你还在思索这是不是真的的时候,你将会发现这类算法现在已经占据了第 5 类推荐算法的位置,并在不断的发展,情况远远比其他的算法好。通过一点心理学的知识来强化数学公式无疑是一个好办法,这也是我们接下来要谈及的问题。
用过滤取代推荐
有多少次这样的情况发生在你身上:朋友向你推荐了一部电影或一个宾馆,你兴高采烈的去了,但却败兴而归?很多!很显然,炒作使得期望的门槛变高了。用数学术语讲,这种类型的错误被称为假阳性。现在考虑这样的一种情况,如果你的朋友不是给你推荐一部电影,而是告诉你你肯定不会喜欢的一部电影,这样你就不用花钱去租它了。这种情况下会发生什么呢?
这种情况会带来什么坏处呢?答案是不会有什么坏处,因为你很可能就不会去看这部电影。但即使你真的看了这部电影并且喜欢这么电影,你也不会有负面的情绪。(相反你会感到很惊喜,哇塞!原来这部电影这么棒)。这个例子充分说明了用户对于假阳性和假阴性错误的不同反应。假阳性使我们感到沮丧,但假阴性不会。以过滤代替推荐的思想就是为了平衡这样的一种现象。
当 Netflix 作出推荐时,它总会有一定的出错比例。或早或晚,错误将会出现,推荐一部你不喜欢的电影给你。如果推荐系统不是这样做,而是推荐给你新电影,同时有一个按钮:把那些你不喜欢的电影过滤掉。同样的算法,但是感受确是不一样的。
实时过滤
在实时新闻的时代,这种想法变得越发重要和强大。我们越发需要对新的信息进行连续的过滤。就像我们每天都用 RSS 阅读器过滤文章一样。从新闻流的角度来看这个世界,过去的事情都是不相关的。我们不需要推荐,因为我们已经订阅了很多的内容。我们需要过滤掉噪音。需要一个算法说:“嗨,你一定不会喜欢这个东西的,把它隐藏掉吧!”。
如果机器能做到那样,积极地把我们周围无用的信息扔开,那么剩下的我们就可以自己来处理了。借鉴邮件过滤系统,如果我们身边的工具都有一个按钮:“帮我把这个过滤掉”,并且这个工具可能还是默认启动的,那么我们就能做更多的事情了。
结论
构建一个完美的推荐引擎是一项非常复杂的任务。不管使用什么方法,协同过滤或基于物品属性的推荐,都是不会被原谅的商业工具,假阳性的错误会让用户逐渐流失。可能把心理学应用于这个问题,可以让用户懂得感激这些复杂算法所做的事情。如果系统过滤掉那些我们一定不喜欢的东西,而不是给我们推荐一堆东西,我们可能会更加宽容和给予更多的理解。
现在请告诉我对于推荐引擎你的一些经验。你的推荐引擎真的工作的很好吗?你是否会用开放的过滤取代推荐?除了电影和新闻,你会在哪些地方使用过滤器?
> bornhe's blog
原文链接:http://readwrite.com/2008/02/24/rethinking_recommendation_engines
两年多年(2006年),Netflix 宣布举办推荐引擎大赛——对于能将 Netflix 的推荐系统(Cinematch)精准度提高 10% 的 team 或个人,将给予 1 百万美金的奖励。许多 team 争相参与破解这个问题,并为能使用这些前所未有的可用数据而感到兴奋。最初各支 team 的进步都很可观,但慢慢的算法的可提升空间开始止步不前,最终各支 team 的结果提升大都停留在了 8.5% 左右。
在这篇文章中,我们会讨论推荐引擎的改善不仅仅是一个算法问题,还是一个呈现问题。以过滤代替推荐,同时交付给用户的时候不要设置过高的期望,会比处理很多数据快很多。
构建一个推荐引擎是一项复杂的工作,这个我们一年前讨论过。除了技术上挑战难度的增加,也有一些根本的心理问题:人们希望推荐,如此一来,我们什么时候给用户推荐呢?也许一个更大的问题是:当用户收到不是他们想要的推荐的时候,用户该如何宽容我们?
推荐引擎遗传学
所有推荐引擎都在尝试解决以下问题:给定一个特定用户的评分,以及整个用户群,想出将会喜欢的新物品。有许多算法能用来解决这个问题,但是所有这些算法都集中于三个要素:个人的,社会化的和基本的。
* 个性化的推荐:基于用户过去的行为进行推荐
* 社会化的推荐:基于相似用户过去的行为进行推荐
* 基于 item 的推荐:基于 item 本身(如内容相似形)的推荐
* 前面三种方法的混合推荐
社会化的推荐也被称为协同过滤 —— 喜欢 X 的用户也喜欢 Y。例如:喜欢《指环王》的用户很可能会喜欢《龙骑士》和《纳尼亚传奇》。这个推荐方法的问题在于现实中难以对人们的口味进行一个简单的分类。如果两个用户对于科幻电影有着共同的喜好,并不意味着他们在戏剧和悬疑剧上也有着相似的喜好。从遗传学的角度来看待这个问题是一个比较好的方法。很多时候我们遇到人们有一些我们熟悉的特征,这些特征在其他人身上也能看到。例如:眼睛可能很面熟,或者是嘴唇,但是他们确是完全不同的人种。
另一种推荐是基于 item 的推荐。这种推荐系统最好的例子的就是 Pandora 的音乐推荐服务。Pandora 为每首音乐标注了 400 多个特征,这些特征可以形象的称为“音乐基因”,Pandora 就是基于这些“音乐基因”进行工作的,它会根据这些“基因”自动匹配音乐。然而这种方法在算法调优上有很大的挑战,并且想要把类似的方法应用在其他类型的垂直网站也是一件非常有挑战的事情。例如:对于电影,你需要考虑从哪些维度评测一部电影,从导演,演员,剧情;还有一些比较模糊的如音效,场地,灯光,摄影等等。这些电影一定会有的东西,但却很复杂。
车库里的家伙
推荐问题的复杂性在于它广泛的可能性。具体说就是:对于某一个具体的人,很难准确的确定哪一些基因适用于他,很难指出一部电影或一首音乐的哪些基因让我们给它打 5 分。转变工程师的思维是很困难的。这就是为什么《连线》文章中强调参赛者们使用了一种非常罕见的技巧来使他的算法有效运行。
这个家伙来自伦敦的 Gavin Potter,网名 Guy In The Garage(车库里的家伙),他的方法依赖了人的惰性。很显然,对电影的评分依赖于我们之前看过的电影的评分。例如:如果你连续观看了三部电影,并给它们打了 4 分,那么当你看到下一部稍好一点的电影时,你将会打 5 分。反之,如果你连续给三部电影打了 1 分,那么当你看到和刚刚一样的一部 5 分的电影时,你可能只会打 4 分。
当你还在思索这是不是真的的时候,你将会发现这类算法现在已经占据了第 5 类推荐算法的位置,并在不断的发展,情况远远比其他的算法好。通过一点心理学的知识来强化数学公式无疑是一个好办法,这也是我们接下来要谈及的问题。
用过滤取代推荐
有多少次这样的情况发生在你身上:朋友向你推荐了一部电影或一个宾馆,你兴高采烈的去了,但却败兴而归?很多!很显然,炒作使得期望的门槛变高了。用数学术语讲,这种类型的错误被称为假阳性。现在考虑这样的一种情况,如果你的朋友不是给你推荐一部电影,而是告诉你你肯定不会喜欢的一部电影,这样你就不用花钱去租它了。这种情况下会发生什么呢?
这种情况会带来什么坏处呢?答案是不会有什么坏处,因为你很可能就不会去看这部电影。但即使你真的看了这部电影并且喜欢这么电影,你也不会有负面的情绪。(相反你会感到很惊喜,哇塞!原来这部电影这么棒)。这个例子充分说明了用户对于假阳性和假阴性错误的不同反应。假阳性使我们感到沮丧,但假阴性不会。以过滤代替推荐的思想就是为了平衡这样的一种现象。
当 Netflix 作出推荐时,它总会有一定的出错比例。或早或晚,错误将会出现,推荐一部你不喜欢的电影给你。如果推荐系统不是这样做,而是推荐给你新电影,同时有一个按钮:把那些你不喜欢的电影过滤掉。同样的算法,但是感受确是不一样的。
实时过滤
在实时新闻的时代,这种想法变得越发重要和强大。我们越发需要对新的信息进行连续的过滤。就像我们每天都用 RSS 阅读器过滤文章一样。从新闻流的角度来看这个世界,过去的事情都是不相关的。我们不需要推荐,因为我们已经订阅了很多的内容。我们需要过滤掉噪音。需要一个算法说:“嗨,你一定不会喜欢这个东西的,把它隐藏掉吧!”。
如果机器能做到那样,积极地把我们周围无用的信息扔开,那么剩下的我们就可以自己来处理了。借鉴邮件过滤系统,如果我们身边的工具都有一个按钮:“帮我把这个过滤掉”,并且这个工具可能还是默认启动的,那么我们就能做更多的事情了。
结论
构建一个完美的推荐引擎是一项非常复杂的任务。不管使用什么方法,协同过滤或基于物品属性的推荐,都是不会被原谅的商业工具,假阳性的错误会让用户逐渐流失。可能把心理学应用于这个问题,可以让用户懂得感激这些复杂算法所做的事情。如果系统过滤掉那些我们一定不喜欢的东西,而不是给我们推荐一堆东西,我们可能会更加宽容和给予更多的理解。
现在请告诉我对于推荐引擎你的一些经验。你的推荐引擎真的工作的很好吗?你是否会用开放的过滤取代推荐?除了电影和新闻,你会在哪些地方使用过滤器?
> bornhe's blog
-
Andy0831 赞了这篇日记 2019-01-26 14:32:20
-
hongliang5623 赞了这篇日记 2018-02-18 11:41:00
-
zzzzm 赞了这篇日记 2016-05-22 23:44:37
-
charmby 赞了这篇日记 2014-03-11 22:05:45
-
ஐღ 临江仙 ღஐ 逆风飞扬 赞了这篇日记 2013-01-01 09:20:05
-
杨123 赞了这篇日记 2012-11-06 22:28:04
-
2sin18° 赞了这篇日记 2012-11-06 20:45:03