我正在开发一个Web应用程序,它将在很大程度上依赖于它能够根据具有类似偏好的用户对项目提出建议。我的一个朋友告诉我,我正在寻找的 - 数学上 - 是一些聚类分析算法。另一方面,在SO上,我被告知Neo4j(或其他一些图形数据库)是我应该为此任务寻求的那种数据库(首选项)。
我开始研究这两种工具,我有些疑惑。 出于聚类分析的目的,我认为标准SQL DB仍然是完美的选择,而Neo4j更适合神经网络的方法(虽然仍然非常适合任务)。
我错过了什么吗?我是否尝试使用错误的工具组合?
我很想听听有关这个问题的一些想法。
感谢分享
答案 0 :(得分:6)
这取决于您的数据。 neo4j能够为一个特定节点实时提供复杂的建议 - 假设你想向用户推荐一些产品,这可以在图形数据库中实时处理
而使用某些群集系统是同时为所有用户提供建议的最佳方式(并且可能将其保存在某处,因此您无需再次计算)。
计算差异:
实际差异:
如果您有主要是静态数据,并且您可以一次性建议一次,而不是使用SQL进行群集
如果您获得了动态数据,其中每次互动都会更新数据,并且您必须始终提供最新建议,而不是使用neo4j
答案 1 :(得分:2)
我目前正在研究与neo4j推荐和聚类相关的各种主题。 我不确定您在寻找什么,但根据您在图表上实现数据的方式,您可以根据计算各种类型节点的链接轻松制定出聚类算法。
如果您正确规划了节点和关系,则可以识别共享一组类别的最常见链接的节点组。
答案 2 :(得分:2)
让我介绍Reco4J(http://www.reco4j.org),是一个开源框架,提供基于图数据库源的推荐。它使用neo4j作为图形数据库管理系统。 如果您对支持感兴趣,请查看并联系我们。 这是一个非常早期的版本,但我们正在努力提供扩展文档和新的有趣功能。
干杯, 的Alessandro