【问题标题】:How does the Amazon Recommendation feature work?亚马逊推荐功能如何工作?
【发布时间】:2011-01-20 09:27:05
【问题描述】:

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

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

我们将不胜感激任何输入。

更新:

patent 解释了个性化推荐是如何完成的,但技术性不是很强,所以如果能提供一些见解就太好了。

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

  1. Demystifying Market Basket Analysis
  2. Market Basket Analysis
  3. Affinity Analysis

推荐阅读:

  1. Data Mining: Concepts and Technique

【问题讨论】:

  • 您是否尝试过筛选他们的大量专利? google.com/patents
  • 是的,我确实通过了专利,但它不是非常技术性的,因此希望对机制的技术方面有一些见解
  • @Dave:这个问题现在是开放的,如果您能就亚马逊用于提供推荐的推荐引擎架构和功能背后的技术提供更多见解,我将不胜感激。
  • 我不会称亚马逊推荐系统为“最好的”甚至有用。您订购了一只鼠标,它建议您再购买一只。为什么普通用户一次需要两只鼠标???
  • @Rachel:鉴于您知道亚马逊的系统已获得专利并且您想开发类似的东西,我什至不会浏览他们的专利——当然也不会看在他们那里也不能保护你,但这是一个开始。

标签: algorithm language-agnostic data-mining


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    A. Töscher, M. Jahrer,“The BigChaos Solution to the Netflix Prize 2008”,(2008 年)。

    A. Töscher, M. Jahrer, R. Legenstein, "Improved Neighborhood-Based Algorithms for Large-Scale Recommender Systems", SIGKDD Workshop on Large-Scale Recommender Systems and the Netflix Prize Competition (KDD’08), ACM Press (2008)。

    是的。科伦,“The BellKor Solution to the Netflix Grand Prize”,(2009 年)。

    A. Töscher、M. Jahrer、R. Bell,“The BigChaos Solution to the Netflix Grand Prize”,(2009 年)。

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

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

    【讨论】:

    • 我喜欢这个答案的一点是,它指出没有“完美”的答案,人们在这个领域不断创新——总有一些改进的空间,随着时代的变化和新方法被应用于将不断以不同方式解决的问题。如果您阅读详细链接,您可以看到在每个奖项的大竞争者中如何“混合”几种预测方法。很好的参考。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      谷歌中有很多来源可以搜索亚马逊和基于案例的推理。

      【讨论】:

        【解决方案5】:

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

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

        1. 购买的购物车 = 来自真人的真钱花在真品上 = 强大的数据和大量数据。
        2. 已添加到购物车但被放弃的物品。
        3. 在线定价实验(A/B 测试等),他们以不同的价格提供相同的产品并查看结果
        4. 包装实验(A/B 测试等),他们在不同的“捆绑”中提供不同的产品或打折各种商品配对
        5. 愿望清单 - 专门为您准备的内容 - 总的来说,它可以被视为与另一个购物篮分析数据流类似的处理方式
        6. 推荐网站(识别您来自哪里可以暗示其他感兴趣的项目)
        7. 停留时间(在您单击返回并选择其他项目之前多长时间)
        8. 您或您的社交网络/购买圈中的人的评分 - 如果您对您喜欢的东西进行评分,您会获得更多您喜欢的东西,并且如果您使用“我已经拥有它”按钮进行确认,他们会为您创建一个非常完整的个人资料
        9. 人口统计信息(您的收货地址等) - 他们知道您所在地区对您的孩子、您自己、您的配偶等来说什么是受欢迎的。
        10. 用户细分 = 您是否在不同月份为一个蹒跚学步的孩子买了 3 本书?可能有一个孩子或更多……等等。
        11. 直接营销点击数据 - 您收到他们的电子邮件并点击了吗?他们知道它是哪封电子邮件,您点击了什么以及您是否因此购买了它。
        12. 会话中的点击路径 - 无论是否放入您的购物车,您都看到了什么
        13. 在最终购买之前查看商品的次数
        14. 如果您与实体店打交道,他们可能还会记录您的实体购买历史记录(例如,玩具反斗城或在线商品和实体店)
        15. 等。等等等等。

        幸运的是,人们总体上表现相似,因此他们对整个购买人群的了解越多,他们就越清楚什么会出售和不会出售,并且随着每笔交易和每一次评级/愿望清单添加/浏览,他们知道如何更个性化地定制建议。请记住,这可能只是建议等最终影响的全部影响的一小部分。

        现在我对亚马逊如何开展业务(从未在那里工作过)一无所知,我所做的只是谈论解决在线商务问题的经典方法——我曾经是从事数据挖掘和分析工作的 PM用于称为 Commerce Server 的 Microsoft 产品。我们在 Commerce Server 中提供了允许人们构建具有类似功能的网站的工具……但销量越大,数据越好,模型就越好——亚马逊就是大。我只能想象在商业驱动的网站中使用具有如此多数据的模型是多么有趣。现在,其中许多算法(例如在商业服务器中开始的预测器)已经直接存在于Microsoft SQL 中。

        您应该拥有的四大要点是:

        1. 亚马逊(或任何零售商)正在查看大量交易和大量人员的汇总数据......这使他们甚至可以为他们网站上的匿名用户推荐相当不错的服务。
        2. 亚马逊(或任何成熟的零售商)正在跟踪登录的任何人的行为和购买情况,并使用这些信息在海量汇总数据的基础上进一步细化。
        3. 通常有一种方法可以超越累积的数据,并“编辑”控制特定行的产品经理的建议(例如拥有“数码相机”垂直或“浪漫小说”垂直或类似的人)他们真正是专家的地方
        4. 经常有促销交易(即索尼或松下或尼康或佳能或斯普林特或威瑞森向零售商支付额外的钱,或在这些行中以更大的数量或其他东西给予更好的折扣)会引起某些“建议”比其他人更频繁地登上顶峰——这背后总是有一些合理的商业逻辑和商业原因,旨在提高每笔交易或降低批发成本等。

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

        通常情况下,页面上的每个单独任务都会关联一个不同的管道 - 您可能有一个推荐“包装/追加销售”(即与您正在查看的商品一起购买)和一个执行“替代品”的管道(即买这个而不是你正在看的东西)和另一个从你的愿望清单中提取最密切相关的项目(按产品类别或类似)。

        这些管道的结果能够放置在页面的各个部分(滚动条上方、滚动条下方、左侧、右侧、不同字体、不同大小的图像等)并进行测试看看哪个表现最好。由于您使用的是易于即插即用的模块来定义这些管道的业务逻辑,因此您最终会得到乐高积木的道德等价物,从而可以在构建另一个管道时轻松地从您想要应用的业务逻辑中挑选和选择这允许更快的创新、更多的实验,并最终获得更高的利润。

        这有帮助吗?希望这能让您对这对于几乎所有电子商务网站(不仅仅是亚马逊)的总体运作方式有所了解。亚马逊(通过与曾在那里工作过的朋友交谈)非常注重数据驱动,并不断衡量其用户体验和定价、促销、包装等的有效性——他们是一家非常成熟的在线零售商,很可能处于领先地位他们用来优化利润的许多算法——这些很可能是专有秘密(你知道,就像肯德基秘密香料的配方一样)并受到保护。

        【讨论】:

        • 是的。它确实帮助了我很多,我非常感谢您对该主题的投入。
        • 惊人的见解
        【解决方案6】:

        我今天碰到了这篇论文:

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

        【讨论】:

          【解决方案7】:

          (免责声明:我曾经在亚马逊工作,虽然我没有在推荐团队工作。)

          ewernli 的答案应该是正确的——论文链接到亚马逊的原始推荐系统,据我所知(无论是作为亚马逊购物者的个人经验,还是在其他公司从事过类似系统的工作),几乎没有变化:在其核心,亚马逊的推荐功能仍然非常依赖于项目到项目的协同过滤。

          看看推荐采用什么形式:在我的首页上,它们要么是“您查看了 X...的客户也查看了此内容...”的形式,要么是混杂的项目类似于我以前购买或查看过的东西。如果我专门去我的“为您推荐”页面,每个项目都描述了为什么为我推荐它:“推荐是因为您购买了...”、“推荐是因为您将 X 添加到了您的愿望清单...”等等。这是项目到项目协同过滤的经典标志。

          那么项目到项目的协同过滤是如何工作的?基本上,对于每个项目,您都建立了相关项目的“社区”(例如,通过查看人们一起查看过哪些项目或一起购买了哪些项目——为了确定相似性,您可以使用像 Jaccard index 这样的指标;相关性是另一种可能性,尽管我怀疑亚马逊不会大量使用评级数据)。然后,每当我查看商品 X 或购买商品 Y 时,亚马逊都会向我推荐与 X 或 Y 在同一街区的商品。

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

          Dave 描述的很多内容几乎肯定不是在亚马逊完成的。 (我社交网络中的评分?不,亚马逊没有我的任何社交数据。无论如何这将是一个巨大的隐私问题,因此即使亚马逊拥有这些数据,亚马逊也很难做到:人们不希望他们的朋友知道他们在买什么书或电影。人口统计信息?不,推荐中没有任何内容表明他们正在看这个。[不像 Netflix,谁会展示我所在地区的其他人正在看什么.])

          【讨论】:

          • 亚马逊多年来一直暴露购买圈——这是基于公司域名和邮政编码的匿名购买趋势。在您获得相关信息之前,购买圈中必须至少有 50 个不同的买家——因此亚马逊确实保留、跟踪和使用这些信息来帮助自己(和其他人)了解什么是受欢迎的。您可以查看您所在地区或公司的 CD、电子产品和书籍购买。他们在 1999 年至 2002 年期间被曝光。 forum.dvdtalk.com/archive/t-122436.html 甚至复制并粘贴了来自亚马逊的描述它们的文本。
          【解决方案8】:

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

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

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

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

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

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

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

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

          【讨论】:

          • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
          • True... 所使用的算法是——正如其他人在上面所说的——协同过滤。这种 CF 方法计算余弦相似度矩阵,然后按该相似度排序以找到每个元素的“最近邻”(给定示例中的音乐乐队,我的应用程序中的零售产品)。结果表可以基于另一个选择的波段/产品推荐一个波段/产品。代码的下一部分使用基于用户(或客户)的协同过滤更进一步。其输出是一个大表,其中包含为给定用户/客户推荐的前 100 个乐队/产品
          • 请编辑您的答案并在此处添加此信息,而不是在 cmets 部分,谢谢
          猜你喜欢
          • 1970-01-01
          • 2012-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-05
          • 1970-01-01
          • 2017-11-21
          • 2022-08-07
          相关资源
          最近更新 更多