在图谱分析领域,Neo4j是一款广受欢迎的图数据库,而Graph Data Science Playground(GDSP)则为用户提供了便捷的图数据分析工具。在本文中,我们将深入探讨如何在Neo4j中使用GDSP进行图谱分析,帮助你更好地理解和应用这些强大的工具。

目录

一、准备工作

二、GDSP的安装与启动(有坑)

三、GDSP库的功能概览

1、单一算法

Centralities(中心性)

Community Detection(社区检测)

Path Finding(路径查找)

Similarity(相似度)

Graph Embeddings(图嵌入)

2、组合算法:

Directed Graph Influencers

Community Detection on Multi Partite Graph

Categorise Unstructured Data

3、选择适合你的组合

(1)如果你需要识别关键影响力节点:

(2)如果你需要发现多种类型节点之间的社区结构:

(3)如果你需要根据节点属性进行分类:

4、参数解释:

配置示例:

四、结论


一、准备工作

如何下载Neo4j并进行安装本文就不多进行探讨了,市面的文章数不胜数;有关Neo4j入门的命令使用可以参考这一篇文章:https://blog.csdn.net/Cchaofan/article/details/122377762

二、GDSP的安装与启动(有坑)

        要使用Neo4j的最新版本与GDSP,你可以按照以下步骤进行安装和启动:

  1. 打开Graph Apps Gallery
    在Neo4j桌面版的功能栏中,选择“Graph Apps Gallery”。
  2. 选择并安装GDSP
    在应用库中找到“Graph Data Science Playground”,点击安装。

        首先分享一下我踩的一个坑!要想使用最新版本的Neo4j使用GDSP,使用桌面端在功能栏中选择Graph Apps Gallery

​然后在里面就可以选择各种库进行下载使用了,如下图所示:

​我们选择下载Graph Data Science Playground来进行图分析。在进入这个库之后可能就会有小伙伴们遇到问题,发现这个库在最后一步选择数据库(select database)的时候一直报错。

​不多废话,直接给出解决方法:

报错的原因是因为你的Graph DBMS版本过高,导致使用不了GDSP库,直接在创建项目的时候对DBMS库进行降级:

​像我在这选择了5.12.0的版本,之后就可以流畅的使用GDSP库啦!

三、GDSP库的功能概览

        简单的对GDSP库所拥有的功能进行分析,当我们选择了要进行分析的图谱库后,进去会是这个界面:

​        也是很清晰明了的告诉我们,有两种分析方法,可以进行单算法的分析,或多算法的组合分析,其中的算法都是固定的,只是组合不同。主要有以下这些算法:

​对这些算法和参数进行介绍:

1、单一算法

Centralities(中心性)

这些算法用于衡量节点在图中的重要性。

  1. Eigenvector(特征向量中心性): 衡量节点与其他重要节点的连接强度。
  2. Page Rank: 衡量节点的全局重要性,类似于Google的网页排名算法。
  3. Article Rank: 类似于Page Rank,但适用于更大规模的网络。
  4. Betweenness(中介中心性): 衡量节点在多对节点最短路径上的重要性。
  5. Approx Betweenness(近似中介中心性): Betweenness的近似算法,计算速度更快。
  6. Closeness(紧密中心性): 衡量节点到其他所有节点的平均最短路径长度。
  7. HITS: 衡量节点作为“枢纽”或“权威”的重要性,常用于网页分析。

Community Detection(社区检测)

这些算法用于发现图中的社区或群体结构。

  1. Louvain: 基于模块度优化的社区检测算法,适用于大规模图。
  2. Modularity Optimization(模块度优化): 优化图的模块度,检测社区。
  3. Label Propagation(标签传播): 基于节点标签传播的社区检测算法。
  4. K1-Coloring: 将图分割为若干个子图,使得相邻节点具有不同颜色。
  5. Connected Components(连通分量): 找出图中的所有连通子图。
  6. Strongly Connected Components(强连通分量): 找出图中的所有强连通子图。
  7. Triangles(三角形): 计算图中所有三角形的数量。
  8. Triangle Count(数三角形): 统计每个节点参与的三角形数量。
  9. Local Clustering Coefficient(局部聚类系数): 衡量节点的邻居之间互相连接的紧密程度。
  10. SLLPA: 基于标签传播的社区检测算法。

Path Finding(路径查找)

这些算法用于查找节点之间的路径。

  1. Shortest Path(最短路径): 计算两个节点之间的最短路径。
  2. A*: A*搜索算法,适用于启发式路径查找。
  3. Single Source Shortest Path(单源最短路径): 从一个节点出发计算到所有其他节点的最短路径。
  4. All Pairs Shortest Path(所有节点对之间的最短路径): 计算图中所有节点对之间的最短路径。

Similarity(相似度)

这些算法用于计算节点之间的相似度。

  1. Node Similarity(节点相似度): 计算节点之间的相似度。
  2. K-Nearest Neighbors(K近邻): 找出每个节点的K个最近邻居。

Graph Embeddings(图嵌入)

这些算法将图数据嵌入到低维向量空间中,便于机器学习任务。

  1. Node2Vec: 使用随机游走将节点嵌入到向量空间。
  2. FastRP: 快速随机投影嵌入算法。

2、组合算法:

        在这个界面上,你可以选择三种不同的算法组合(Algorithm Recipes),每一种组合都针对不同的分析需求。以下是每个选项的详细介绍,以及如何选择适合你数据的组合:

Directed Graph Influencers

        这个组合包含用于在有向图中查找最具影响力节点的算法。这些算法能够识别在图中对信息传播或控制具有重要影响的节点。

适用场景:

  • 你需要识别在网络中哪些节点对整个网络的传播和影响最大。
  • 适用于有明确方向关系的数据(例如从一个案件到另一个案件的流动)。

包含算法:

  • Page Rank
  • Betweenness
  • Eigenvector Centrality

Community Detection on Multi Partite Graph

        这个组合包含用于在多部分(多标签)图中检测社区的算法。这些算法可以帮助你发现不同类型节点之间的社区结构。

适用场景:

  • 你的数据包含多种类型的节点,需要在这些节点中发现社区结构。
  • 适用于复杂图结构,包含多种节点和关系。

包含算法:

  • Louvain
  • Connected Components

Categorise Unstructured Data

        这个组合包含用于根据节点属性相似性创建图结构的算法。这些算法能够帮助你将未结构化的数据进行分类和结构化处理。

适用场景:

  • 你需要基于实体的属性将案件分类。
  • 适用于需要将未结构化数据转化为结构化图数据的场景。

包含算法:

  • Node Similarity
  • K-Nearest Neighbors

3、选择适合你的组合

根据你的数据类型和分析需求,可以选择以下组合:

(1)如果你需要识别关键影响力节点:

选择 Directed Graph Influencers 组合。这将帮助你找到在网络中对信息传播和控制最具影响力的案件或节点。

(2)如果你需要发现多种类型节点之间的社区结构:

选择 Community Detection on Multi Partite Graph 组合。这将帮助你在例如地点和时间等不同类型节点之间发现社区结构。

(3)如果你需要根据节点属性进行分类:

选择 Categorise Unstructured Data 组合。这将帮助你基于案件的属性将案件分类和结构化。

4、参数解释:

以Node Similarity算法进行举例说明,

  1. Similarity Metric(相似性度量)

    COSINE: 选择余弦相似性作为度量标准。余弦相似性用于计算两个向量之间的夹角,以度量它们的相似性。
  2. # of neighbors per nodes(每个节点的邻居数量)

    设置每个节点的近邻数量。例如,设置为10表示每个节点将与其最相似的10个邻居节点进行比较和连接。
  3. Node Property(节点属性)

    选择用于相似性计算的节点属性。如果节点具有某个属性(例如某些特定的标签或数值),你可以在此选择该属性。此字段为空时,将默认使用所有节点属性。
  4. Sample Rate(采样率)

    设置采样率。这个参数用于控制计算时的采样比例。例如,0.5表示仅使用50%的节点进行计算,适用于大规模数据以降低计算复杂度。
  5. Delta Threshold(Delta阈值)

    设置Delta阈值,用于控制算法的收敛。较小的阈值表示更高的精度,但也可能增加计算时间。例如,0.001表示当变化量小于0.001时,算法将停止迭代。
  6. Random Joins(随机连接数)

    设置随机连接数。这个参数用于在计算相似性时增加随机连接,以提高算法的鲁棒性。设置为10表示每次迭代时将随机选择10个节点进行连接。
  7. Relationship Orientation: 选择关系的方向。

    Natural: 使用关系的自然方向。如果关系是有向的,保持其原始方向。
    Reverse: 反转关系的方向。如果关系是有向的,使用反向关系。
    Undirected: 将所有关系视为无向关系。忽略关系的方向性,将其视为双向连接。

配置示例:

假设你要计算实体之间的相似性,配置如下:

  • Similarity Metric: 选择 COSINE​。
  • # of neighbors per nodes: 设置为 10​,表示每个节点连接到10个最相似的邻居。
  • Node Property: 如果实体有特定的属性用于计算相似性,在此选择该属性;否则保持为空。
  • Sample Rate: 设置为 0.5​,表示使用50%的节点进行计算。
  • Delta Threshold: 设置为 0.001​,确保高精度。
  • Random Joins: 设置为 10​,以增加计算的随机性和鲁棒性。

四、结论

        GDSP为图谱分析提供了丰富的工具和算法,适用于各种复杂数据的分析需求。无论是通过单一算法,还是通过组合算法,你都可以在Neo4j中轻松实现高效的图数据科学分析。希望本文对你在Neo4j GDSP中的图谱分析之旅有所帮助,阿达哒哒哒大!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐