我需要通过graphaware获得基于用户的推荐,但我不知道该怎么做。据我所知,我从graphaware的ne4j-reco中得到的似乎都是物品的相似性,比如‘买了a的人也买了b的人’。但我感兴趣的是基于用户的推荐,比如“根据你以前的购买情况推荐给你”。你知道怎么做吗?
发布于 2016-11-28 18:09:53
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 (非开源)
https://stackoverflow.com/questions/40833679
复制相似问题