A Pytorch implementation of "Node Similarity Preserving Graph Convolutional Networks" (WSDM 2021). [paper]
Graph Neural Networks (GNNs) explore the graph structure and node features by aggregating and transforming information within node neighborhoods. However, through theoretical and empirical analysis, we reveal that the aggregation process of GNNs tends to destroy node similarity in the original feature space. But there are many scenarios where node similarity plays a crucial role. Thus, it has motivated the proposed framework SimP-GCN that can effectively and efficiently preserve node similarity while exploiting graph structure. We validate the effectiveness of SimP-GCN on seven benchmark datasets including three assortative and four disassorative graphs. The results demonstrate that SimP-GCN outperforms representative baselines. Further probe shows various advantages of the proposed framework.
See that in https://github.com/ChandlerBang/SimP-GCN/blob/main/requirements.txt
tqdm==4.42.0
torch==1.2.0
ipdb==0.13.2
scipy==1.4.1
dgl==0.5.2
numpy==1.17.4
pandas==1.0.3
networkx==2.3
scikit_learn==0.23.2
tensorboardX==2.1
pip install -r requirements.txt
All the hyper-parameters settings are included in scripts
folder. For example, you can run the following commands.
sh scripts/assortative/cora.sh
sh scripts/disassortative/actor.sh
You can run python run.py
to get all the results. Make sure you have installed the same version of depedencies.
Note that for adversarial robustness, you need to install DeepRobust as follows:
git clone https://github.com/DSE-MSU/DeepRobust.git
cd DeepRobust
python setup.py install
You might also need to delete the saved cora temporary files generated by experiments on assortative graphs. It is because when evaluating adversarail robustness we use the largest connected component of the graph instead of the entire graph.
rm saved/cora*
sh scripts/adversarial/cora.sh
You can also choose to run the test example (test_simpgcn.py) in DeepRobust.
python DeepRobust/deeprobust/exmaples/graphs/test_simpgcn.py --dataset cora --ptb_rate 0.2
This repository is modified from SelfTask-GNN, DropEdge and Geom-GCN. We sincerely thank them for their contributions.
For more information, you can take a look at the paper.
If you find this repo to be useful, please cite our paper. Thank you.
@inproceedings{jin2020node,
title={Node Similarity Preserving Graph Convolutional Networks},
author={Jin, Wei and Derr, Tyler and Wang, Yiqi and Ma, Yao and Liu, Zitao and Tang, Jiliang},
booktitle={Proceedings of the 14th ACM International Conference on Web Search and Data Mining},
year={2021},
organization={ACM}
}