图网络进行链接预测(gnn for link prediction)


gnn for link prediction(gnn4lp)

项目地址:https://github.com/jiangnanboy/gnn4lp

利用图神经网络进行链接预测(link prediction)。

Guide

Intro

本项目是对此前项目gcn_for_prediction_of_protein_interactions 的改动,使其应用于链接预测(link prediction),可以应用于两种数据集:a.带节点特征;b.不带节点特征。

a.带节点特征数据集如【data/cora】

b.不带节点特征数据集如【data/yeast】

Model

模型

模型主要使用图神经网络,如gae、vgae等

  • 1.GCNModelVAE(src/vgae):图卷积自编码和变分图卷积自编码(config中可配置使用自编码或变分自编码),利用gae/vgae作为编码器,InnerProductDecoder作解码器。 Variational Graph Auto-Encoders 。

  • 2.GCNModelARGA(src/arga):对抗正则化图自编码,利用gae/vgae作为生成器;一个三层前馈网络作判别器。 Adversarially Regularized Graph Autoencoder for Graph Embedding 。

  • 3.GATModelVAE(src/graph_att_gae):基于图注意力的图卷积自编码和变分图卷积自编码(config中可配置使用自编码或变分自编码),利用gae/vgae作为编码器,InnerProductDecoder作解码器。这是我在以上【1】方法的基础上加入了一层图注意力层,关于图注意力可见【Reference】中的【GRAPH ATTENTION NETWORKS】。

  • 4.GATModelGAN(src/graph_att_gan):基于图注意力的对抗正则化图自编码,利用gae/vgae作为生成器;一个三层前馈网络作判别器,这是我在以上【2】方法的基础上加入了一层图注意力层,关于图注意力可见【Reference】中的【GRAPH ATTENTION NETWORKS】。

  • 5.NHGATModelVAE(src/graph_nheads_att_gae):基于图多头注意力的图卷积自编码和变分图卷积自编码(config中可配置使用自编码或变分自编码),利用gae/vgae作为编码器,InnerProductDecoder作解码器。此方法是在【3】方法的基础上将图注意力层改为多头注意力层。

  • 6.NHGATModelGAN(src/graph_nheads_att_gan):基于图多头注意力的对抗正则化图自编码,利用gae/vgae作为生成器;一个三层前馈网络作判别器,此方法在【4】方法的基础上将图注意力层改为多头注意力层。

Usage

  • 相关参数的配置config见每个模型文件夹中的config.cfg文件,训练和预测时会加载此文件。

  • 训练及预测

    1.model comparison

    (1).不带节点特征数据集【data/yeast】

      GCNModelVAE GCNModelARGA GATModelVAE GATModelGAN NHGATModelVAE NHGATModelVAE
    epochs 20 20 20 20 20 20
    precision 0.8708 0.8700 0.8629 0.8715 0.8672 0.8680
    roc_score 0.8814 0.8798 0.8758 0.8826 0.8770 0.8767

    (2).带节点特征数据集【data/cora】

      GCNModelVAE GCNModelARGA GATModelVAE GATModelGAN NHGATModelVAE NHGATModelVAE
    epochs 200 200 200 200 200 200
    precision 0.7451 0.8544 0.8509 0.8392 0.8078 0.8156
    roc_score 0.7404 0.8437 0.8686 0.8312 0.8278 0.8240

    2.usage

    (1).train

    是否带节点特征可通过每个model文件夹中的【config.cfg】进行配置,如下:

    config中有以下三个参数

    node_cites_path = cora.cites # 节点间的引用数据
    node_features_path = cora.content # 节点特征数据
    with_feats = True # 是否带节点特征。True, node_features_path不为None;False, node_features_path为None
    
    # train代码通用格式:
    from src.graph_nheads_att_gan.train import Train
    
    train = Train()
    train.train_model('config.cfg')
    

    (2).predict

    # predict代码通用格式:
    from src.graph_nheads_att_gan.predict import Predict
    
    predict = Predict()
    predict.load_model_adj('config_cfg')
    # 会返回原始的图邻接矩阵和经过模型编码后的hidden embedding经过内积解码的邻接矩阵,可以对这两个矩阵进行比对,得出link prediction.
    adj_orig, adj_rec = predict.predict()
    

Dataset

#####a. yeast dataset,【data/yeast】 数据来自酵母蛋白质相互作用yeast 。 数据集的格式如下,具体可见data

 YLR418C	YOL145C
 YOL145C	YLR418C
 YLR418C	YOR123C
 YOR123C	YLR418C
 ......         ......

#####b. cora dataset,【data/cora】 数据来自Machine Learning Paper的数据集cora 。 数据集的格式如下,具体可见data 。

cora.cites:

 35	1033
 35	103482
 35	103515
 35	1050679
 ...... ......

cora.content:

 31336	0	...	1	0	0	0	0	0	0	Neural_Networks
1061127	0	...	0	0	0	0	0	0	0	Rule_Learning
1106406	0	...	0	0	0	0	0	0	0	Reinforcement_Learning
13195	0	...	0	0	0	0	0	0	0	Reinforcement_Learning
 ...

Install

  • 安装:pip install GNN4LP
  • 下载源码:
git clone https://github.com/jiangnanboy/gnn4lp.git
cd gnn4lp
python setup.py install

通过以上两种方法的任何一种完成安装都可以。如果不想安装,可以下载github源码包

Cite

如果你在研究中使用了GNN4LP,请按如下格式引用:

@software{GNN4LP,
  author = {Shi Yan},
  title = {GNN4LP: gnn for link prediction},
  year = {2021},
  url = {https://github.com/jiangnanboy/gnn4lp},
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM