我需要使用graphaware获取基于用户的建议,我不知道该怎么做。据我所知,我似乎从graphaware的neo4j-reco获得的所有内容都与项目相似,就像“买了一个买了b的人”一样。但我感兴趣的是基于用户的推荐,例如“根据您以前的购买推荐给您”。知道怎么做吗?
答案 0 :(得分:3)
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为项目之间的相似性计算提供了预定义的算法,以及用于将相似性计算过程移到外部的Apache Spark集成。 neo4j jvm并将结果/关系写回neo4j(非开源)