https://github.com/danielegrattarola/cdt-ccm-aae
Change Detection in Graph Streams by Learning Graph Embeddings on Constant-Curvature Manifolds (2018, https://arxiv.org/abs/1805.06299)
https://github.com/danielegrattarola/cdt-ccm-aae
change-detection deep-learning graph graph-neural-networks keras non-euclidean-geometry python
Last synced: 6 months ago
JSON representation
Change Detection in Graph Streams by Learning Graph Embeddings on Constant-Curvature Manifolds (2018, https://arxiv.org/abs/1805.06299)
- Host: GitHub
- URL: https://github.com/danielegrattarola/cdt-ccm-aae
- Owner: danielegrattarola
- License: mit
- Created: 2019-01-21T07:37:29.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-01-16T21:20:23.000Z (almost 6 years ago)
- Last Synced: 2025-03-31T11:35:38.098Z (7 months ago)
- Topics: change-detection, deep-learning, graph, graph-neural-networks, keras, non-euclidean-geometry, python
- Language: Python
- Homepage:
- Size: 34.2 KB
- Stars: 11
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

This is the official implementation of the paper "Change Detection in Graph Streams by Learning Graph Embeddings on Constant-Curvature Manifolds" by D. Grattarola, D. Zambon, C. Alippi, and L. Livi. (2018, [https://arxiv.org/abs/1805.06299](https://arxiv.org/abs/1805.06299)).
This code provides a proof of concept for the experiments conducted in the paper, and contains all the necessary elements to apply the methodology on a generic problem.
Please cite the paper if you use any of this code for your research:
```
@article{grattarola2019change,
title={Change detection in graph streams by learning graph embeddings on constant-curvature manifolds},
author={Grattarola, Daniele and Zambon, Daniele and Livi, Lorenzo and Alippi, Cesare},
journal={IEEE transactions on neural networks and learning systems},
year={2019},
publisher={IEEE}
}
```
## Setting up
The code is implemented for Python 3 and tested on Ubuntu 16.04.
To run the code, you will need a number of libraries installed on your system:
- [Keras](https://keras.io/) (`pip install keras`), a high-level API for deep learning;
- [Spektral](https://danielegrattarola.github.io/spektral/) (`pip install spektral`), a Keras extension to build graph neural networks;
- [CDG](https://github.com/dan-zam/cdg) (see README on Github), a library for change detection tests and non-Euclidean geometry.
The code also depends on Numpy, Scipy, Pandas, Scikit-learn, and Joblib.
## Running experiments
The `src` folder includes several scripts to run the different versions of the algorithm proposed in the paper:
- `main_prior.py`, trains the AAE using the non-Euclidean prior;
- `main_geom.py`, trains the AAE using the geometric discriminator;
- `main_cdt.py`, runs the change detection tests on the data saved by the previous scripts;
To simplify the workflow, the repository includes a `main.sh` script to run a full experiment on Delaunay triangulations.
## About
For a simplified explanation of the paper, check out [this blog post](https://danielegrattarola.github.io/posts/2018-06-07/ccm-paper.html).