图:描述关系数据的通用语言,起源于哥尼斯堡七桥问题
传统的机器学习:数据样本之间独立同分布,简单拟合数据边界,在传统的机器学习中,每个数据样本彼此无关。传统的神经网络,只能处理简单的表格、序列数据,不能处理带关联的数据。而图自带关联的数据。
图机器学习 (GML) :核心是将机器学习应用于图,专门用于预测和规范任务。
如何让神经网络处理图数据?
1.兼容任意尺寸的输入
2.没有固定的输入顺序和参考锚点
3.图动态变化,多模态特征(音乐推荐)
图神经网络
图神经网络的输入是一个图,输出则可以多种多样的输出分类标签、新的连接、新的图或子图等数据。
这种方法不但能学到每个数据节点之间的关联信息,还能进行端到端的表示学习(Representation Learning),甚至不需要人工进行特征工程!
输入图->黑箱(处理,后续会详细将这个过程)->输出结果
一个关键的步骤:图嵌入:将节点变成低维向量,然后就可以使用传统的机器学习
图机器学习应用:
节点层面:
由已知的节点类别推断出未知的节点类别
连接层面:
推荐系统,药物的联合副作用
二分图:二分图又称为二部图,如果一个点集可以被分成两个部分,所有的边都在这两个部分之间,而每个集合内部没有边,则称这个图是一个二分图。
图层面:
抗生素,粒子的模拟,预测蛋白质的空间结构(AlphaFold)
图数据挖掘的工具
图神经网络建模工具
- PyG (PyTorch Geometric)
PyG(PyTorch Geometric)是一个在PyTorch基础上开发的库,主要用于构建和训练图神经网络(GNN),可以应用于多种与结构化数据相关的场景。PyG具有易用和统一的API接口,让用户 10 至 20 行代码就可以训练自己的GNN模型,不需要知道太多底层机制的实现和调试。PyG库包含了许多目前最先进的GNN架构和训练方法,并且可以方便地进行扩展和定制,以满足不同的需求和应用场景,适合各种需要使用GNN的研究人员和开发者。
2. DGL
DGL(Deep Graph Library)是一个用于开发图神经网络(GNN)的框架,可以帮助用户在大规模图数据上进行深度学习。DGL提供了一组Python API,使得用户可以轻松地构建、训练和评估GNN模型。该框架支持各种类型的图,包括有向图、无向图和多重图等,可以在图中进行节点分类、边分类、图分类和链接预测等任务。同时,DGL还支持多种GNN模型,包括图卷积网络(GCN)、图注意力网络(GAT)、图注意力池化网络(GAP)等,以满足不同任务的需求。DGL还支持大规模分布式计算,可以在多个GPU和多个机器上进行模型训练,以加快训练速度。由于其强大的功能和易用性,DGL被广泛应用于各种领域,如社交网络分析、推荐系统、生物信息学等。
图可视化工具
3. NetworkX
NetworkX是一个Python库,用于创建、操作和研究复杂网络,如社交网络、物理网络、生物网络和交通网络等。该库提供了一组工具和算法,可以帮助用户构建各种类型的网络,包括无向图、有向图、加权图、多重图等。同时,NetworkX还支持大量的网络分析算法,如中心性分析、连通性分析、路径分析、聚类分析、布局算法等,可以帮助用户理解和探索网络的结构和特性。NetworkX还提供了可视化工具,可以方便地将网络可视化,帮助用户更好地理解和展示网络数据。由于其强大的功能和易用性,NetworkX被广泛应用于各个领域,如社交网络分析、生物信息学、物理学、交通规划等。
4. AntV
AntV是蚂蚁集团提供的数据可视化解决方案,其中的G6引擎是专门用来做图可视化工作的图可视化引擎。
图数据库
5. Neo4j
Neo4j是当下最热门的图数据库管理系统,采用了图形结构来存储和处理数据。与关系型数据库(如MySQL)不同,图数据库将数据表示为节点和边的图形结构,而不是表中的行和列。这使得Neo4j可以轻松地处理复杂的关系和连接,并提供高性能的查询和可扩展性。