logo
咨询企业版

技术分享行业科普

技术科普|图算法是什么?何时用、怎么用?

导读:图数据库的核心价值在于揭示数据之间隐藏的复杂关系。NebulaGraph 支持丰富的图算法,将隐秘关系高效转化为 actionable 的洞见。 本期技术科普将带你了解图算法与 NebulaGraph Algorithm,看看 NebulaGraph 社区用户如何将这些图算法用于生产环境以及如何上手。

一、 图数据库与图算法

(一)什么是“图”?

想象一下你有一张关系网

1. 点:代表独立的实体。比如:

  • 你微信里的所有好友。

  • 城市地图上的所有十字路口。

  • 一个项目里的所有任务。

2.线:代表这些实体之间的关系。比如:

  • 微信里,你和某个好友是“好友关系”(一条线连着你俩)。

  • 城市地图上,两个十字路口之间有一条“道路”(一条线连着两个路口)。

  • 项目里,任务 A 必须在任务 B 开始之前完成(一条线从 A 指向 B,表示依赖)。

这种由“点”(图数据库中的顶点或节点)和连接它们的“线”(图数据库中的边)组成的结构,就叫做“图”。

(用 NebulaGraph Studio 进行某公司股权穿透)

(二)什么是图算法?

图算法就是一套聪明的“解题思路”或“工具包”,专门用来分析这种“点”和“线”组成的关系网,计算关于这个网络的问题。

为什么需要专门的“图算法”?

  • 超越简单查询:传统查询能找到直接邻居,但图算法能分析整个网络的结构和动态。

  • 量化关系价值:把模糊的“关联”变成可计算的指标(如重要性、紧密度、相似度)。

  • 发现隐藏模式:自动识别传统关系数据库难以查询的社群、关键枢纽、传播路径。

图算法的应用

找最短路径:

  • 问题:从家(点A)导航到公司(点B),导航如何规划最快/综合成本最低的路线?

  • 图算法:经典的最短路径算法(如 Dijkstra 算法),能快速计算出从 A 到 B 的所有可能路线中,总权重(通常代表路程长度、通行时间或综合成本)最小的那条路径。

好友推荐:

  • 问题:微信/微博/Facebook 怎么知道你可能认识谁,从而给你推荐好友?

  • 图算法:基于共同邻居的链路预测算法(如 Jaccard 算法)会分析你的社交网络图:关注你的直接好友(一度邻居),然后考察他们的好友(你的二度邻居)。那些与你拥有大量共同好友(即共同的一度邻居) 但尚未与你建立连接的人,就很可能被推荐给你。

网页排名:

  • 问题:搜索引擎怎么决定当你搜索“图算法”时,哪个网页应该排在前面?

  • 图算法:PageRank 算法。它的核心思想是:

  • 被很多其他网页链接指向的网页(点),通常比较重要(票数多)。

  • 被一个重要网页链接指向的网页,也会获得更高的重要性(重要的一票更有分量)。

  • 算法会不断计算每个网页的“重要性得分”,得分高的排名就靠前。

二、图算法类型及应用场景

图算法大致可分为以下几种类型:

三、NebulaGraph Algorithm

NebulaGraph Algorithm 是一款基于 GraphX 的 Spark 应用程序,通过提交 Spark 任务的形式使用完整的算法工具对 NebulaGraph 数据库中的数据执行图计算,也可以通过编程形式调用 lib 库下的算法针对 DataFrame 执行图计算。

(一)NebulaGraph 支持的图算法

上图为社区版支持的基础图算法,企业版支持更多高性能算法(如 InfoMap、APSP、DegreeWithTime、HyperANF 等)及基于 ISO-GQL 的自定义图算法。

(二)NebulaGraph 用户这么用

NebulaGraph 用户们如何用图算法解锁业务价值?

1、中心性分析-PageRank

  • 何时用:当你需要找出整个网络中“影响力大”或“被广泛引用/连接”的节点时。

  • 场景举例:识别社交媒体上的关键意见领袖;在金融交易网络中定位核心中转账户。

  • 社区用户Boss 直聘整合链路追踪(Trace)、系统指标(Metrics)、日志(Logs)三大数据源,构建统一的全链路异常拓扑图,发现多个真子图分散出现在图结构中,每个子图都有“风暴中心”,故采用 PageRank 算法动态计算节点故障权重(Rank 值由节点出入度、链路错误数、事件进行加权计算),得出 Rank 值最高的 TopN 故障节点(即 “风景眼”),从而快速实现根因定位,平均收敛时间仅 20s.

2、 社区发现-Louvain、Hanp

  • 何时用?需要在大规模网络中发现层次化的社区结构时。

  • 场景举例:社交网络中的兴趣社群划分;电商用户群体细分(购买模式相似);城市交通流量分区。

  • 社区用户中国移动首先基于所有移动用户构建一个关系网络,采用 Louvain、Hanp 算法进行社区发现与挖掘,如个人的信用评分以及个人之间的关系,然后对这个社区进行打分,识别出这个社区是否为一个欺诈社区或者是一个低信用的社区,从而进行风险管理。

3、社区发现-LabelPropagation

  • 何时用?需要快速发现社区,或者网络结构清晰、社区边界明显时。

  • 场景举例:实时推荐系统中的用户兴趣圈识别;新闻/信息传播路径上的群体划分。

  • 社区用户:在众安保险,LabelPropagation 应用于贷中环节。LabelPropagation 主要是通过一个确定的点 Y 去传播、衍生出它相关点。比如,贷中用户名单中某个用户是严重逾期人员,这个人员便是打上逾期标签的确定点 Y,结合既定的风控规则查看点 Y 关联延伸的点中哪些点出现相似逾期行为,从而判断这些点是否属于严重逾期的社群。

4、ConnectedComponent/StronglyConnectedComponent

  • 何时用? CC (弱连通分量)关心是否可以通过路径(忽略边方向)连通。用于发现孤岛。SCC (强连通分量):关心是否可以通过有向路径互相到达。用于分析紧密循环依赖。

  • 场景举例:分析社交网络中的孤立用户群体 (CC);研究论文引用网络中的研究学派 (SCC);分析系统模块间的循环依赖 (SCC)。

  • 社区用户众安保险使用 ConnectedComponent 计算出用户关系图谱。当发现一个手机号被异常数量(如五六十人)标记为“家庭联系人”时,该手机号及其关联用户即构成一个潜在风险社群。处于此类异常社群是用户风险的强信号(充分不必要条件),用户也可能是因亲属涉黑产而被牵连。众安据此对社群内用户进行初步风控标记和深入核查。

四、NebulaGraph AI Suite

除了 NebulaGraph Algorithm, @wey 在 2023 年为社区提供了一个名为 NebulaGraph AI Suite 的项目,它是在 NebulaGraph 之上跑算法的 Python 套件,能给用户一个自然、简洁的高级 API。简单来说,用很少的代码量就可以执行图上的算法相关的任务。

《手把手教你用 NebulaGraph AI 全家桶跑图算法》中,@wey 给出了详细的上手教程。该项目完全开源,如果你有新的 idea, 欢迎共建~

五、行动起来~

NebulaGraph Algorithm,提供了一套强大的“关系显微镜”。那些困扰你的问题(谁最重要?哪些人是一伙的?最优路径怎么走?)是否能用图算法来解决?访问 NebulaGraph 官方文档,深入了解 NebulaGraph Algorithm 的配置细节,开始你的图算法探索之旅吧!

文档🔍⬇️

https://docs.nebula-graph.com.cn/3.8.0/graph-computing/nebula-algorithm


香港 nMeetUp 报名中🔥

进一步探索 NebulaGraph 在#知识图谱、#Web3、#金融风控 的最新应用