本文是图计算 101 系列的首篇文章,通过一系列常见的应用,介绍了图与图计算的基础背景。
什么是图?
宇宙间的万物,大到恒星行星,小到原子分子,都时时刻刻与其他个体存在着相互关系,而图(Graph)正是描述这种个体之间的相互关系最自然也最合适的数据结构。图包含了一系列的顶点(即个体)与边(即个体之间的关系),同时顶点或者边都可以附带一些描述自身的信息(即特征)。
图 Graph
我们日常生活中常见的图数据包括社交网络、交通网络以及生物结构图等。对于社交网络来说,每个用户可以当作图中的一个顶点,用户之间的互动关系可以当作边,例如微信的社交网络可以看作由顶点(个人、公众号)和边(关注、点赞)构成的图。对于航空交通网络,我们可以将每个机场看作顶点,连接各个机场之间的航班看作边。在生物结构图中,我们可以将每个蛋白质看做一个顶点,而将蛋白质之间的交互关系看作边。
社交网络图 (https://medium.com/analytics-vidhya/social-network-analytics-f082f4e21b16)
交通路网图(https://studentwork.prattsi.org)
蛋白质结构图(https://www.biorxiv.org/content/10.1101/2020.08.11.246041v1.full)
图计算的算法与应用
从广义上来说,一切基于图数据进行的分析计算都属于图计算,因而图计算涉及的应用领域十分宽广。考虑到图数据能够刻画个体之间的关系,所以图计算尤其适合大数据关联关系相关的分析计算。图计算的核心在于图算法,下面我们将通过几个简单的例子来对常用的图算法进行进行分类并进行介绍。
图分析类算法
图分析算法通过对图数据中顶点或者边进行迭代式的遍历等操作,分析、挖掘全图的整体特征或者部分图结构的局部特征,下面我们以路径规划为例来举例说明图分析算法。假设你在地址 A 的家里点了一份位于地址 B 餐厅的外卖,那么外卖小哥如何找到一条从 B 到 A 最优的配送路线把外卖最快地送到你手里?如果把城市的每一个地址看作一个顶点,将连接两个地址的道路看作边,同时把道路的长度看作边的特征,那么我们可以将这个问题转化为找到一条从 B 到 A 到最短路径的问题。要解决这个问题,我们可以使用经典的 Dijkstra 算法。
最短路径问题
除了最短路径算法外,常用的图分析算法还包括 PageRank(分析顶点在图中的重要性程度)、广度优先搜索BFS(对图中的顶点按照一定规则进行遍历)、连通分量(计算图中互相相连的顶点集合)等。通过上述例子可以看出,图分析算法基于图论,利用顶点之间的关系来推断复杂图数据中整体或者局部的结构特征,我们可以利用这些算法发现隐藏的信息,从而解决具体的实际业务问题。例如,搜索引擎可以利用 PageRank 算法对网页的权重进行排序,从而将最重要的网页优先展示给用户。
社区发现类算法
图数据中通常会存在着“社区”现象,每个社区由一组顶点构成,对于一个社区来说,内部顶点之间的关系(边)远多于与社区外部顶点之间的边,即“物以类聚,人以群分”。 社区发现算法有助于发现社区中群体行为或者偏好,寻找嵌套关系,也经常应用于图数据的可视化。 下面我们以分析蛋白质的功能为例来介绍社区发现算法。我们可以将每个蛋白质看作图的一个顶点,将蛋白质之间的交互关系看作边,从而构成一个如下图所示的蛋白质交互图。在生物学中,蛋白质需要互相密切配合完成某一个特定生理功能,通过社区分析算法我们可以得到若干社区(不同社区的蛋白质拥有不同的颜色),而每个社区的蛋白质可以认为互相配合完成了一项特定的功能。
蛋白质结构图的社区发现(https://www.visual-computing.org/2016/01/18/group-structures-graphs/diss_cv01/)
模式匹配类算法
图计算另外一个可以大显身手的领域是模式匹配类算法。图模式匹配旨在寻找满足给定模式的一系列子图结构, 在众多业务场景中得到了广泛的实际应用。 以金融交易为例,在金融交易中,资金在账户之间流动,这一特征使得图数据成为很适合表示金融交易数据的数据结构。在金融领域,需要检测的很重要的一类异常交易是信用卡套现,这一类违规交易的特征是信用卡的资金通过一个或者多个账户的中间交易,资金最后回到信用卡持有人的账户。如下图所示,如果我们将账户之间的交易关系表示为图结构,那么这个问题就可以转化为在图中找到“环”(从某个顶点开始沿着边出发可以重新回到这个顶点)这个模式。
交易图中的环可能预示着存在洗钱
按照查询的模式结构的不同,模式匹配类算法可分为:点查询(如可达性查询、邻居节点查询等)、路径查询(如满足特定条件的一条路径等)和子图结构查询(如子图同构等)。模式匹配类算法应用十分广泛,除了金融交易领域,在社交媒体中异常事件检测和计算机网络中的黑客活动检测等都发挥着重要作用。
推荐类算法
随着以抖音、快手为代表的直播带货的兴起,如何利用社交网络为用户推荐最感兴趣的商品蕴含着巨大的商业价值。目前协同过滤类算法是推荐系统中应用最为广泛的算法,而图计算也可以对协同过滤类算法进行增强表示。举例来说,两个用户属于朋友关系同时居住在同一个地方,如果一个用户光顾了一家餐厅并觉得很赞,那么推荐算法就认为另外一个用户很可能也对这家餐厅感兴趣,可以将这家餐厅的信息推送给她。通过构建一个如下图所示的图结构,我们很自然地在图上解决这类问题。
基于图的社交推荐示例
结构预测类算法
由于图数据中存在着噪声,图中的顶点、边往往存在着部分错误,因而需要利用图结构预测类算法对图数据进行修正。如下图所示,社交网络中,用户 A 和 B 拥有众多共同好友,而 A 和 B 之间并不存在着边相连,图结构预测类算法往往假设拥有许多共同好友的两个人大概率也是朋友关系,因而认为A和B之间应该存在一条边。
链路预测,A 与 B 有可能是好友吗?
传统的图结构预测类算法通常采用共同好友数、Katz 中心度、Adamic-Adar等静态指标来对图结构进行修正,而近年来,随着深度学习技术的快速发展,图神经网络已经成为另外一类流行的图结构预测算法。图神经网络使用神经网络自动挖掘出与图结构预测紧密相关的特征,从而大大降低了人工的参与程度,也相较于传统的方法取得了更好的效果。
总结
图计算的核心是如何将数据建模为图结构以及如何将问题的解法转化为图结构上的计算问题,当问题涉及到关联分析时,图计算往往能够使得问题的解法很自然地表示为一系列对图结构操作和计算的过程。但是图计算所需要解决的问题多种多样,难以使用一套计算模式解决所有的问题,我们将在之后的文章中详细介绍图计算的分类,以及每类图计算的特征和关键技术。上述文章中介绍的部分算法已经在一站式图计算系统GraphScope提供了相应的实现,欢迎试用!