【问题标题】:Which should I use to implement a collaborative filtering on top of Neo4j?我应该使用哪个在 Neo4j 之上实现协同过滤?
【发布时间】:2015-06-01 17:39:54
【问题描述】:

我正在开发一个使用 Neo4j (v1.9) 作为底层数据存储和 Spring Data Neo4j 的项目(社交网络)。 我正在尝试将标签系统添加到项目中,并且正在寻找使用协同过滤策略有效实施标签推荐的方法。 经过大量研究,我提出了以下选择:

  1. 密码。它是 Neo4j 使用的嵌入式查询语言。不需要其他框架,也许计算时间比其他框架好。也许我可以使用 Spring Data Neo4j 轻松实现查询。
  2. Apache Mahout。它提供的机器学习算法主要集中在协同过滤、聚类和分类领域。但是,它不是为图形数据库设计的,可能会很慢。
  3. Apache Giraph。 Google Pregel 的开源版本。
  4. 阿帕奇星火。它是用于大规模数据处理的快速通用引擎。
  5. reco4j。这是迄今为止最合适的解决方案,但该项目似乎已死。
  6. Apache Spark GraphX + Mazerunner。由@johnymontana 的the answer 建议。我正在记录它。主要问题是我不知道它是否支持协同过滤。
  7. Graphaware Reco。 @ChristopheWillemsen 在评论中建议。来自官网

是一个可扩展的高性能推荐引擎框架,用于 Neo4j,允许计算和服务实时以及 预先计算的建议。

但是,我还不知道它是否适用于旧版本的 Neo4j(我目前无法升级 Neo4j 版本)。

那么,您有什么建议,为什么?随意推荐上面未列出的其他有趣的框架。

【问题讨论】:

  • 您可能希望将 GraphAware 推荐引擎添加到您的列表中。 Github:github.com/graphaware/neo4j-reco 和视频:vimeo.com/118837191
  • @ChristopheWillemsen 我现在正在看视频。你建议吗?如果是,为什么?
  • 我不能推荐你“一个”的东西,关于你想要解决什么问题以及如何解决的信息如此之少,但是对于 k-neighbors 风格,该插件可以让你的生活更轻松。下面提到的 Mazerunner 是一个非常好的项目。
  • @ChristopheWillemsen 谢谢,我正在记录这两个方面。我还更新了我原来的问题以反映答复。你知道 GraphAware 是否可以在旧版本的 Neo4j 上工作(我现在正在处理 Neo4j 1.9 实例)。

标签: neo4j recommendation-engine collaborative-filtering


【解决方案1】:

Cypher 在局部遍历方面非常快,但并未针对全局图操作进行优化。如果您想计算所有用户对之间的相似度指标,那么使用图形处理框架(如 Apache Spark GraphX)会更好。有一个名为 Mazerunner 的项目连接了 Neo4j 和 Spark,您可能想看看。

对于纯粹的 Cypher 方法,herehere 是最近的几篇博文,展示了 Cypher 查询以获取建议。

【讨论】:

  • 非常感谢您的建议。那么,Mazerunner 是您最喜欢的选择吗? Spark + Mazerunner 是否支持协同过滤?
  • @tigerjack89 虽然 Mazerunner 非常酷,并且允许您使用 Spark(yes will support collaborative filtering),但它给项目增加了很多复杂性。就个人而言,我会尝试找到一种纯粹的 Cypher 方法并从那里开始。但实际上,这完全取决于您的具体要求。
猜你喜欢
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2010-11-21
  • 2015-07-08
  • 1970-01-01
  • 2023-02-01
相关资源
最近更新 更多