首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用graphaware ne4j-reco获得基于用户的推荐

如何使用graphaware ne4j-reco获得基于用户的推荐
EN

Stack Overflow用户
提问于 2016-11-28 04:43:49
回答 1查看 447关注 0票数 0

我需要通过graphaware获得基于用户的推荐,但我不知道该怎么做。据我所知,我从graphaware的ne4j-reco中得到的似乎都是物品的相似性,比如‘买了a的人也买了b的人’。但我感兴趣的是基于用户的推荐,比如“根据你以前的购买情况推荐给你”。你知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-28 18:09:53

GraphAware-Reco主要是帮助您在neo4j数据库上构建企业级推荐引擎的框架。

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

如果你考虑你的需求,在这里购买历史,一个非常幼稚的方法开始是,例如,找到购买的产品的特征。

假设用户1购买了一台iphone和一台ipad,它们可以具有这些特征:

代码语言:javascript
复制
iphone brand : apple, category: electronics
ipad brand: apple, category: electronics

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

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

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

代码语言:javascript
复制
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 (非开源)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40833679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档