【问题标题】:how to get user-based recommendation with graphaware neo4j-reco如何使用 graphaware neo4j-reco 获得基于用户的推荐
【发布时间】:2016-11-27 20:43:49
【问题描述】:

我需要使用 graphaware 获得基于用户的推荐,但我不知道该怎么做。据我所知,我似乎从graphaware 的neo4j-reco 中得到的只是物品相似性,例如“买了a 的人也买了b”。但我感兴趣的是基于用户的推荐,例如“根据您以前的购买为您推荐”。知道该怎么做吗?

【问题讨论】:

  • 我有点好奇,如果它没有参考其他人购买的东西和你购买的东西,你如何看待这样的系统?如果它引用的唯一信息是您自己的,那么除了您之前购买的信息之外,它还能真正向您推荐什么?
  • 我想您可以推荐同一制造商的其他产品,或其他制造商的类似产品。单独使用 Neo4j 应该很容易做到这一点,尽管您需要您的图表来跟踪项目的类型以及制造商。尽管如此,这是一个庞大的推荐池,这就是为什么提供信息来补充这一点很有用,例如其他人购买过的商品与您的商品相似。
  • 嗯,让我试着澄清一下。 neo4j-reco 的 README.md 提供了一个“FriendsComputingEngine”示例,我可以在其中计算我可能认识的人,因为我们有一些共同的朋友。我想知道的是:如果我们有两个实体,用户和项目,并且每个用户都可以“喜欢”几个项目,我将如何根据他已经“喜欢”的项目为特定用户获得推荐。
  • FriendsComputingEngine 的基础是寻找共同好友,共同好友越多,匹配度越强。 “买了a的人也买了b”的方法是类似的,寻找具有相似购物习惯、购买过或喜欢相同种类物品的人(更多共同点可能是更强的推荐),然后找到他们喜欢或喜欢的其他东西买了可以推荐给你。我之前提到过查询来自同一制造商的其他项目,或相同类型的项目。如果您有一个强大的标记系统,那么这也会有所帮助。
  • 我不清楚您是否正在寻找关于使用什么逻辑的想法,或者您知道逻辑并且只是想知道如何使用 GraphAware Reco 来实现它。所以我的问题是:您能否使用 Cypher 查询来表达您的“基于用户”的推荐逻辑?

标签: neo4j recommendation-engine graphaware


【解决方案1】:

GraphAware-Reco主要是一个骨架,帮助您在neo4j数据库之上构建企业级推荐引擎。

这意味着它提供了基类和架构,您需要使用自己的逻辑来扩展自己。

如果您满足您的要求,这里是购买历史,一个非常幼稚的入门方法是例如查找所购买产品的特征。

假设用户 1 购买了具有这些特征的 iphone 和 ipad:

iphone brand : apple, category: electronics
ipad brand: apple, category: electronics

您可以根据这些特征创建第一个匹配潜在候选人的引擎,该引擎将使用以下查询扩展CypherEngine

MATCH (n:User {id: 111})-[:PURCHASED]->(product)
WITH distinct product
MATCH (product)-[:HAS_CHARACTERISTIC]->(c)<-[:HAS_CHARACTERISTIC]-(reco)
RETURN reco, count(*) AS score

您可以与此方法结合使用的另一种方法是查找与用户购买相同商品的人并找到他们还购买的商品,然后您将使用以下查询创建另一个引擎:

MATCH (n:User {id: 111})-[:PURCHASED]->(product)
WITH distinct product, user
MATCH (product)<-[:PURCHASED]-(collab)
WHERE collab <> user
MATCH (collab)-[:PURCHASED]->(reco)
RETURN reco, count(*) AS score

当使用这两个引擎时,GraphAware Reco 会自动将每个引擎的分数合二为一。

您可以在测试中找到 CypherEngine 的示例:https://github.com/graphaware/neo4j-reco/blob/master/src/test/java/com/graphaware/reco/neo4j/engine/CypherEngineTest.java

您还可以添加黑名单,不推荐用户已购买的商品。

正如我所说,这是第一步,如果您有一个包含大量购买的大型目录,您可能会考虑进行背景计算(例如,产品之间的相似性,并且只关联它们之间的前 k-nn 产品,并且相同购买和相关的相似用户)

GraphAware-Reco 为您提供进行后台计算作业的设施,GraphAware-Reco-Enterprise 带有用于项目之间相似性计算的预定义算法以及用于将相似性计算过程移到 neo4j jvm 之外并编写的 Apache Spark 集成将结果/关系返回给 neo4j(非开源)

【讨论】:

    最近更新 更多