Neo4j 推荐的最佳解决方案
我将找到一个合适的函数,以便根据两个人的喜好获得精确的相似性 例如,人员连接到标签,他们对每个标签的期望将作为数值保留在标签节点的边缘。我想向每个人推荐相似的人 我找到了两种解决办法:Neo4j 推荐的最佳解决方案,neo4j,cypher,recommendation-engine,facebook-recommendations,Neo4j,Cypher,Recommendation Engine,Facebook Recommendations,我将找到一个合适的函数,以便根据两个人的喜好获得精确的相似性 例如,人员连接到标签,他们对每个标签的期望将作为数值保留在标签节点的边缘。我想向每个人推荐相似的人 我找到了两种解决办法: 余弦相似性 Neo4j中有一个余弦函数,它只接受一个输入,而在上面的函数中,我需要将向量传递给这个公式。例如: 对于“a”:a=[10,20,45],每个数字表示人们对每个标签的渴望。 对于“b”:b=[20,50,70] 皮尔逊相关 当我在网上冲浪时,我发现了你的文档: 我的问题是,这个公式背后的逻辑是
提前感谢您的帮助 这个例子让人有点难以理解发生了什么。在本例中,H1和H2均为1。更好的例子是每个人吃不同种类的食物,这样你就能看到H值的变化。如果“我”也吃“蔬菜”、“比萨饼”和“热狗”,他们的H值将是4 这个例子让人有点难以理解发生了什么。在本例中,H1和H2均为1。更好的例子是每个人吃不同种类的食物,这样你就能看到H值的变化。如果“我”也吃“蔬菜”、“比萨饼”和“热狗”,他们的H值将是4 我认为
H1
和H2
的目的是使times
属性(用户食用食物的次数)在不同食物类型中的结果正常化。您可以在下面的示例中进行实验
既然您提到了其他相似性度量,您可能会对这个图表感兴趣。它有一些使用Cypher计算Pearson相关性和Jaccard相似性的简单示例。我认为
H1
和H2
的目的是规范化times
属性(用户食用食物的次数)在不同食物类型中的结果。您可以在下面的示例中进行实验
既然您提到了其他相似性度量,您可能会对这个图表感兴趣。它有一些使用Cypher计算Pearson相关性和Jaccard相似性的简单示例。对Neo4J没有帮助,只想指出余弦相似性和Pearson相关系数本质上是一样的。如果你解码不同的符号,你会发现唯一的区别是皮尔逊零首先将向量居中。因此,您可以如下定义Pearson:
Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))
Neo4J帮不了你,只想指出余弦相似性和皮尔逊相关系数本质上是一样的。如果你解码不同的符号,你会发现唯一的区别是皮尔逊零首先将向量居中。因此,您可以如下定义Pearson:
Pearsons(a, b) = Cosine(a - mean(a), b - mean(b))
谢谢@william这些链接似乎正是我想要的谢谢@william这些链接似乎正是我想要的。这两个函数是相同的,但差别很小,这就是它们结果的准确性。余弦的RMSE小于Pearson,因此余弦具有精确的结果。这两个函数相同,但差别很小,这就是它们结果的精确性。余弦的RMSE小于皮尔逊,因此余弦具有准确的结果。