0

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

4

1 回答 1

4

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 的关系(非开源)

于 2016-11-28T10:09:52.540 回答