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)
| 項目 | GCNVAE | GCNARGA | GATVAE | GATGAN | NHATVAE | NHATGAN |
|---|---|---|---|---|---|---|
| エポック数 | 20 | 20 | 20 | 20 | 20 | 20 |
| 精度 | 0.8708 | 0.8700 | 0.8629 | 0.8715 | 0.8672 | 0.8680 |
| ROCスコア | 0.8814 | 0.8798 | 0.8758 | 0.8826 | 0.8770 | 0.8767 |
ノード特徴付きデータセット(cora)
| 項目 | GCNVAE | GCNARGA | GATVAE | GATGAN | NHATVAE | NHATGAN |
|---|---|---|---|---|---|---|
| エポック数 | 200 | 200 | 200 | 200 | 200 | 200 |
| 精度 | 0.7451 | 0.8544 | 0.8509 | 0.8392 | 0.8078 | 0.8156 |
| ROCスコア | 0.7404 | 0.8437 | 0.8686 | 0.8312 | 0.8278 | 0.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},
}