グラフネットワークによるリンク予測(GNN for LP)

GNN4LPプロジェクトは、リンク予測タスクに特化したグラフニューラルネットワーク(GNN)の実装を提供します。公式リポジトリはこちら:https://github.com/jiangnanboy/gnn4lp

導入

本プロジェクトは、タンパク質相互作用予測用に設計されたgcn_for_prediction_of_protein_interactionsプロジェクトをベースに、リンク予測タスクに最適化したバージョンです。以下の2種類のデータセットに対応しています:
  • ノード特徴付きデータセット(例:data/cora)
  • ノード特徴なしデータセット(例:data/yeast)

モデル構成

以下に主要なモデルアーキテクチャを紹介します。

1. GCNベースモデル

  • GCNModelVAE:グラフ畳み込み自己符号化器(GAE)と変分グラフ自己符号化器(VGAE)をサポート。InnerProductDecoderを使用したデコーダ。
  • GCNModelARGA:敵対的正則化グラフ自己符号化器。GAE/VGAEを生成器として、3層のフィードフォワードネットワークを判別器として使用。

2. GATベースモデル

  • GATModelVAE:グラフアテンションネットワークを組み込んだGAE/VGAEモデル。
  • GATModelGAN:敵対的正則化グラフ自己符号化器にグラフアテンション層を統合。

3. 多頭注意力モデル

  • NHGATModelVAE:多頭注意力機構を採用したGAE/VGAEモデル。
  • NHGATModelGAN:多頭注意力を組み込んだ敵対的正則化モデル。

パラメータ設定

各モデルの設定はconfig.cfgファイルで管理されます。


# ノード特徴設定例
node_cites_path = cora.cites
node_features_path = cora.content
with_feats = True  # True: 特徴付き / False: 特徴なし

トレーニング実行


from src.graph_nheads_att_gan.train import ModelTrainer
trainer = ModelTrainer()
trainer.execute_training('config.cfg')

予測処理


from src.graph_nheads_att_gan.predict import ModelPredictor
predictor = ModelPredictor()
predictor.load_model_adj('config_cfg')
original_adj, reconstructed_adj = predictor.generate_predictions()

評価結果比較

ノード特徴なしデータセット(yeast)

項目GCNVAEGCNARGAGATVAEGATGANNHATVAENHATGAN
エポック数202020202020
精度0.87080.87000.86290.87150.86720.8680
ROCスコア0.88140.87980.87580.88260.87700.8767

ノード特徴付きデータセット(cora)

項目GCNVAEGCNARGAGATVAEGATGANNHATVAENHATGAN
エポック数200200200200200200
精度0.74510.85440.85090.83920.80780.8156
ROCスコア0.74040.84370.86860.83120.82780.8240

データセット構造

酵母タンパク質相互作用データ(yeast)


YLR418C	YOL145C
YOL145C	YLR418C
YLR418C	YOR123C
YOR123C	YLR418C
...

Cora論文データセット

引用データ(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
...

インストール手順

PIPインストール:


pip install GNN4LP

ソースコードインストール:


git clone https://github.com/jiangnanboy/gnn4lp.git
cd gnn4lp
python setup.py install

引用文献

本プロジェクトを使用した研究では、以下の形式で引用してください:


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

タグ: Graph Neural Networks Link Prediction Variational Autoencoder Graph Attention Network GAN

6月5日 22:01 投稿