最佳推荐方案
Best Solution for Recommendation
我打算找一个合适的函数,根据两个人的喜好,得到准确的相似度。
例如人与标签相关联,他们对每个标签的期望将作为数值保存在标签节点的边缘。我想给每个人推荐相似的人。
我找到了两个解决方案:
- 余弦相似度
Neo4j 中有一个余弦函数,它只接受一个输入,而在上面的函数中,我需要将向量传递给这个公式。如:
for "a": a=[10, 20, 45] 每个数字表示人对每个标签的渴望。
对于 "b": b=[20, 50, 70]
- 皮尔逊相关系数
当我在网上冲浪和您的文档时,我发现:
http://neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-calculations
我的问题是这个公式背后的逻辑是什么?
r 和 H 有什么区别?
因为乍一看我觉得H1 或H2 总是相等的。除非我应该考虑图表的其余部分。
在此先感谢您的帮助。
这个例子让人有点难以理解发生了什么。在这个例子中,H1 和 H2 都是 1。一个更好的例子是显示每个人吃不同类型的食物,这样你就可以看到 H 值的变化。如果 "me" 也吃了 "vegetables"、"pizza" 和 "hotdogs",他们的 H 将为 4。
我认为 H1
和 H2
的目的是标准化 times
属性(用户吃食物的次数)的结果食物种类。您可以在此 Neo4j console
中试验此示例
既然您提到了其他相似性度量,您可能会对这个 GraphGist 感兴趣,Similarity Measures For Collaborative Filtering With Cypher。它有一些使用 Cypher 计算 Pearson 相关性和 Jaccard 相似度的简单示例。
无法帮助您了解 Neo4J,只是想指出余弦相似度和 Pearsons 相关系数本质上是同一回事。如果你解码不同的符号,你会发现唯一的区别是 Pearsons 首先将向量归零。所以你可以这样定义Pearsons:
Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))
我打算找一个合适的函数,根据两个人的喜好,得到准确的相似度。
例如人与标签相关联,他们对每个标签的期望将作为数值保存在标签节点的边缘。我想给每个人推荐相似的人。
我找到了两个解决方案:
- 余弦相似度
Neo4j 中有一个余弦函数,它只接受一个输入,而在上面的函数中,我需要将向量传递给这个公式。如:
for "a": a=[10, 20, 45] 每个数字表示人对每个标签的渴望。 对于 "b": b=[20, 50, 70]
- 皮尔逊相关系数
当我在网上冲浪和您的文档时,我发现: http://neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-calculations
我的问题是这个公式背后的逻辑是什么? r 和 H 有什么区别?
因为乍一看我觉得H1 或H2 总是相等的。除非我应该考虑图表的其余部分。
在此先感谢您的帮助。
这个例子让人有点难以理解发生了什么。在这个例子中,H1 和 H2 都是 1。一个更好的例子是显示每个人吃不同类型的食物,这样你就可以看到 H 值的变化。如果 "me" 也吃了 "vegetables"、"pizza" 和 "hotdogs",他们的 H 将为 4。
我认为 H1
和 H2
的目的是标准化 times
属性(用户吃食物的次数)的结果食物种类。您可以在此 Neo4j console
既然您提到了其他相似性度量,您可能会对这个 GraphGist 感兴趣,Similarity Measures For Collaborative Filtering With Cypher。它有一些使用 Cypher 计算 Pearson 相关性和 Jaccard 相似度的简单示例。
无法帮助您了解 Neo4J,只是想指出余弦相似度和 Pearsons 相关系数本质上是同一回事。如果你解码不同的符号,你会发现唯一的区别是 Pearsons 首先将向量归零。所以你可以这样定义Pearsons:
Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))