Amazon Recommendation功能如何工作?


144

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

最近,我们参与了类似的推荐类项目,但是肯定希望从技术角度了解Amazon推荐技术的来龙去脉。

任何输入将不胜感激。

更新:

专利说明了如何进行个性化推荐,但这不是技术性的问题,因此,如果可以提供一些见解,那将是非常好的。

根据Dave的评论,亲和力分析构成了此类推荐引擎的基础。另外,这里还有一些有关该主题的好读物

  1. 揭秘市场篮子分析
  2. 市场篮分析
  3. 亲和力分析

建议阅读:

  1. 数据挖掘:概念和技术

3
您是否尝试过筛查他们的专利?google.com/patents
Dolph,2010年

是的,我确实进行了专利审查,但是它不是非常技术性的,因此希望对机制的技术方面有所了解
Rachel 2010年

1
@Dave:这个问题现在悬而未决,如果您能对Amazon用于提供推荐的推荐引擎体系结构和功能背后的技术有更多的了解,我将不胜感激。
雷切尔

1
我不会称亚马逊推荐系统为“最佳”甚至有用。您订购鼠标时,建议您也购买另一只鼠标。普通用户为什么一次需要两只老鼠???

1
@Rachel:既然你知道亚马逊的系统专利,你要开发类似的东西,我甚至不会一眼他们的专利---,当然不是看他们没有任何保护你,但它是一个开始。

Answers:


104

它既是一门艺术,也是一门科学。典型的研究领域围绕市场篮子分析(也称为亲和力分析),这是数据挖掘领域的子集。这种系统中的典型组件包括主驾驶员项目的标识和亲和力项目的标识(附件加售,交叉销售)。

请记住他们必须挖掘的数据源...

  1. 购买的购物车=来自真实人在真实物品上花费的真实钱=强大的数据及其大量。
  2. 物品已添加到购物车,但被放弃了。
  3. 在线定价实验(A / B测试等),他们以不同的价格提供相同的产品并查看结果
  4. 包装实验(A / B测试等),在这些实验中,他们以不同的“组合”提供不同的产品,或打折各种成对的商品
  5. 愿望清单-特别针对您的需求-总体而言,它可以像其他购物篮分析数据流一样对待
  6. 推荐网站(识别您来自何处可以提示其他感兴趣的项目)
  7. 停留时间(您单击返回并选择其他项目之前的时间)
  8. 您或您社交网络/购买圈子中的人的评分-如果您对自己喜欢的事物进行评分,您将获得更多您喜欢的事物,并且如果您单击“我已经拥有”按钮进行确认,他们会为您创建一个非常完整的个人资料
  9. 人口统计信息(您的送货地址等)-他们知道您的孩子,您自己,配偶等在您的一般地区受欢迎的信息。
  10. 用户细分=您是否在不同月份为幼儿购买了三本书?可能有一个孩子或更多..等等
  11. 直销点击率数据-您是否从他们那里收到电子邮件并点击了?他们知道这是哪封电子邮件,您单击了什么,以及是否因此购买了它。
  12. 会话中的点击路径-您查看了什么,无论它是否放入购物车
  13. 最终购买商品前浏览商品的次数
  14. 如果您与实体店打交道,他们可能还会有您的实际购买历史记录(例如,玩具反斗城或在线商店以及实体店)
  15. 等等等等

幸运的是,人们的行为举止相似,因此他们对购买人口的了解越多,他们就会知道将卖和不卖什么,并且每笔交易和每一个评级/愿望清单的增加/浏览都使他们知道如何更个性化地制定建议。请记住,这可能只是推荐结果的全部影响的一小部分,等等。

现在,我对亚马逊的业务方式一无所知(从来没有在那里工作过),而我所做的只是谈论解决在线商务问题的经典方法-我曾经是负责Microsoft数据挖掘和分析的项目经理。产品称为Commerce Server。我们在Commerce Server中提供了使人们能够构建具有类似功能的网站的工具.....但是销量越大,数据越好,模型越好-亚马逊是巨大的。我只能想象在一个商业驱动的站点中使用具有这么多数据的模型是多么有趣。现在,这些算法中的许多算法(例如始于商务服务器的预测器)已经直接在Microsoft SQL中运行

您应该拥有的四个主要方法是:

  1. 亚马逊(或任何零售商)正在查看大量交易和大量人员的汇总数据……这使他们甚至可以为网站上的匿名用户提供很好的推荐。
  2. 亚马逊(或任何经验丰富的零售商)会跟踪已登录用户的行为和购买情况,并使用这些信息在海量汇总数据的基础上进一步完善。
  3. 通常,有一种方法可以过度使用累积的数据,并对特定行业的产品经理(例如拥有“数码相机”垂直行业或“浪漫小说”垂直或类似行业的人)“建议”控制,是专家
  4. 通常会有一些促销交易(例如,索尼,松下,尼康,佳能,冲刺或Verizon向零售商支付额外的钱,或者在较大数量或其他种类的商品中提供更好的折扣),这将导致某些“建议”上升最高的频率比其他最高的频率更高-在此背后总有一些合理的商业逻辑和商业原因,旨在使每笔交易更多或降低批发成本等。

在实际执行方面?几乎所有大型在线系统都可以归结为一系列管道(或过滤模式实现或工作流等,您称其为“您将要说的”),这些管道允许由一系列应用某种形式的模块的上下文进行评估。商业逻辑。

通常,页面上的每个单独的任务都会与一个不同的管道相关联-您可能有一个建议“包装/加售”的管道(例如,与您要查看的商品一起购买),另一个有“替代”的管道(即,购买)而不是您正在查看的东西),另一个从您的愿望清单中拉出最密切相关的商品(按产品类别或类似商品)。

这些流水线的结果可以放置在页面的各个部分(滚动条上方,滚动下方,左侧,右侧,不同的字体,不同大小的图像等)上,并进行测试以查看执行结果最好。由于您使用的是易于使用的即插即用模块,这些模块定义了这些管道的业务逻辑,因此最终在道德上等同于乐高积木,这使得在构建另一个管道时可以轻松地从想要应用的业务逻辑中进行选择。这样可以加快创新速度,进行更多实验,并最终获得更高的利润。

有没有帮助?希望能给您一点点了解,这对于几乎所有电子商务网站-不仅是亚马逊来说,通常如何运作。亚马逊(从与在那工作的朋友交谈)非常依赖数据,并不断衡量其用户体验的有效性以及价格,促销,包装等。它们是一家非常成熟的在线零售商,很可能处于领先地位他们使用了许多算法来优化利润-那些可能是专有秘密(就像肯德基的秘密香料的配方一样),因此得到了保证。


1
是。它确实帮助了我很多,非常感谢您在此主题上的投入。
雷切尔(Rachel)2010年

惊人的见解
Shobi

28

这与Amazon的推荐系统没有直接关系,但研究参加Netflix奖(使用Netflix用户数据开发更好的推荐系统的竞赛)的人们使用的方法可能会有所帮助。通常,他们的社区中有很多有关数据挖掘技术的好信息。

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

R. Bell,Y. Koren,C. Volinsky,“ Netflix奖的BellKor 2008解决方案 ”(2008年)。

A.Töscher,M。Jahrer,“ 2008年Netflix奖的BigChaos解决方案 ”,(2008年)。

A.Töscher,M。Jahrer和R. Legenstein,“ 针对大型推荐系统的改进的基于邻域的算法 ”,SIGKDD大型推荐系统研讨会和Netflix奖竞赛(KDD'08),ACM出版社(2008) 。

Y. Koren,“ Netflix大奖的BellKor解决方案 ”,(2009年)。

A.Töscher,M。Jahrer和R. Bell,“ Netflix大奖的BigChaos解决方案 ”,(2009年)。

M. Piotte,M。Chabbert,“ 向Netflix大奖颁发的实用理论解决方案 ”,(2009年)。

2008年的论文来自第一年的进步奖。我建议先阅读较早的文章,因为较晚的文章以先前的工作为基础。


2
我喜欢这个答案的原因是,它没有一个“完美”的答案,而且人们在这一领域不断创新-总是有改进的余地,而且随着时间的变化和采用新方法解决问题将继续以不同的方式得到解决。而且,如果您阅读了详细的链接,您将看到在每个大竞争者中,如何将几种方法的“混合”预测出来。很好的参考。
戴夫(Dave Quick)2010年


20

(Disclamer:我以前在Amazon工作,尽管我没有在推荐团队工作。)

ewernli的答案应该是正确的-该论文链接到Amazon的原始推荐系统,并且据我所知(包括作为亚马逊购物者的个人经验以及曾在其他公司使用过类似系统的经验),几乎没有什么变化:其核心,亚马逊的推荐功能仍然非常依赖于项对项协作过滤。

只要看看建议采用的形式即可:在我的首页上,它们都是“您查看过X ...也查看过此内容的客户也查看过...”这两种格式,或者是类似事物的混合物我以前买过或看过。如果我专门转到“为您推荐”页面,则每个项目都会描述为我推荐的原因:“因您购买而推荐...”,“因将X添加到愿望清单而受到推荐...”等。这是项目到项目协作过滤的经典标志。

那么,逐项协作过滤是如何工作的?基本上,对于每个项目,您都可以建立相关项目的“邻居”(例如,通过查看人们一起查看过的项目或人们一起购买了哪些项目,要确定相似性,可以使用Jaccard索引;这是另一种可能性,尽管我怀疑亚马逊不会非常频繁地使用评级数据。然后,每当我查看商品X或进行购买Y时,亚马逊都会向我建议与X或Y在同一街区的东西。

此处介绍了亚马逊可能使用但可能不会使用的其他一些方法:http : //blog.echen.me/2011/02/15/an-overview-of-item-to-item-collaborative-filtering -带有亚马逊推荐系统/

戴夫所描述的很多东西几乎肯定不是在亚马逊上完成的。(由我的社交网络中的人打分?不,亚马逊没有我的任何社交数据。在任何情况下,这都是一个巨大的隐私问题,因此即使他们拥有这些数据,亚马逊也很难做到:人们不希望他们的朋友知道他们要买什么书或电影。人口统计信息吗?不,建议中没有任何内容表明他们在看这个书。 。])


亚马逊多年来暴露了购买圈子-这些匿名圈子是基于公司域名和邮政编码的购买趋势。在购买圈子中,必须至少有50个不同的购买者才能获取有关它的信息-因此,亚马逊确实确实保留,跟踪和使用了这些信息,以帮助他们自己(和其他人)了解流行商品。您可以查看您所在地区或公司的CD,电子产品和书籍。他们从1999年至2002年接触。 forum.dvdtalk.com/archive/t-122436.html甚至复制并粘贴了来自亚马逊的描述文本。
Dave Quick

3

我没有关于亚马逊算法的专门知识,但是这种算法的一个组成部分可能涉及跟踪经常一起订购的商品组,然后在客户购买商品的某些子集时使用该数据来推荐该组中的其他商品。组。

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




0

如果您想要动手教程(使用开源R),那么可能会比通过以下方法做得更糟:https : //gist.github.com/yoshiki146/31d4a46c3d8e906c3cd24f425568d34e

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

但是,第一个链接上的代码变体运行得更快,因此,我建议使用它(我发现yoshiki146的代码中唯一较慢的部分是最终例程,该例程在用户级别生成了建议-我的数据花了大约一个小时我的机器)。

我修改了此代码,将其用作我工作的零售商的推荐引擎。

就像上面其他人所说的,所使用的算法是协同过滤。这种CF方法会计算一个余弦相似度矩阵,然后按该相似度进行排序,以找到每个元素的“最近邻居”(在示例中为音乐带,在我的应用中为零售产品)。

结果表可以根据另一个选定的波段/产品推荐波段/产品。

该代码的下一部分将进一步进行基于USER(或客户)的协作过滤。

此输出是一张大表,其中为给定的用户/客户推荐了前100个波段/产品


1
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能无效。- 来自点评
Kos

是的...正如其他人所说,所使用的算法是协作过滤。这种CF方法会计算一个余弦相似度矩阵,然后按该相似度进行排序,以找到每个元素的“最近邻居”(在本示例中为音乐带,在我的应用中为零售产品)。结果表可以根据另一个选定的波段/产品推荐波段/产品。该代码的下一部分将进一步进行基于USER(或客户)的协作过滤。此输出为一张大表,其中为给定的用户/客户推荐了前100种乐队/产品
ChrisD

请编辑您的答案,并在此处(不在评论部分)添加此信息,谢谢
Kos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.