0

我将找到一个合适的函数,以便根据他们的喜好获得两个人之间的准确相似度。

例如,人与标签相连,他们对每个标签的渴望将作为数值保存在标签节点的边缘。我想向每个人推荐相似的人。

我找到了两个解决方案:

  1. 余弦相似度 相似

Neo4j 中有一个余弦函数,它只接受一个输入,而在上面的函数中,我需要将向量传递给这个公式。如:

对于“a”:a=[10, 20, 45] 每个数字表示人们对每个标签的渴望。对于“b”:b=[20, 50, 70]

  1. 皮尔逊相关 相关性

当我在网上冲浪和您的文档时,我发现: http: //neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-calculations

新4j

我的问题是这个公式背后的逻辑是什么?r 和 H 有什么区别?

因为乍一看,我认为 H1 或 H2 总是等于一个。除非我应该考虑图表的其余部分。

提前感谢您的任何帮助。

4

3 回答 3

1

这个例子让人有点难以理解发生了什么。在这个例子中,H1 和 H2 都是 1。一个更好的例子是显示每个人吃不同类型的食物,这样你就可以看到 H 的值在变化。如果“我”也吃了“蔬菜”、“披萨”和“热狗”,那么他们的 H 为 4。

于 2015-12-11T16:12:09.323 回答
1

H1我认为的目的H2是标准化times不同食物类型的属性结果(用户吃食物的次数)。你可以在这个Neo4j 控制台中试验这个例子

由于您提到了其他相似性度量,您可能对此 GraphGist 感兴趣,即使用 Cypher 进行协作过滤的相似性度量。它有一些使用 Cypher 计算 Pearson 相关性和 Jaccard 相似性的简单示例。

于 2015-12-11T17:34:04.503 回答
1

Neo4J帮不了你,只想指出余弦相似度和皮尔逊相关系数本质上是一回事。如果您对不同的符号进行解码,您会发现唯一的区别是 Pearsons 首先将向量归零。因此,您可以按如下方式定义 Pearsons:

Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))
于 2015-12-14T15:06:32.140 回答