图分析,又称图算法,旨在对以图表示的互联数据进行洞察分析。传统分析更多聚焦于单个数据点,而图分析侧重数据间的联系,从而揭示其中隐含的信息。
本文为您介绍图分析相关基础知识。如需查看完整使用指南,请参阅嬴图算法与分析。
图算法库
嬴图提供丰富的图算法集,涵盖以下几大类:
中心性
根据多种衡量重要性的方式,为图中的节点排名。
例如,度中心性算法根据节点连接的边数(即节点的度)来衡量节点的重要性,反映了该点与图中其他节点的直接关联程度。
相似度
使用多种指标衡量图中两点间的相似度。
例如,杰卡德相似度算法通过对比两个节点邻居的交集和并集来计算两点间的相似度,即邻域越相似,两点也越相似。
连通性和紧密度
探索图的整体或局部连接性或紧密度。
例如,连通分量算法可以识别图中的连通分量。连通分量是图中节点的最大子集,其中所有的节点相互连接。若图中仅识别出一个连通分量,说明这是一个连通图。
路径发现
在图中寻找节点间的最短路径或成本最小的路径,或系统地访问所有节点。
例如,最小生成树算法在图中寻找边权重之和最小的生成树,实现成本最小化。
拓扑链接预测
根据现有图结构,预测尚未连接的两点间形成边(链接)的可能性。
例如,共同邻居算法计算两个节点间的共同邻居数量,作为预测分数。其背后逻辑如下,拥有大量共同邻居的节点,未来更有可能建立连接。
社区识别和分类
识别图中彼此连接更密集,而与图的其他部分连接较稀疏的节点群组。
例如,鲁汶算法识别图中模块度最大的社区。模块度是评估社区划分质量时使用最广泛的方法之一。
图嵌入
将节点映射到连续向量空间,同时保留图结构和属性(点属性和边属性)。图嵌入旨在将图数据转换为可用于后续机器学习任务的向量。
例如,下图展示了在图上运行嵌入算法的结果。在图中,节点的颜色代表所属的社区。当所有节点都被转换为二维向量后,可以明显看出,同一社区中的节点位置相对较近,表明图结构得到了很好的保留。
如何运行算法
在嬴图数据库使用GQL运行算法。为了实现最佳性能,需为待分析的图集创建HDC图或分布式投影,在其上运行算法。
在HDC服务器hdc-server-1
上创建HDC图my_hdc_graph
,并将当前图集全部加载到HDC图上:
CALL hdc.graph.create("hdc-server-1", "my_hdc_graph", {
nodes: {"*": ["*"]},
edges: {"*": ["*"]},
direction: "undirected",
load_id: true,
update: "static",
query: "query",
default: false
})
在my_hdc_graph
上运行度中心性算法,返回度最高的十个点:
CALL algo.degree("my_hdc_graph", {
params: {
return_id_uuid: "id",
limit: 10,
order: 'desc'
},
return_params: {}
}) YIELD r
RETURN r
嬴图的图算法支持六种运行模式:文件回写,数据库回写,统计回写,完整返回,流式返回和统计返回。有了这些模式,您可根据具体需求和使用场景,选择直接将结果返回至客户端,或将其保存至文件或数据库中。