余弦距離:
Jaacard相似度對于比較電影很有用搏存,實際上是比較兩組(類型、演員招刹、導演等)。但是對于電影評級,每個關系都有一個我們可以考慮的權重衰腌。
余弦相似度:
兩個用戶的余弦相似度將告訴我們兩個用戶對電影的偏好有多相似。具有高余弦相似度的用戶將具有類似的偏好觅赊。
根據(jù)余弦相似度桶唐,找到與Cynthia Freeman 最相似偏好的用戶。
// Most similar users using Cosine similarity
MATCH (p1:User {name: "Cynthia Freeman"})-[x:RATED]->(m:Movie)<-[y:RATED]-(p2:User)
WITH COUNT(m) AS numbermovies, SUM(x.rating * y.rating) AS xyDotProduct,
SQRT(REDUCE(xDot = 0.0, a IN COLLECT(x.rating) | xDot + a^2)) AS xLength,
SQRT(REDUCE(yDot = 0.0, b IN COLLECT(y.rating) | yDot + b^2)) AS yLength,
p1, p2 WHERE numbermovies > 10
RETURN p1.name, p2.name, xyDotProduct / (xLength * yLength) AS sim
ORDER BY sim DESC LIMIT 100;
Neo4j 做推薦 (4)—— 基于內容的過濾(續(xù))
Neo4j 做推薦 (8)—— 協(xié)同過濾(利用電影評級)
Neo4j 做推薦 (9)—— 協(xié)同過濾(人群的智慧)
Neo4j 做推薦 (10)—— 協(xié)同過濾(皮爾遜相似性)