kNN——K近邻
现在我们有了一种基于偏好查找类似用户的方法,下一步是允许每个k个最相似的用户投票选择应该推荐的项目。
主要有:
“与我的电影最相似的电影中有10个用户是谁?他们评价的电影有多高,我还没看过呢?”
使用Pearson相似度的kNN电影推荐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 MATCH (u1:User{name:"Cynthia Freeman"})-[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 level WHERE size(level)> 10
MATCH (u2)-[r:RATED]->(m:Movie)
WITH u1,u1_mean,u2,avg(r.rating)AS u2_mean,level
UNWIND level 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.title,SUM(pearson * r.rating) AS score
ORDER BY score DESC LIMIT 25
- Neo4j 做推荐 (1)—— 基础数据
- Neo4j 做推荐 (2)—— 基于内容的过滤
- Neo4j 做推荐 (3)—— 协同过滤
- Neo4j 做推荐 (4)—— 基于内容的过滤(续)
- Neo4j 做推荐 (5)—— 基于类型的个性化建议
- Neo4j 做推荐 (6)—— 加权内容算法
- Neo4j 做推荐 (7)—— 基于内容的相似度量标准
- Neo4j 做推荐 (8)—— 协同过滤(利用电影评级)
- Neo4j 做推荐 (9)—— 协同过滤(人群的智慧)
- Neo4j 做推荐 (10)—— 协同过滤(皮尔逊相似性)
- Neo4j 做推荐 (11)—— 协同过滤(余弦相似度)
- Neo4j 做推荐 (12)—— 协同过滤(基于邻域的推荐)
作者:imHou
来源:CSDN
原文:https://blog.csdn.net/lovehouye/article/details/83515103
版权声明:本文为博主原创文章,转载请附上博文链接!
在 “Neo4j 做推荐 (12)—— 协同过滤(基于邻域的推荐)” 上有 2 条评论
评论已关闭.