nairouz / Awesome-Deep-Graph-Clustering

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 appreciate 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

Papers

  1. K-Means: "Algorithm AS 136: A k-means clustering algorithm" [paper|code]
  2. DEC (ICML16): "Unsupervised Deep Embedding for Clustering Analysis" [paper|code]
  3. GAE/VGAE (NIPS16): "Variational Graph Auto-Encoders" [paper|code]
  4. DCN (ICML17): "Towards k-means-friendly spaces: Simultaneous deep learning and clustering" [paper|code]
  5. IDEC (IJCAI17): "Improved Deep Embedded Clustering with Local Structure Preservation" [paper|code]
  6. DAEGC (IJCAI19): "Attributed Graph Clustering: A Deep Attentional Embedding Approach" [paper|code]
  7. AGAE (IJCAI19): "Adversarial Graph Embedding for Ensemble Clustering" [paper]
  8. AGC (IJCAI19): "Attributed Graph Clustering via Adaptive Graph Convolution" [paper|code]
  9. GALA (ICCV19): "Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning" [paper|code]
  10. ARGA/ARVGA (TCYB19): "Learning Graph Embedding with Adversarial Training Methods" [paper|code]
  11. MCGC (TIP19): "Multiview Consensus Graph Clustering" [paper|code]
  12. RWR-GAE (arxiv19): "RWR-GAE: Random Walk Regularization for Graph Auto Encoders" [paper|code]
  13. SDCN/SDCN_Q (WWW20): "Structural Deep Clustering Network" [paper|code]
  14. AGE (SIGKDD20): "Adaptive Graph Encoder for Attributed Graph Embedding" [paper|code]
  15. MVGRL (ICML20): "Contrastive Multi-View Representation Learning on Graphs" [paper|code]
  16. CGCN (AAAI20): "Collaborative Graph Convolutional Networks: Unsupervised Learning Meets Semi-Supervised Learning" [paper]
  17. GDCL (IJCAI21): "Graph Debiased Contrastive Learning with Joint Representation Clustering" [paper]
  18. GCC (ICCV21): "Graph Contrastive Clustering" [paper|code]
  19. MCGC (NIPS21): "Multi-view Contrastive Graph Clustering" [paper|code]
  20. AGCN (MM2021): "Attention-driven Graph Clustering Network" [paper|code]
  21. DFCN (AAAI21): "Deep Fusion Clustering Network" [paper|code]
  22. SCAGC (arxiv21): "Self-supervised Contrastive Attributed Graph Clustering" [paper]
  23. R-GAE (arxiv21): "Rethinking Graph Auto-Encoder Models for Attributed Graph Clustering" [paper|code]
  24. GMM-RGAE (arxiv21): "Rethinking Graph Auto-Encoder Models for Attributed Graph Clustering" [paper|code]
  25. DCRN (AAAI22): "Deep Graph Clustering via Dual Correlation Reduction" [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

  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 44325 3 pubmed.zip
    DBLP 4057 334 3528 4 dblp.zip
    CITE 3327 3703 4552 6 cite.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
  2. 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 code or datasets in this repository for your research, please cite our paper.

@inproceedings{
}

Other Awesome Repository

awesome-awesome-machine-learning

About

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

License:MIT License


Languages

Language:Python 100.0%