Skip to main content

用于图机器学习的 Python 库

项目描述

StellarGraph 机器学习库徽标

pypi 下载

StellarGraph 机器学习库

StellarGraph是一个 Python 库,用于在图形和网络上进行机器学习。

目录

介绍

StellarGraph 库为图机器学习提供了最先进的算法,使发现模式和回答有关图结构数据的问题变得容易。它可以解决许多机器学习任务:

图结构数据将实体表示为节点(或顶点),将实体之间的关系表示为边(或链接),并且可以包括与任一属性相关联的数据。例如,一个图表可以包含人作为节点,他们之间的友谊作为链接,数据包括一个人的年龄和建立友谊的日期。StellarGraph 支持多种图表的分析:

  • 同质的(具有一种类型的节点和链接),
  • 异构(具有不止一种类型的节点和/或链接)
  • 知识图(具有数千种边的极端异构图)
  • 带有或不带有与节点关联的数据的图
  • 具有边权重的图

StellarGraph 建立在TensorFlow 2及其Keras高级 API以及PandasNumPy 之上。因此,它是用户友好的、模块化的和可扩展的。它与基于这些构建的代码(例如标准 Keras 层和scikit-learn )顺利互操作,因此很容易增强 StellarGraph 提供的核心图机器学习算法。因此,使用Anaconda也很容易安装pip

入门

大量详细和叙述的示例是开始使用 StellarGraph 的好方法。可能有一个与您的数据或您的问题相似(如果不是,请告诉我们)。

通过单击每个 Jupyter 笔记本中的和标记,您可以立即在 Google Colab 或 Binder 中开始使用示例。

或者,您可以运行下载演示的本地副本并使用jupyter. 可以通过克隆master此存储库的分支或使用以下curl命令来下载演示:

curl -L https://github.com/stellargraph/stellargraph/archive/master.zip | tar -xz --strip=1 stellargraph-master/demos

可以使用以下方法之一安装在本地运行我们的大多数演示笔记本所需的依赖项:

  • 使用pippip install stellargraph[demos]
  • 使用condaconda install -c stellargraph stellargraph

(有关更多详细信息和更多选项,请参阅安装部分。)

获得帮助

如果您遇到困难或遇到问题,有很多方法可以取得进展并获得帮助或支持:

示例:GCN

图的最早的深度机器学习算法之一是图卷积网络(GCN)[6]。以下示例将其用于节点分类:预测节点来自的类别。它展示了使用 StellarGraph 应用是多么容易,并展示了 StellarGraph 如何与 Pandas 和 TensorFlow 以及基于它们构建的库顺利集成。

数据准备

可以使用 Pandas 和 scikit-learn 等常用库来准备 StellarGraph 的数据。

import pandas as pd
from sklearn import model_selection

def load_my_data():
    # your own code to load data into Pandas DataFrames, e.g. from CSV files or a database
    ...

nodes, edges, targets = load_my_data()

# Use scikit-learn to compute training and test sets
train_targets, test_targets = model_selection.train_test_split(targets, train_size=0.5)

图机器学习模型

这是 StellarGraph 特有的唯一部分。机器学习模型由一些图卷积层和一个层组成,用于计算作为 TensorFlow 张量的实际预测。GCNStellarGraph 可以通过模型类轻松构建所有这些层。它还可以通过StellarGraph图形数据类型和数据生成器轻松获取正确格式的输入数据。

import stellargraph as sg
import tensorflow as tf

# convert the raw data into StellarGraph's graph format for faster operations
graph = sg.StellarGraph(nodes, edges)

generator = sg.mapper.FullBatchNodeGenerator(graph, method="gcn")

# two layers of GCN, each with hidden dimension 16
gcn = sg.layer.GCN(layer_sizes=[16, 16], generator=generator)
x_inp, x_out = gcn.in_out_tensors() # create the input and output TensorFlow tensors

# use TensorFlow Keras to add a layer to compute the (one-hot) predictions
predictions = tf.keras.layers.Dense(units=len(ground_truth_targets.columns), activation="softmax")(x_out)

# use the input and output tensors to create a TensorFlow Keras model
model = tf.keras.Model(inputs=x_inp, outputs=predictions)

培训和评估

该模型是传统的 TensorFlow Keras 模型,因此训练和评估等任务可以使用 Keras 提供的功能。StellarGraph 的数据生成器使为输入数据构建所需的 Keras 序列变得简单。

# prepare the model for training with the Adam optimiser and an appropriate loss function
model.compile("adam", loss="categorical_crossentropy", metrics=["accuracy"])

# train the model on the train set
model.fit(generator.flow(train_targets.index, train_targets), epochs=5)

# check model generalisation on the test set
(loss, accuracy) = model.evaluate(generator.flow(test_targets.index, test_targets))
print(f"Test set: loss = {loss}, accuracy = {accuracy}")

该算法在其扩展的叙述笔记本中有更详细的说明。我们提供了更多的算法,每个算法都有一个详细的例子

算法

StellarGraph 库目前包括以下用于图机器学习的算法:

算法 描述
GraphSAGE [1] 支持同质网络的有监督和无监督表示学习、节点分类/回归和链接预测。当前的实现支持多种聚合方法,包括均值、最大池、均值池和注意力聚合器。
HinSAGE 将 GraphSAGE 算法扩展到异构网络。支持异构图的表示学习、节点分类/回归和链接预测/回归。当前的实现支持邻居节点的平均聚合,考虑到它们的类型和它们之间的链接类型。
attri2vec [4] 支持具有节点属性的同构图的节点表示学习、节点分类和样本外节点链接预测。
图注意力网络 (GAT) [5] GAT 算法支持同构图的表示学习和节点分类。有支持稀疏和密集邻接矩阵的图注意力层版本。
图卷积网络(GCN)[6] GCN 算法支持同构图的表示学习和节点分类。有一些版本的图卷积层支持稀疏和密集的邻接矩阵。
聚类图卷积网络(Cluster-GCN)[10] GCN 算法的扩展,支持同构图的表示学习和节点分类。Cluster-GCN 可扩展到更大的图,并可用于使用随机梯度下降训练更深的 GCN 模型。
简化图卷积网络 (SGC) [7] SGC 网络算法支持同构图的表示学习和节点分类。它是 GCN 算法的扩展,可以平滑图以引入更远的节点邻居而不使用多层。
(近似)神经预测的个性化传播(PPNP/APPNP)[9] (A)PPNP 算法支持属性同构图的快速和可扩展的表示学习和节点分类。在半监督设置中,首先使用节点属性作为输入来训练多层神经网络。然后使用基于 Personalized PageRank 的方法将来自后一个网络的预测扩散到整个图形中。
节点2Vec [2] Node2Vec 和 Deepwalk 算法对同构网络执行无监督表示学习,在考虑网络结构的同时忽略节点属性。node2vec 算法是通过将 StellarGraph 的随机游走生成器与Gensim中的 word2vec 算法相结合来实现的。学习到的节点表示可用于使用Scikit-learnKerasTensorFlow或任何其他 Python 机器学习库实现的下游机器学习模型。
Metapath2Vec [3] metapath2vec 算法对异构网络执行无监督、元路径引导的表示学习,在考虑网络结构的同时忽略节点属性。该实现结合了 StellarGraph 的元路径引导的随机游走生成器和Gensim word2vec 算法。与 node2vec 一样,学习到的节点表示(节点嵌入)可用于下游机器学习模型,以解决异构网络的节点分类、链路预测等任务。
关系图卷积网络 [11] RGCN算法对知识图谱上的节点表示和节点分类进行半监督学习。RGCN 将 GCN 扩展到具有多种边类型的有向图,并适用于稀疏和密集的邻接矩阵。
复杂[12] ComplEx 算法计算知识图中节点(实体)和边缘类型(关系)的嵌入,并可以将它们用于链接预测
图形波 [13] GraphWave 通过图中的小波扩散计算无监督结构嵌入。
监督图分类 基于 GCN [6] 层和均值池读数的监督图分类模型。
注意你的步骤 [14] Watch Your Step 算法通过使用邻接幂来模拟预期的随机游走来计算节点嵌入。
深度图 Infomax [15] Deep Graph Infomax 训练无监督 GNN 以最大化节点级别和图级别特征之间的共享信息。
连续时间动态网络嵌入 (CTDNE) [16] 支持尊重时间的随机游走,可以以与 Node2Vec 中类似的方式用于无监督表示学习。
DistMult [17] DistMult 算法计算知识图中节点(实体)和边缘类型(关系)的嵌入,并可以将它们用于链接预测
DGCNN [18] 用于监督图分类的深度图卷积神经网络 (DGCNN) 算法。
TGCN [19] StellarGraph 中的 GCN_LSTM 模型遵循 TGCN 论文中提出的时间图卷积网络架构,并在层架构上进行了一些增强。

安装

StellarGraph 是一个 Python 3 库,我们建议使用 Python 版本3.6。可以从python.org下载和安装所需的 Python 版本。或者,使用可从anaconda.com获得的 Anaconda Python 环境。

可以从 PyPI、Anaconda Cloud 或直接从 GitHub 安装 StellarGraph 库,如下所述。

使用 PyPI 安装 StellarGraph:

要使用PyPI 从PyPI安装 StellarGraph 库pip,请执行以下命令:

pip install stellargraph

一些示例需要安装额外的依赖项以及stellargraph. pip要使用以下命令安装这些依赖项以及 StellarGraph :

pip install stellargraph[demos]

社区检测演示需要python-igraph仅在某些平台上可用。除了其他演示要求之外,要安装它:

pip install stellargraph[demos,igraph]

在 Anaconda Python 中安装 StellarGraph:

StellarGraph 库在Anaconda Cloud中可用,可以使用命令行工具安装在Anaconda Pythonconda中,执行以下命令:

conda install -c stellargraph stellargraph

从 GitHub 源安装 StellarGraph:

首先,使用以下命令克隆 StellarGraph 存储库git

git clone https://github.com/stellargraph/stellargraph.git

然后,cd到 StellarGraph 文件夹,并通过执行以下命令安装库:

cd stellargraph
pip install .

目录中的一些示例demos需要安装其他依赖项以及stellargraph. pip要使用以下命令安装这些依赖项以及 StellarGraph :

pip install .[demos]

引用

StellarGraph 由CSIRO 的 Data61设计、开发和支持。如果您在研究中使用此库的任何部分,请使用以下 BibTex 条目引用它

@misc{StellarGraph,
  author = {CSIRO's Data61},
  title = {StellarGraph Machine Learning Library},
  year = {2018},
  publisher = {GitHub},
  journal = {GitHub Repository},
  howpublished = {\url{https://github.com/stellargraph/stellargraph}},
}

参考

  1. 大图上的归纳表示学习。WL Hamilton、R. Ying 和 J. Leskovec。神经信息处理系统 (NIPS),2017。(链接 网页

  2. Node2Vec:网络的可扩展特征学习。A.格罗弗,J. Leskovec。ACM SIGKDD 知识发现和数据挖掘 (KDD) 国际会议,2016。(链接

  3. Metapath2Vec:异构网络的可扩展表示学习。Yuxiao Dong、Nitesh V. Chawla 和 Ananthram Swami。ACM SIGKDD 知识发现和数据挖掘国际会议 (KDD), 135–144, 2017 (链接)

  4. 通过子空间发现进行归因网络嵌入。D. Zhang、Y. Jie、X. Zhu 和 C. Zhang,数据挖掘和知识发现,2019。(链接

  5. 图注意网络。P. Veličković 等人。2018 年国际学习表征会议 (ICLR)(链接

  6. 图卷积网络 (GCN):使用图卷积网络的半监督分类。托马斯·N·基普夫,马克斯·威灵。学习表征国际会议 (ICLR), 2017 (链接)

  7. 简化图卷积网络。F. Wu、T. Zhang、AH de Souza、C. Fifty、T. Yu 和 KQ Weinberger。机器学习国际会议 (ICML),2019。(链接

  8. 图数据的对抗性示例:深入了解攻击和防御。H. Wu、C. Wang、Y. Tyshetskiy、A. Docherty、K. Lu 和 L. Zhu。IJCAI 2019。(链接

  9. 预测然后传播:图神经网络满足个性化的 PageRank。J. Klicpera、A. Bojchevski、A. 和 S. Günnemann,ICLR,2019,arXiv:1810.05997。(链接

  10. Cluster-GCN:一种用于训练深度和大型图卷积网络的有效算法。W. Chiang、X. Liu、S. Si、Y. Li、S. Bengio 和 C. Hsiej,KDD,2019,arXiv:1905.07953。(链接

  11. 使用图卷积网络对关系数据进行建模。M. Schlichtkrull、TN Kipf、P. Bloem、R. Van Den Berg、I. Titov 和 M. Welling,欧洲语义网会议(2018 年),arXiv:1609.02907(链接)。

  12. 用于简单链接预测的复杂嵌入。T. Trouillon、J. Welbl、S. Riedel、É. Gaussier 和 G. Bouchard,ICML 2016。(链接

  13. 通过扩散小波学习结构节点嵌入。C. Donnat、M. Zitnik、D. Hallac 和 J. Leskovec,SIGKDD,2018,arXiv:1710.10321(链接

  14. 注意你的步骤:通过 Graph Attention 学习节点嵌入。S. Abu-El-Haija、B. Perozzi、R. Al-Rfou 和 A. Alemi,NIPS,2018 年。arXiv:1710.09599(链接

  15. 深度图信息最大值。P. Veličković、W. Fedus、WL Hamilton、P. Lio、Y. Bengio、RD Hjelm、ICLR,2019,arXiv:1809.10341(链接)。

  16. 连续时间动态网络嵌入。Giang Hoang Nguyen、John Boaz Lee、Ryan A. Rossi、Nesreen K. Ahmed、Eunyee Koh 和 Sungchul Kim。2018 年第三届大网络学习表征国际研讨会 (WWW BigNet) 论文集。(链接

  17. 在知识库中嵌入用于学习和推理的实体和关系。Bishan Yang, Wen-tau Yih, Xiaodong He, Jianfeng Gao, and Li Deng, ICLR, 2015. arXiv:1412.6575(链接

  18. 图分类的端到端深度学习架构。Muhan Zhang、Zhicheng Cui、Marion Neumann 和 Yixin Chen,AAAI,2018。(链接

  19. T-GCN:用于交通预测的时间图卷积网络。Ling Zhao, Yujiao Song, Chao Zhang, Yu Liu, Pu Wang, Tao Lin, Min Deng, and Haifeng Li.IEEE Transactions on Intelligent Transportation Systems, 2019。(链接

项目详情


下载文件

下载适用于您平台的文