2

我正在开发一个 Web 应用程序,该应用程序在很大程度上取决于它根据具有相似偏好的用户对项目提出建议的能力。我的一个朋友告诉我,我正在寻找的 - 数学上 - 是一些聚类分析算法。另一方面,在 SO 上,有人告诉我 Neo4j(或其他一些 Graph DB)是我应该为这项任务接近的那种 DB(首选项)。

我开始研究这两种工具,我有一些疑问。出于集群分析的目的,在我看来,标准 SQL DB 仍然是完美的选择,而 Neo4j 将更适合神经网络类型的方法(尽管仍然非常适合该任务)。

我错过了什么吗?我是否尝试使用错误的工具组合?

我很想听听关于这个主题的一些想法。

感谢分享

4

3 回答 3

6

这取决于您的数据。neo4j 能够为一个特定节点实时提供更复杂的推荐 - 假设您想向用户推荐一些产品,这可以在图形数据库中实时处理

而使用一些集群系统是一次为所有用户推荐的最佳方式(并且可能将其保存在某个地方,这样您就不需要再次计算它)。

计算差异:

  • neo4j 没有初始化成本,可以在可接受的时间内给你一个建议
  • 聚类需要更多时间进行初始化(例如,不是以秒为单位,但很可能以分钟/小时为单位),并且更好地计算整个数据集的建议。事实上,严格地为特定用户花费时间进行一次计算,这种聚类可以比 Neo4j 更快,但最大的限制是初始初始化 - 因此不适合实时应用程序

实际区别

  • 如果您拥有大部分静态数据并且可以一次做一次建议而不是使用 SQL 进行集群

  • 如果您获得动态数据,其中每次交互都会更新数据,并且您必须始终提供最新建议,那么请使用 neo4j

于 2013-03-14T09:04:01.520 回答
2

我目前正在研究与 Neo4j 的推荐和聚类相关的各种主题。我不确定您要查找的内容,但根据您在图表上实现数据的方式,您可以轻松地计算出基于对各种类型节点的链接计数的聚类算法。

如果您正确规划了节点和关系,则可以识别与一组类别共享最常见链接的节点组。

于 2013-03-14T11:38:24.860 回答
2

让我介绍一下 Reco4J ( http://www.reco4j.org ),它是一个开源框架,提供基于图数据库源的推荐。它使用 neo4j 作为图形数据库管理系统。如果您对支持感兴趣,请查看并联系我们。这是一个非常早期的版本,但我们正在努力提供扩展文档和新的有趣功能。

干杯,亚历山德罗

于 2013-03-14T12:23:27.497 回答