Neo4j
程序员imHou
大龄程序员,做过Java、Qt、iOS等开发,做过敏捷项目管理;目前投身于区块链技术学习和研究。
展开
-
Neo4j - Cypher 查询关系
Neo4j 学校-年级关系使用Cypher 语句,查询一个学校里面只有一个年级的情况:match p=(n:School)-[t:has]->(m:Grade) where size((n)-[:has]->())=1 return p重点在size()方法,可以获取到关系里面的个数。另外就是n:has对应的关系后面,没有加m,因为是要去计算n 所对应的有has关系原创 2018-01-29 14:06:37 · 12480 阅读 · 0 评论 -
Neo4j 做推荐 (11)—— 协同过滤(皮尔逊相似性)
皮尔逊相似性或皮尔逊相关性是我们可以使用的另一种相似度量。这特别适合产品推荐,因为它考虑到不同用户将具有不同的平均评分这一事实:平均而言,一些用户倾向于给出比其他用户更高的评分。由于皮尔逊相似性考虑了均值的差异,因此该指标将解释这些差异。根据皮尔逊的相似度,找到与Cynthia Freeman最相似的用户MATCH (u1:User {name:"Cynthia Freeman"})...原创 2018-10-29 23:17:56 · 1512 阅读 · 1 评论 -
Neo4j 做推荐 (9)—— 协同过滤(人群的智慧)
简单的协同过滤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,...原创 2018-10-29 23:13:08 · 1698 阅读 · 0 评论 -
Neo4j 做推荐 (8)—— 协同过滤(利用电影评级)
协同过滤:使用网络中其他用户的首选项,评级和操作来查找要推荐的项目。(买这个东西的用户,还买了那个东西) 用户Misty Williams的所有评分// Show all ratings by Misty WilliamsMATCH (u:User {name: "Misty Williams"})MATCH (u)-[r:RATED]->(m:Movie)RET...原创 2018-10-29 22:24:14 · 1286 阅读 · 0 评论 -
Neo4j 做推荐 (7)—— 基于内容的相似度量标准
相似度量是用于生成个性化推荐的重要组件,这些推荐允许我们量化两个项目的相似程度(或者我们稍后会看到,两个用户偏好的相似程度)。Jaccard指数是0到1之间的数字,表示两组的相似程度。两个相同集合的Jaccard指数是1. 如果两个集合没有公共元素,则Jaccard索引为0. 通过将两个集合的交集的大小除以两个集合的并集来计算Jaccard。我们可以计算电影类型集的Jaccard...原创 2018-10-29 15:40:47 · 4995 阅读 · 2 评论 -
Neo4j 做推荐 (6)—— 加权内容算法
除了考虑计算相似性的类型之外,还有更多的特征,如演员和导演。让我们使用加权总和根据他们共同的演员、流派和导演的数量对建议进行评分,以提高分数。根据重叠特征的数量和类型计算加权和:// Find similar movies by common genresMATCH (m:Movie) WHERE m.title = "Wizard of Oz, The"MATCH (m)-[:IN_G...原创 2018-10-29 14:59:17 · 2694 阅读 · 0 评论 -
Neo4j 做推荐 (5)—— 基于类型的个性化建议
如果我们知道用户看过了哪些电影,我们可以使用此信息来推荐类似的电影:// Content recommendation by overlapping genresMATCH (u:User {name: "Angelica Rodriguez"})-[r:RATED]->(m:Movie), (m)-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE...原创 2018-10-29 13:35:29 · 3030 阅读 · 2 评论 -
Neo4j 做推荐 (4)—— 基于内容的过滤(续)
Neo4j 做推荐 (2)—— 基于内容的过滤 前文只是简单描述了内容过滤的概念和简单演示。在此,我们将从具体实例来介绍如何使用基于内容的过滤方法来给用户推荐电影。首先,基于共同类型的相似性,如果用户看过《Inception》,我们就可以给用户推荐和该电影具有相同分类(流派)的电影。// Find similar movies by common genresMATCH (...原创 2018-10-14 22:16:43 · 1530 阅读 · 0 评论 -
Neo4j 做推荐 (3)—— 协同过滤
协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息MATCH (m:Movie {title: "Crimson Tide"})<-[:RATED]-(u:User)-[:RATED]->(rec:Movie)RETURN rec.title AS recommendation, COUNT(*) AS usersWhoAlsoWatchedOR...原创 2018-10-12 14:58:40 · 1967 阅读 · 0 评论 -
Neo4j 做推荐 (2)—— 基于内容的过滤
基于内容的过滤(Content-based filtering):该技术通过比较商品之间的相似性或者相关性进行推荐。这种方式忽略用户的购买行为,只考虑商品之间的相似关系。MATCH p=(m:Movie {title: "Net, The"})-[:ACTED_IN|:IN_GENRE|:DIRECTED*2]-()RETURN p LIMIT 25运行结果如下图:分析: ...原创 2018-10-12 14:46:03 · 2218 阅读 · 0 评论 -
Neo4j 做推荐 (1)—— 基础数据
Neo4j 提供了sandbox,开始可以使用3天,到期后可以续7天。只需要注册一个账号即可。登录后,点击Sandbox,可以创建电影推荐相关的,当然也可以自己选择其他的。创建好后会收到邮件,也可以网页上查看详细: 点击链接进去,可以看到所有的数据都创建好了。有节点、关系、属性等。数据来源于这里,有兴趣可以自己写接口生成图: Open Movie Database...原创 2018-10-12 11:54:13 · 2663 阅读 · 0 评论 -
Neo4j 做推荐 (12)—— 协同过滤(基于邻域的推荐)
kNN——K近邻现在我们有了一种基于偏好查找类似用户的方法,下一步是允许每个k个最相似的用户投票选择应该推荐的项目。主要有:“与我的电影最相似的电影中有10个用户是谁?他们评价的电影有多高,我还没看过呢?”使用Pearson相似度的kNN电影推荐MATCH (u1:User{name:"Cynthia Freeman"})-[r:...原创 2018-10-29 23:27:31 · 1471 阅读 · 2 评论