Neo4j 做推薦 (9)—— 協(xié)同過濾(人群的智慧)

簡單的協(xié)同過濾

MATCH (u:User {name: "Cynthia Freeman"})-[:RATED]->(:Movie)<-[:RATED]-(o:User)

MATCH (o)-[:RATED]->(rec:Movie)

WHERE NOT EXISTS( (u)-[:RATED]->(rec) )

RETURN rec.title, rec.year, rec.plot

LIMIT 25

上面的簡單的過濾方法其實存在很多問題,例如不基于流行度來進行規(guī)范或不考慮評級。

只考慮用戶喜歡的類型

許多推薦系統(tǒng)融合了協(xié)同過濾和基于內容的方法,對于特定用戶,哪些類型的評分高于平均水平?用它來評分類似的電影:

MATCH (u:User {name: "Andrew Freeman"})-[r:RATED]->(m:Movie)

WITH u, avg(r.rating) AS mean

MATCH (u)-[r:RATED]->(m:Movie)-[:IN_GENRE]->(g:Genre)

WHERE r.rating > mean

WITH u, g, COUNT(*) AS score

MATCH (g)<-[:IN_GENRE]-(rec:Movie)

WHERE NOT EXISTS((u)-[:RATED]->(rec))

RETURN rec.title AS recommendation, rec.year AS year, COLLECT(DISTINCT g.name) AS genres, SUM(score) AS sscore

ORDER BY sscore DESC LIMIT 10

分析:

1. 用戶u評過的電影的平均分

2. 找出用戶u評過的高于平均分的電影的分類,并對分類計數(shù)

3. 找出這些分類的相關的電影,并且這些電影是用戶u沒有評過分的

4. 找出電影分類中影片數(shù)最多的前10部電影

Neo4j 做推薦 (1)—— 基礎數(shù)據(jù)

Neo4j 做推薦 (2)—— 基于內容的過濾

Neo4j 做推薦 (3)—— 協(xié)同過濾

Neo4j 做推薦 (4)—— 基于內容的過濾(續(xù))

Neo4j 做推薦 (5)—— 基于類型的個性化建議

Neo4j 做推薦 (6)—— 加權內容算法

Neo4j 做推薦 (7)—— 基于內容的相似度量標準

Neo4j 做推薦 (8)—— 協(xié)同過濾(利用電影評級)

Neo4j 做推薦 (9)—— 協(xié)同過濾(人群的智慧)

Neo4j 做推薦 (10)—— 協(xié)同過濾(皮爾遜相似性)

Neo4j 做推薦 (11)—— 協(xié)同過濾(余弦相似度)

Neo4j 做推薦 (12)—— 協(xié)同過濾(基于鄰域的推薦)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容