图无处不在
背景
图是描述关联数据的通用语言
在我们生活中,其实很多数据都是以网络/图的形式存在的,大概可以分为
Networks (Natural Graphs) 。可以看做是自然网络,比如社会、社交网络、蛋白质图谱、基因图谱、思维导图等。
Information Graphs 可以看做是各种信息汇聚成为的网络,如知识图谱,相似网络(similarity netoworks)等等。
传统机器学习任务假设数据之间独立同分布,彼此独立无关,但是图的节点之间是相互关联的
图的表示学习:端到端的学习方式,不需要特征工程,输入原始图数据,输出不同类型的下游预测任务
图嵌入:学习节点的特征表示,把复杂数据(图像、文本、语音)变成一个包含节点语义信息的嵌入向量;节点、连接、子图、全图都可以有特征
网络/图论的基本知识
图的结构
图由三类重要的元素组成:
Objects (对象):Nodes(节点)、顶点(Vertices),用 $N$ 来表示
Interactions(相互作用): links(链接), edges(边),用 $E$ 来表示
System (系统):network(网络), graph(图),用 $G(N,E)$ 来表示
![](https://img-blog.csdnimg.cn/img_convert/5bcda0a37836ef70a0685bbcd1f4906b.png)
构建一个网络/图,就是定义它的这些基本结构——哪些信息/元素作为节点,这些节点之间怎么进行连接(即边怎么定义)。对于不同的场景,选择合适的图来进行描述和建模,会变得事半功倍。
图的不同形式
有向图和无向图
![](https://img-blog.csdnimg.cn/img_convert/abda730f8aa5982bb41ee99a67e6dd75.png)
完全图 (Complete Graph)
在图论的数学领域,完全图是一个简单的无向图,其中每对不同的顶点之间都恰有一条边相连。
**二分图 (Bipartite Graph,二部图,对偶图)
![](https://img-blog.csdnimg.cn/img_convert/d48886932fb9902e20175d00ee4818e8.png)
在二分图中,图的节点恰好可以分为两个互不相交的集合 $U$ 和 $V$,图中每条边都是这两个集合中的节点的链接。二分图是一种十分常见的图数据对象,描述了两类对象之间的交互关系,如:用户与商品,作者与文章。
二分图的折叠 (folded) /投影 (projection) 是指若该集合中的某些节点如果有链接到另一个集合的同一个节点,则认为他们之间存在一定的关系。
加权图(Weighted graph)与非加权图(Unweighted graph)
![](https://img-blog.csdnimg.cn/img_convert/1f4bba19ae6aa490f31aac10302616d1.png)
连通图与非连通图
如果图中存在孤立的顶点,没有任何边与之相连,这样的图被称为非连通图。反之,如果不存在孤立顶点的图称为连通图。
其他类型的图
![](https://img-blog.csdnimg.cn/img_convert/3b12c56e3b930d275d0f1abd01c7d53e.png)
图的储存
邻接矩阵(Adjacency matrix)
邻接矩阵中 $A_{ij} = 1$ 表示有边连接(指向)节点 $i$ 到节点 $j$;否则,$A_{ij}=0$。
![](https://img-blog.csdnimg.cn/img_convert/6f09c55a59cf566318846a3df8c3244f.png)
现实中,在大多数情况下,邻接矩阵表现为稀疏矩阵,并且现实中的网络是稀疏的。
图机器学习、图神经网络编程工具
PyG(PyTorch Geometric):基于 Pytorch 开发的目前也是使用最为广泛的库,与之相对的是 DGL
GraphGym: 设计图神经网络的平台
复杂网络分析工具:NetworkX
图数据的可视化:AntV、Echarts、GraphXR
图机器学习应用
目前对于网络的研究主要集中在以下几个方面/场景:
对节点的类型/属性进行预测。例如:节点分类。
预测两个节点是否相连。例如:链路预测(link prediction)。如推荐系统中推荐用户商品、电影评价、药物副作用预测
识别紧密相连的节点群。例如:社区挖掘(Community detection),节点聚类。
计算两个节点或者网络的相似性。如:两个节点可能相距较远,但是运行机制上可能存在相似的地方。
对于整个图的预测或者分类。例如:引文文献的分类,药物发现或者物理模拟等。