/Awesome-Deep-Graph-Clustering

Awesome Deep Graph Clustering is a collection of SOTA, novel deep graph clustering methods (papers, codes, and datasets).

Primary LanguagePythonMIT LicenseMIT

ADGC: Awesome Deep Graph Clustering

ADGC is a collection of state-of-the-art (SOTA), novel deep graph clustering methods (papers, codes and datasets). Any other interesting papers and codes are welcome. Any problems, please contact yueliu19990731@163.com. If you find this repository useful to your research or work, it is really appreciated to star this repository. ❤️

Made with Python GitHub stars GitHub forks visitors


What's Deep Graph Clustering?

Deep graph clustering, which aims to reveal the underlying graph structure and divide the nodes into different groups, has attracted intensive attention in recent years.

Important Survey Papers

  1. "A survey of clustering with deep learning: From the perspective of network architecture" [paper]

Papers

Traditional Clustering

  1. K-Means: "Algorithm AS 136: A k-means clustering algorithm" [paper|code]

Deep Clustering

  1. DEC (ICML16): "Unsupervised Deep Embedding for Clustering Analysis" [paper|code]
  2. IDEC (IJCAI17): "Improved Deep Embedded Clustering with Local Structure Preservation" [paper|code]
  3. DCN (ICML17): "Towards k-means-friendly spaces: Simultaneous deep learning and clustering" [paper|code]

Generative Deep Graph Clustering

  1. SAE (AAAI14): "Learning Deep Representations for Graph Clustering" [paper|code]
  2. GAE/VGAE (NeurIPS16): "Variational Graph Auto-Encoders" [paper|code]
  3. MGAE (CIKM17): "MGAE: Marginalized Graph Autoencoder for Graph Clustering" [paper|code]
  4. NetVAE (IJCAI19): "Network-Specific Variational Auto-Encoder for Embedding in Attribute Networks" [paper]
  5. DAEGC (IJCAI19): "Attributed Graph Clustering: A Deep Attentional Embedding Approach" [paper|code]
  6. GALA (ICCV19): "Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning" [paper|code]
  7. RWR-GAE (arXiv19): "RWR-GAE: Random Walk Regularization for Graph Auto Encoders" [paper|code]
  8. DGVAE (NeurIPS20): "Dirichlet Graph Variational Autoencoder" [paper|code]
  9. SDCN/SDCN_Q (WWW20): "Structural Deep Clustering Network" [paper|code]
  10. O2MAC (WWW20): "One2Multi Graph Autoencoder for Multi-view Graph Clustering" [paper|code]
  11. CGCN/GMM-VGAE (AAAI20): "Collaborative Graph Convolutional Networks: Unsupervised Learning Meets Semi-Supervised Learning" [paper|code]
  12. DFCN (AAAI21): "Deep Fusion Clustering Network" [paper|code]
  13. R-GAE (arXiv21): "Rethinking Graph Auto-Encoder Models for Attributed Graph Clustering" [paper|code]
  14. AGCN (MM2021): "Attention-driven Graph Clustering Network" [paper|code]
  15. DAGC (arXiv21, extension of AGCN): ”Deep Attention-guided Graph Clustering with Dual Self-supervision“ [paper|code]
  16. AdaGAE (TPAMI21): "Adaptive Graph Auto-Encoder for General Data Clustering" [paper|code]
  17. AHGAE (TKDE21): "Adaptive Hypergraph Auto-Encoder for Relational Data Clustering" [paper]
  18. EGAE (TNNLS22): "Embedding Graph Auto-Encoder for Graph Clustering"[paper|code]
  19. GC-VGE (PR22): "Graph Clustering via Variational Graph Embedding" [paper]
  20. GCC (WSDM22): "Efficient Graph Convolution for Joint Node Representation Learning and Clustering" [paper|code]

Adversarial Deep Graph Clustering

  1. AGAE (IJCAI19): "Adversarial Graph Embedding for Ensemble Clustering" [paper]
  2. ARGA/ARVGA (TCYB19): "Learning Graph Embedding with Adversarial Training Methods" [paper|code]
  3. WARGA (arXiv21): "Wasserstein Adversarially Regularized Graph Autoencoder" [paper|code]

Contrastive Deep Graph Clustering

  1. MVGRL (ICML20): "Contrastive Multi-View Representation Learning on Graphs" [paper|code]
  2. AGE (SIGKDD20): "Adaptive Graph Encoder for Attributed Graph Embedding" [paper|code]
  3. MCGC (NeurIPS21): "Multi-view Contrastive Graph Clustering" [paper|code]
  4. SCAGC (arXiv21): "Self-supervised Contrastive Attributed Graph Clustering" [paper]
  5. MGCCN (arXiv21): "Multilayer Graph Contrastive Clustering Network" [paper]
  6. GDCL (IJCAI21): "Graph Debiased Contrastive Learning with Joint Representation Clustering" [paper|code]
  7. GCC (ICCV21): "Graph Contrastive Clustering" [paper|code]
  8. SOLI (Neurocomputing21): "Deep node clustering based on mutual information maximization" [paper|code]
  9. SAIL(AAAI22): "SAIL: Self-Augmented Graph Contrastive Learning" [paper]
  10. DCRN (AAAI22): "Deep Graph Clustering via Dual Correlation Reduction" [paper|code]
  11. AFGRL (AAAI22): "Augmentation-Free Self-Supervised Learning on Graphs" [paper|code]
  12. IDCRN (arXiv22, extension of DCRN): "Improved Dual Correlation Reduction Network" [paper]
  13. SUBLIME (WWW22): "Towards Unsupervised Deep Graph Structure Learning" [paper|code]

Other Related Methods

  1. AGC (IJCAI19): "Attributed Graph Clustering via Adaptive Graph Convolution" [paper|code]
  2. MCGC (TIP19): "Multiview Consensus Graph Clustering" [paper|code]
  3. HAN (WWW2019): "Heterogeneous Graph Attention Network" [paper|code]
  4. DAG (ICCKE20): "Attributed Graph Clustering via Deep Adaptive Graph Maximization" [paper]
  5. MAGCN (IJCAI20): "Multi-View Attribute Graph Convolution Networks for Clustering" [paper|code]
  6. Cross-Graph (ICDM20): "Cross-Graph: Robust and Unsupervised Embedding for Attributed Graphs with Corrupted Structure" [paper|code]
  7. DMGI (AAAI20): "Unsupervised Attributed Multiplex Network Embedding" [paper|code]
  8. MAGNN (WWW20): "MAGNN: Metapath Aggregated Graph Neural Network for Heterogeneous Graph Embedding" [paper|code]
  9. MinCutPool (ICML20): "Spectral Clustering with Graph Neural Networks for Graph Pooling" [paper|code]
  10. GCAGC (CVPR20): "Adaptive Graph Convolutional Network with Attention Graph Clustering for Co saliency Detection" [paper|code]
  11. DBGAN (CVPR20): "Distribution-induced Bidirectional GAN for Graph Representation Learning" [paper|code]
  12. CAGNN (arXiv20): "Cluster-Aware Graph Neural Networks for Unsupervised Graph Representation Learning" [paper]
  13. COLES (NeurIPS21): "Contrastive Laplacian Eigenmaps" [paper|code]
  14. Graph-MVP (arXiv21): "Graph-MVP: Multi-View Prototypical Contrastive Learning for Multiplex Graphs" [paper|code]
  15. MvAGC (IJCAI21): "Graph Filter-based Multi-view Attributed Graph Clustering" [paper|code]
  16. GIC (PAKDD21): "Graph InfoClust: Maximizing Coarse-Grain Mutual Information in Graphs" [paper|code]
  17. HDMI (WWW21): "High-order Deep Multiplex Infomax" [paper|code]
  18. MAGC (TKDE21): "Multi-view Attributed Graph Clustering" [paper|code]
  19. NAS-GC (TCYB21): "Smoothness Sensor: Adaptive Smoothness Transition Graph Convolutions for Attributed Graph Clustering" [paper|code]
  20. SENet (NN21): "Spectral embedding network for attributed graph clustering" [paper]
  21. DNENC (PR22): "Deep neighbor-aware embedding for node clustering in attributed graphs" [paper]
  22. SDSNE(AAAI22): "Stationary diffusion state neural estimation for multiview clustering" [paper|code]
  23. AUTOSSL (ICLR22): "Automated Self-Supervised Learning For Graphs" [paper|code]
  24. SAGES (TKDE22): "SAGES: Scalable Attributed Graph Embedding with Sampling for Unsupervised Learning" [paper]
  25. MVGC (NN22): "Multi-view graph embedding clustering network: Joint self-supervision and block diagonal representation" [paper|code]

Benchmark Datasets

We divide the datasets into two categories, i.e. graph datasets and non-graph datasets. Graph datasets are some graphs in real-world, such as citation networks, social networks and so on. Non-graph datasets are NOT graph type. However, if necessary, we could construct "adjacency matrices" by K-Nearest Neighbors (KNN) algorithm.

Quick Start

  • Step1: Download all datasets from [Google Drive | Nutstore]. Optionally, download some of them from URLs in the tables (Google Drive)
  • Step2: Unzip them to ./dataset/
  • Step3: Change the type and the name of the dataset in main.py
  • Step4: Run the main.py

Code

  • utils.py
    1. load_graph_data: load graph datasets
    2. load_data: load non-graph datasets
    3. normalize_adj: normalize the adjacency matrix
    4. diffusion_adj: calculate the graph diffusion
    5. construct_graph: construct the knn graph for non-graph datasets
    6. numpy_to_torch: convert numpy to torch
    7. torch_to_numpy: convert torch to numpy
  • clustering.py
    1. setup_seed: fix the random seed
    2. evaluation: evaluate the performance of clustering
    3. k_means: K-means algorithm
  • visualization.py
    1. t_sne: t-SNE algorithm
    2. similarity_plot: visualize cosine similarity matrix of the embedding or feature

Datasets Details

About the introduction of each dataset, please check here

  1. Graph Datasets

    Dataset Samples Dimension Edges Classes URL
    CORA 2708 1433 5278 7 cora.zip
    CITESEER 3327 3703 4552 6 citeseer.zip
    PUBMED 19717 500 44324 3 pubmed.zip
    DBLP 4057 334 3528 4 dblp.zip
    ACM 3025 1870 13128 3 acm.zip
    AMAP 7650 745 119081 8 amap.zip
    AMAC 13752 767 245861 10 amac.zip
    CORAFULL 19793 8710 63421 70 corafull.zip
    WIKI 2405 4973 8261 19 wiki.zip
    COCS 18333 6805 81894 15 cocs.zip
    BAT 131 81 1038 4 bat.zip
    EAT 399 203 5994 4 eat.zip
    UAT 1190 239 13599 4 uat.zip

Edges: Here, we just count the number of undirected edges.

  1. Non-graph Datasets

    Dataset Samples Dimension Type Classes URL
    USPS 9298 256 Image 10 usps.zip
    HHAR 10299 561 Record 6 hhar.zip
    REUT 10000 2000 Text 4 reut.zip

Citation

If you use our code or the processed datasets in this repository for your research, please cite our paper.

@inproceedings{DCRN,
  title={Deep Graph Clustering via Dual Correlation Reduction},
  author={Liu, Yue and Tu, Wenxuan and Zhou, Sihang and Liu, Xinwang and Song, Linxuan and Yang, Xihong and Zhu, En},
  booktitle={AAAI Conference on Artificial Intelligence},
  year={2022}
}
@article{mrabah2021rethinking,
  title={Rethinking Graph Auto-Encoder Models for Attributed Graph Clustering},
  author={Mrabah, Nairouz and Bouguessa, Mohamed and Touati, Mohamed Fawzi and Ksantini, Riadh},
  journal={arXiv preprint arXiv:2107.08562},
  year={2021}
}

Other Related Awesome Repository

awesome-awesome-machine-learning

Awesome Incomplete Graph Representation Learning

awesome-self-supervised-gnn