Homophily Heterogeneity Matters in Graph Federated Learning: A Spectrum Sharing and Complementing Perspective
Official Code Repository for our paper:
Homophily Heterogeneity Matters in Graph Federated Learning: A Spectrum Sharing and Complementing Perspective
- User-Friendly: Simple and intuitive to use.
- SOTA Performance: Outperforms the second-best by 3.28% on all heterophilic datasets.
- Rich Datasets: Covers 11 GFL datasets (6 homophilic, 5 heterophilic).
- Python 3.8.8
- PyTorch 1.12.0+cu113
- PyTorch Geometric 2.3.0
Download from the Google Drive (https://drive.google.com/file/d/1PyqvR6yL43Om42fdsbKHj5WCgREvi3St/view?usp=sharing) and then unzip it.
Place the datasets folder in the same path as README.md
dataset: specify dataset to usen_clients: specify the number of clientsmode: specify the 'disjoint' or 'overlapping' subgraph partitioning scenario
Follow command lines to run the experiments.
$ python main.py --dataset Cora --n_clients 10 --mode disjoint$ python main.py --dataset Cora --n_clients 10 --mode overlapping$ python main.py --dataset CiteSeer --n_clients 10 --mode disjoint$ python main.py --dataset CiteSeer --n_clients 10 --mode overlapping$ python main.py --dataset PubMed --n_clients 10 --mode disjoint$ python main.py --dataset PubMed --n_clients 10 --mode overlapping$ python main.py --dataset Computers --n_clients 10 --mode disjoint$ python main.py --dataset Computers --n_clients 10 --mode overlapping$ python main.py --dataset Photo --n_clients 10 --mode disjoint$ python main.py --dataset Photo --n_clients 10 --mode overlapping$ python main.py --dataset ogbn-arxiv --n_clients 10 --mode disjoint$ python main.py --dataset ogbn-arxiv --n_clients 10 --mode overlapping$ python main.py --dataset Roman-empire --n_clients 10 --mode disjoint$ python main.py --dataset Roman-empire --n_clients 10 --mode overlapping$ python main.py --dataset Amazon-ratings --n_clients 10 --mode disjoint$ python main.py --dataset Amazon-ratings --n_clients 10 --mode overlapping$ python main.py --dataset Minesweeper --n_clients 10 --mode disjoint$ python main.py --dataset Minesweeper --n_clients 10 --mode overlapping$ python main.py --dataset Tolokers --n_clients 10 --mode disjoint$ python main.py --dataset Tolokers --n_clients 10 --mode overlapping$ python main.py --dataset Questions --n_clients 10 --mode disjoint$ python main.py --dataset Questions --n_clients 10 --mode overlapping