亚马逊推荐功能如何运作?

时间:2010-02-24 04:57:13

标签: algorithm language-agnostic data-mining

亚马逊推荐技术的屏幕背后有什么技术?我相信亚马逊的推荐目前是市场上最好的,但它们如何为我们提供相关的推荐?

最近,我们参与了类似的推荐项目,但肯定想从技术角度了解亚马逊推荐技术的来龙去脉。

任何输入都将受到高度赞赏。

更新

这个patent解释了个性化推荐是如何完成的,但它不是很技术性的,所以如果可以提供一些见解会非常好。

根据Dave的评论,Affinity Analysis构成了此类推荐引擎的基础。这里还有一些关于主题

的好读物
  1. Demystifying Market Basket Analysis
  2. Market Basket Analysis
  3. Affinity Analysis
  4. 建议阅读:

    1. Data Mining: Concepts and Technique

8 个答案:

答案 0 :(得分:103)

答案 1 :(得分:28)

这与亚马逊的推荐系统没有直接关系,但研究参与Netflix Prize竞赛的人使用的方法可能会有所帮助,这是一个使用Netflix用户数据开发更好推荐系统的竞赛。一般来说,community关于数据挖掘技术存在很多好的信息。

赢得的团队使用了许多不同模型/技术产生的建议的混合。我知道使用的一些主要方法是主成分分析,最近邻方法和神经网络。以下是获奖团队的一些论文:

R上。 Bell,Y。Koren,C。Volinsky,“The BellKor 2008 Solution to the Netflix Prize”,(2008)。

一个。 Töscher,M。Jahrer,“The BigChaos Solution to the Netflix Prize 2008”,(2008)。

一个。 Töscher,M。Jahrer,R。Legenstein,“Improved Neighborhood-Based Algorithms for Large-Scale Recommender Systems”,SIGKDD大型推荐系统研讨会和Netflix奖竞赛(KDD'08),ACM出版社(2008)。

ÿ。 Koren,“The BellKor Solution to the Netflix Grand Prize”,(2009)。

一个。 Töscher,M。Jahrer,R。Bell,“The BigChaos Solution to the Netflix Grand Prize”,(2009)。

微米。 Piotte,M。Chabbert,“The Pragmatic Theory solution to the Netflix Grand Prize”,(2009)。

2008年的论文来自第一年的进步奖。我建议先阅读前面的内容,因为后面的内容是基于以前的工作。

答案 2 :(得分:21)

我今天碰到了这篇论文:

也许它提供了额外的信息。

答案 3 :(得分:20)

(Disclamer:我曾经在亚马逊工作,但我没有在推荐团队工作。)

ewernli的答案应该是正确的 - 本文链接到亚马逊的原始推荐系统,并且从我所知道的(从亚马逊购物者的个人经历和在其他公司的类似系统上工作过),很少有改变:亚马逊的推荐功能的核心仍然是基于项目到项目的协作过滤。

看看建议采取的形式:在我的头版,它们都是“你看过X ......客户也看过这个也看过......”的形式,或者是项目的混合物类似于我以前买过或看过的东西。如果我特意转到我的“推荐给你”页面,每个项目都会描述为什么推荐给我:“推荐因为你购买了......”,“推荐因为你把X添加到你的愿望清单......”等等。这是项目到项目协同过滤的经典标志。

那么逐项协同过滤如何工作?基本上,对于每个项目,您构建相关项目的“邻域”(例如,通过查看人们一起查看的项目或人们一起购买的项目 - 来确定相似性,您可以使用{{3}等指标相关性是另一种可能性,但我怀疑亚马逊不会非常严重地使用评级数据)。然后,每当我查看商品X或购买Y时,亚马逊就会向我推荐与X或Y相同的邻居。

亚马逊可能会使用但可能没有的其他一些方法在此处描述:Jaccard index

Dave所描述的很多东西几乎肯定不是在亚马逊完成的。 (我的社交网络中的那些评级?不,亚马逊没有任何我的社交数据。这在任何情况下都是一个巨大的隐私问题,所以即使他们拥有这些数据,亚马逊也很难做到:人们不希望他们的朋友知道他们正在购买哪些书籍或电影。人口统计信息?没有,推荐中的任何内容都表明他们正在研究这个问题。[与Netflix不同,他确实表明了我所在地区的其他人在看。])

答案 4 :(得分:3)

我没有具体了解亚马逊的算法,但这种算法的一个组成部分可能涉及跟踪经常一起订购的项目组,然后在客户购买时使用该数据推荐组中的其他项目该组的子集。

另一种可能性是在订购商品A后的N天内跟踪订购商品B的频率,这可能暗示相关性。

答案 5 :(得分:2)

据我所知,它使用Case-Based Reasoning作为它的引擎。

您可以在以下来源中看到:hereherehere

Google搜索亚马逊和基于案例的推理有很多来源。

答案 6 :(得分:0)

上周有人在我们的大学做了类似的演讲,并引用了亚马逊的推荐系统。我相信它使用K-Means Clustering形式将人们聚集到他们不同的购买习惯中。希望这会有所帮助:)

也请检查一下:http://www.almaden.ibm.com/cs/people/dmodha/ml02.psas HTML

答案 7 :(得分:0)

如果你想要一个实践教程(使用开源R)那么你可能会比通过这个更糟糕: https://gist.github.com/yoshiki146/31d4a46c3d8e906c3cd24f425568d34e

它是另一项工作的运行时优化版本: http://www.salemmarafi.com/code/collaborative-filtering-r/

然而,第一个链接上的代码变化运行得更快,所以我建议使用它(我发现yoshiki146代码中唯一缓慢的部分是在用户级别生成推荐的最终例程 - 它花了很多时间在我的机器上用我的数据大约一个小时)。

我将此代码改编为我工作的零售商的推荐引擎。

使用的算法 - 正如其他人所说 - 协同过滤。 CF的这种方法计算余弦相似度矩阵,然后按该相似性进行排序,以找到最近的邻居'对于每个元素(给出的示例中的音乐乐队,我的应用程序中的零售产品)。

结果表可根据其他选定的乐队/产品推荐乐队/产品。

代码的下一部分更进一步,基于USER(或客户)的协同过滤。

这是一个大表,其中包含为给定用户/客户推荐的前100个频段/产品