欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Neo4j GDS-11-neo4j GDS 库中相似度算法实现

Neo4j GDS-11-neo4j GDS 库中相似度算法实现

2025/5/10 15:47:52 来源:https://blog.csdn.net/ryo1060732496/article/details/147169515  浏览:    关键词:Neo4j GDS-11-neo4j GDS 库中相似度算法实现

neo4j GDS 系列

Neo4j APOC-01-图数据库 apoc 插件介绍

Neo4j GDS-01-graph-data-science 图数据科学插件库概览

Neo4j GDS-02-graph-data-science 插件库安装实战笔记

Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库

Neo4j GDS-04-图的中心性分析介绍

Neo4j GDS-05-neo4j中的中心性分析算法

Neo4j GDS-06-neo4j GDS 库中社区检测算法介绍

Neo4j GDS-07-neo4j GDS 库中社区检测算法实现

Neo4j GDS-08-neo4j GDS 库中路径搜索算法介绍

Neo4j GDS-09-neo4j GDS 库中路径搜索算法实现

Neo4j GDS-10-neo4j GDS 库中相似度算法介绍

Neo4j GDS-11-neo4j GDS 库中相似度算法实现

Neo4j GDS-12-neo4j GDS 库中节点插入(Node Embedding)算法介绍

Neo4j GDS-13-neo4j GDS 库中节点插入算法实现

Neo4j GDS-14-neo4j GDS 库中链接预测算法介绍

Neo4j GDS-15-neo4j GDS 库中链接预测算法实现

Neo4j GDS-16-neo4j GDS 库创建 graph 图投影

Neo4j GDS-17-neo4j GDS 库创建 graph 图投影更复杂的场景

相似度算法 neo4j gds 库的各种实现

Neo4j GDS库相似度算法实现与入门指南

Neo4j Graph Data Science (GDS) 库提供了丰富的相似度算法,覆盖从生产级到实验级的多种场景。以下是详细的算法分类、实现原理、参数配置、示例代码及适用场景分析。


一、支持的相似度算法列表(截至v1.6版本)

根据资料,GDS库的相似度算法按质量层级分类如下:

层级算法
生产级Node Similarity
Beta/Alpha级K-Nearest Neighbors (KNN)、Approximate Nearest Neighbors (ANN)、Cosine、Jaccard、Euclidean、Pearson、Overlap、Alpha Similarity

二、算法实现原理与参数设置
  1. Jaccard Similarity

    • 原理:基于集合交并比,公式:
      J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B) = \frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB
      适用于二分图结构(如用户-商品关系),比较节点邻居的重合度。
    • 参数:topK(限制每个节点的相似对数量)、similarityCutoff(过滤低分结果)、relationshipWeightProperty(加权计算)。
  2. Cosine Similarity

    • 原理:计算向量夹角的余弦值,公式:
      Cosine ( A , B ) = A ⋅ B ∥ A ∥ ∥ B ∥ \text{Cosine}(A,B) = \frac{A \cdot B}{\|A\| \|B\|} Cosine(A,B)=A∥∥BAB
      适用于高维稀疏数据(如文本TF-IDF向量)。
    • 参数:需指定向量属性(如浮点列表),支持skipValue(处理缺失值)。
  3. Pearson Similarity

    • 原理:衡量线性相关性,修正用户评分尺度差异,公式:
      r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2} \sqrt{\sum (y_i - \bar{y})^2}} r=(xixˉ)2 (yiyˉ)2 (xixˉ)(yiyˉ)
      适用于评分预测(如电影推荐)。
    • 参数:需处理非空维度,支持listName(指定属性字段)。
  4. Euclidean Similarity

    • 原理:计算向量间欧氏距离的倒数,公式:
      Similarity = 1 1 + ∑ ( x i − y i ) 2 \text{Similarity} = \frac{1}{1 + \sqrt{\sum (x_i - y_i)^2}} Similarity=1+(xiyi)2 1
      对向量幅值敏感,适用于空间距离相关的场景(如地理位置推荐)。
  5. Overlap Similarity

    • 原理:计算重叠比例,公式:
      O ( A , B ) = ∣ A ∩ B ∣ min ⁡ ( ∣ A ∣ , ∣ B ∣ ) O(A,B) = \frac{|A \cap B|}{\min(|A|, |B|)} O(A,B)=min(A,B)AB
      适用于小集合快速匹配(如短文本标签)。
  6. K-Nearest Neighbors (KNN)

    • 原理:基于属性向量寻找每个节点的最近邻,支持多种相似度度量(如Cosine、Jaccard)。
    • 参数:k(近邻数量)、sampler(采样方法)、randomSelection(随机连接数)。
  7. Approximate Nearest Neighbors (ANN)

    • 原理:高效构建KNN图,支持Jaccard、Cosine等度量,适用于大规模数据。
    • 参数:ksimilarityThreshold(近似阈值)。
  8. Alpha Similarity

    • 原理:实验级算法,允许通过参数(如 α \alpha α)动态调整权重,适用于需自定义权重的场景(如特征对齐)。
    • 参数:alpha(权重系数,需实验调优)。

三、入门示例代码
  1. Jaccard Similarity

    // 创建图投影
    CALL gds.graph.project('myGraph', ['Person', 'Cuisine'], 'LIKES');// 计算Jaccard相似度
    CALL gds.nodeSimilarity.stream('myGraph', {similarityCutoff: 0.5})
    YIELD node1, node2, similarity
    RETURN gds.util.asNode(node1).name AS Person1, gds.util.asNode(node2).name AS Person2, similarity
    ORDER BY similarity DESC;
    

    引用中的示例,计算用户间基于共同喜好的相似度。

  2. Cosine Similarity

    // 使用向量属性计算
    MATCH (p:Person)
    WITH p, [p.rating1, p.rating2, p.rating3] AS vector
    CALL gds.alpha.similarity.cosine.stream({collect({item: id(p), weights: vector}),topK: 5
    })
    YIELD item1, item2, similarity
    RETURN gds.util.asNode(item1).name AS Person1, gds.util.asNode(item2).name AS Person2, similarity;
    

    引用,适用于用户评分向量分析。

  3. Pearson Similarity

    // 构建评分向量
    MATCH (u:User)-[r:RATED]->(m:Movie)
    WITH u, collect({item: m.id, value: r.rating}) AS ratings
    CALL gds.alpha.similarity.pearson({ratings,topK: 3
    })
    YIELD item1, item2, similarity
    RETURN u.name AS User, gds.util.asNode(item2).name AS SimilarUser, similarity;
    

    引用,用于电影推荐系统中的用户相似度计算。


四、适用场景对比分析
算法最佳场景优势局限性
Jaccard用户兴趣匹配、社交网络共同好友分析计算高效,适合二分图对稀疏数据敏感
Cosine文本相似度、高维稀疏数据(如TF-IDF)方向敏感,不受向量长度影响不适用于幅值重要的场景
Pearson评分预测(如电影、商品评分)修正用户评分偏差仅适用于线性相关数据
Euclidean地理位置推荐、物理空间数据分析直观的距离度量对数据尺度敏感
KNN/ANN大规模推荐系统、实时搜索支持近似计算,适合高吞吐量参数调优复杂
Alpha动态权重调整(如多特征融合)灵活性高实验级,需大量调参

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词