【问题标题】:Neo4j Collaborative Filtering (CF) recommendation query using Pearson使用 Pearson 的 Neo4j 协作过滤 (CF) 推荐查询
【发布时间】:2021-04-24 20:06:31
【问题描述】:

大家好,Stackoverflow,

我想了解使用 Pearson 的查询。

nomdenom 可以是什么?

什么是r1: r1r2: r2

我不明白r.r1.ratingr.r2.rating 是什么。

此查询应推荐其他用户评分的电影。

MATCH (u1:User {id: 3})-[r:RATED]->(m:Movie)
WITH u1, avg(r.rating) AS u1_mean
MATCH (u1)-[r1:RATED]->(m:Movie)<-[r2:RATED]-(u2)
WITH u1, u1_mean, u2, COLLECT({r1: r1, r2: r2}) AS ratings WHERE size(ratings) > 10
MATCH (u2)-[r:RATED]->(m:Movie)
WITH u1, u1_mean, u2, avg(r.rating) AS u2_mean, ratings
UNWIND ratings AS r
WITH sum( (r.r1.rating-u1_mean) * (r.r2.rating-u2_mean) ) AS nom,
     sqrt( sum( (r.r1.rating - u1_mean)^2) * sum( (r.r2.rating - u2_mean) ^2)) AS denom,
     u1, u2 WHERE denom <> 0
WITH u1, u2, nom/denom AS pearson
ORDER BY pearson DESC LIMIT 10
MATCH (u2)-[r:RATED]->(m:Movie) WHERE NOT EXISTS( (u1)-[:RATED]->(m) )
RETURN m.name, SUM( pearson * r.rating) AS score
ORDER BY score DESC LIMIT 25

输出如下:

"m.name" │"score" │

│《西雅图夜未眠》│25.859451877376813│

│《隧道》│22.652532472101605│

│“甲虫汁”│22.21835919736008 │

│“如果你知道什么就尖叫..”│21.935357890253528│

│《亡灵黎明》│21.421377433824798│

│《禅达的囚徒》│21.225502683325033│

│《天才雷普利先生》│20.83938743140176 │

任何建议都会有所帮助。

【问题讨论】:

    标签: neo4j collaborative-filtering pearson


    【解决方案1】:

    所以这里描述了 Pearson 的公式:https://en.wikipedia.org/wiki/Pearson_correlation_coefficient#For_a_sample

    nom 只是该公式的分子,在此处定义: “与总和((r.r1.rating-u1_mean)*(r.r2.rating-u2_mean))作为标称,”

    同样,denom 是分母。

    我对其他两个问题不太清楚,但希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2016-12-22
      • 2016-05-08
      相关资源
      最近更新 更多