推荐的最佳解决方案

时间:2015-12-11 10:23:59

标签: neo4j cypher recommendation-engine facebook-recommendations

我将找到一个合适的功能,以便根据他们的最爱获得两个人之间的准确相似性。

例如,人们连接到标签,并且他们对每个标签的期望将作为数值保持在标签节点的边缘上。我想向每个人推荐类似的人。

我找到了两个解决方案:

  1. 余弦相似度 similarity
  2. 在Neo4j中有余弦函数只接受一个输入而在上面的函数中我需要将vectores传递给这个公式。如:

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

    1. Pearson Correlation correlation
    2. 当我在网上冲浪时,我发现你的文件: http://neo4j.com/docs/stable/cypher-cookbook-similarity-calc.html#cookbook-calculate-similarities-by-complex-calculations

      neo4j

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

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

      感谢您提前获取任何帮助。

3 个答案:

答案 0 :(得分:1)

这个例子让人有点难以理解发生了什么。在这个例子中,H1和H2都是1.一个更好的例子可以显示每个人吃不同类型的食物,所以你能够看到H值的变化。如果" me"还吃了"蔬菜","披萨"和"热狗",他们的H将是4.

答案 1 :(得分:1)

我认为H1H2的目的是规范食物类型中times属性(用户吃食物的次数)的结果。您可以在此Neo4j console

中试验此示例

由于您提及其他相似性度量,您可能对此GraphGist Similarity Measures For Collaborative Filtering With Cypher感兴趣。它有一些使用Cypher计算Pearson相关性和Jaccard相似性的简单例子。

答案 2 :(得分:1)

无法帮助您使用Neo4J,只想指出Cosine Similarity和Pearsons'相关系数基本上是一回事。如果您解码不同的符号,您会发现唯一的区别是Pearsons首先将向量置零。所以你可以按如下方式定义Pearsons:

Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))