Amazon 推荐功能是如何工作的?

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

最近,我们参与了类似的推荐类型的项目,但是我们肯定想从技术的角度了解 Amazon 推荐技术的进进出出。

我们将非常感谢您的任何投入。

更新:

这个 专利解释了个性化的建议是如何做的,但它不是非常技术性的,所以它将是非常好的,如果一些见解可以提供。

从 Dave 的评论来看,购物篮分析是这种推荐引擎的基础。这里还有一些关于这个话题的好书

  1. 去神秘化市场篮子分析
  2. 市场篮子分析
  3. 购物篮分析

建议阅读:

  1. 数据挖掘: 概念与技术
101451 次浏览

我对亚马逊的算法没有任何具体的了解,但是这种算法的一个组成部分可能包括跟踪经常一起订购的商品组,然后当顾客购买组中的某个子集时,利用这些数据推荐组中的其他商品。

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

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

获胜的团队使用了由许多不同的模型/技术产生的混合推荐。我知道其中一些主要的方法是主成分分析、最近邻方法和神经网络。以下是获胜队伍的一些论文:

贝尔,科伦,沃林斯基,“ BellKor 2008 Netflix 奖的解决方案”,(2008)。

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

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

Y.Korn,《 解决 Netflix 大奖问题的 BellKor 方案》 ,(2009)。

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

夏伯特,《 Netflix 大奖的语用学解决方案》 ,(2009)。

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

上周有人在我们大学做了一个类似的演讲,引用了亚马逊的推荐系统。我相信它使用了 K平均算法的一种形式来将人们聚集到他们不同的购买习惯中。希望这对你有帮助:)

看看这个: 林克超文本标示语言(HTML)

据我所知,它使用 案例推论作为引擎。

你可以看到这些来源: 给你给你给你

谷歌上有很多关于亚马逊和案例推论的资源。

它既是一门艺术,也是一门科学。典型的研究领域围绕着市场篮子分析(也称为购物篮分析分析) ,这是数据挖掘领域的一个子集。这种系统中的典型组件包括主要驱动项目的识别和亲和项目的识别(附件向上销售、交叉销售)。

记住他们挖掘的数据来源..。

  1. 购买的购物车 = 从真实的人花在真实的物品上的真实的钱 = 强大的数据和大量的数据。
  2. 添加到购物车但被遗弃的物品。
  3. 在线定价实验(A/B 测试等) ,他们以不同的价格提供相同的产品,并查看结果
  4. 包装实验(A/B 测试等) ,他们提供不同的产品在不同的“捆绑”或折扣各种项目的配对
  5. 愿望列表——它们上面有什么是专门为你准备的——总的来说,它可以被类似于另一个篮子分析数据流来处理
  6. 推荐网站(识别您从哪里进来可以提示其他感兴趣的项目)
  7. 停留时间(点击回车选择不同项目前的时间)
  8. 由你或者那些在你的社交网络/购物圈里的人给出的评价——如果你给你喜欢的东西打分,你就会得到更多你喜欢的东西,如果你用“我已经拥有它”按钮确认,他们就会建立一个非常完整的你的个人资料
  9. 人口统计信息(你的送货地址等)-他们知道你的孩子,你自己,你的配偶等在你的一般地区流行什么。
  10. 用户细分 = 你是否在不同的月份为一个蹒跚学步的孩子买了3本书?可能有个孩子或者更多。.等等。
  11. 直接营销点击通过数据-你收到他们的电子邮件和点击通过?他们知道是哪封邮件,你点击了什么,你是否因此购买了它。
  12. 单击会话中的路径-不管它是否进入您的购物车,您都查看了什么
  13. 在最终购买前查看一个项目的次数
  14. 如果你在和实体店打交道,他们可能也有你的实体购买记录(比如玩具店或者网上的实体店)
  15. 等等等等。

幸运的是,人们的行为总体上是相似的,所以他们对整个购买群体了解的越多,他们就越清楚什么会卖,什么不会卖,而且随着每一笔交易,每一个评级/愿望列表的添加/浏览,他们知道如何更加个性化地定制推荐。请记住,这可能只是一个小样本的全套影响什么结束在推荐等。

现在我对亚马逊如何做生意一无所知(从未在那里工作过) ,我所做的只是谈论解决在线商务问题的经典方法——我曾经是微软产品 Commerce Server 的数据挖掘和分析的项目经理。我们在 Commerce Server 中提供了一些工具,允许人们建立具有类似功能的站点... ..。但是销售量越大,数据越好,模型就越好——亚马逊是个大公司。我只能想象在一个商业驱动的站点中使用具有那么多数据的模型是多么有趣。现在,许多这样的算法(比如从商业服务器开始的预测器)已经转移到直接生活在 微软 SQL中。

你应该具备的四大要点是:

  1. 亚马逊(或任何零售商)正在寻找数以吨计的交易和数以吨计的人的聚合数据... 这使他们甚至可以推荐相当好的匿名用户在他们的网站上。
  2. 亚马逊(或任何复杂的零售商)正在跟踪任何登录者的行为和购买情况,并利用这些信息在海量聚合数据的基础上进一步完善。
  3. 通常,有一种方法可以超越积累的数据,并对特定产品线的产品经理的建议进行“编辑”控制(比如有些人拥有垂直的“数码相机”或垂直的“浪漫小说”或类似的产品) ,他们真的是专家
  4. 通常会有促销交易(例如,索尼、松下、尼康、佳能、斯普林特或 Verizon 向零售商支付额外的钱,或者在更大的数量或其他产品上给出更好的折扣) ,这会导致某些“建议”比其他更频繁地上升到顶端——这背后总是有一些合理的商业逻辑和商业理由,目标是在每笔交易中赚更多的钱或降低批发成本等等。

在实际执行方面?几乎所有大型在线系统都归结为一组管道(或者过滤器模式实现或工作流等)。您可以随意称呼它) ,它允许通过一系列应用某种形式的业务逻辑的模块来评估上下文。

通常情况下,页面上的每个单独任务都会有一个不同的管道——你可能有一个管道是推荐的“打包/向上销售”(比如用你正在看的商品购买) ,一个管道是“替代品”(比如用你正在看的商品购买) ,还有一个管道是从你的愿望清单中拉出与你最相关的商品(按产品类别或类似)。

这些管道的结果可以放置在页面的各个部分(滚动条上方、滚动条下方、左侧、右侧、不同的字体、不同大小的图像等) ,并测试哪些部分的性能最好。因为你使用了很好的、易于插入和播放的模块来定义这些管道的业务逻辑,你最终得到了道德上等同于乐高积木的模块,当你构建另一个管道时,它可以让你很容易地从你想要应用的业务逻辑中挑选和选择,从而允许更快的创新,更多的实验,最终获得更高的利润。

有用吗?希望这能给你一点点的洞察力,这是如何在一般的电子商务网站-不仅仅是亚马逊。亚马逊(通过与在那里工作的朋友交谈)是非常数据驱动的,不断测量其用户体验的有效性以及定价、促销、包装等——他们是一个非常复杂的在线零售商,可能在他们用来优化利润的许多算法中处于领先地位——这些可能是私有秘密(你知道的,就像肯德基秘密香料的配方一样) ,并受到如此的保护。

我今天碰巧看到这份报纸:

也许能提供更多信息。

(免责声明: 我以前在亚马逊工作,虽然我不在推荐团队工作。)

Ewernli 的回答应该是正确的——论文链接到亚马逊最初的推荐系统,而且从我所知道的(不管是作为亚马逊购物者的个人经验还是在其他公司的类似系统中工作过的经验)来看,几乎没有什么变化: 亚马逊的推荐功能的核心仍然是非常严重的基于项目对项目的协同过滤。

看看这些推荐是什么形式的: 在我的首页上,它们都是“你浏览了 X。.也看过这个视频的顾客也看了... ...”,或者是一系列和我以前买过或看过的东西相似的东西。如果我特意去我的“推荐给你”页面,每个条目都会描述为什么它被推荐给我: “推荐是因为你购买了... ...”,“推荐是因为你在你的愿望清单上添加了 X... ...”等等。这是一个典型的协同过滤。

那么,逐项协同过滤是如何运作的呢?基本上,对于每个商品,你都建立了一个相关商品的“邻居”(例如,通过查看人们一起看过的商品或者人们一起买过的商品——为了确定相似性,你可以使用像 雅卡索引这样的度量标准; 相关性是另一种可能性,尽管我怀疑亚马逊并没有很多地使用评分数据)。然后,每当我查看一个商品 X 或购买一个 Y,亚马逊建议我的东西在同一个街区作为 X 或 Y。

这里描述了亚马逊可能使用但可能不会使用的其他一些方法: http://blog.echen.me/2011/02/15/an-overview-of-item-to-item-collaborative-filtering-with-amazons-recommendation-system/

戴夫描述的很多事情几乎可以肯定不是在亚马逊做的。(我的社交网络的收视率?不,亚马逊没有我的任何社交数据。无论如何,这都是一个巨大的隐私问题,所以即使亚马逊拥有这些数据,也很难做到这一点: 人们不想让他们的朋友知道他们在买什么书或电影。人口统计信息?没有,推荐信里没有提到他们在看这个。[与 Netflix 不同,Netflix 确实会将我所在地区的其他人正在观看的内容浮出水面。]

如果你想要一个实践教程(使用开源 R) ,那么你可以做的比这个更糟糕: Https://gist.github.com/yoshiki146/31d4a46c3d8e906c3cd24f425568d34e

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

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

我改编了这段代码,作为我工作的零售商的推荐引擎。

正如其他人在上文中所说的那样,所使用的算法具有协同过滤。CF 的这种方法计算出一个余弦距离矩阵,然后根据相似度进行排序,找出每个元素的“最近邻居”(例子中的乐队,我的应用程序中的零售产品)。

生成的表格可以根据另一个选择的带/产品推荐一个带/产品。

代码的下一部分对基于 USER (或客户)的协同过滤进行了更深入的研究。

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