PRUNE is an unsupervised generative approach for network embedding.
Design properties PRUNE satisfies: scalability, asymmetry, unity and simplicity.
The approach entails a multi-task Siamese neural network to connect embeddings and our objective, preserving global node ranking and local proximity of nodes.
Deeper analysis for the proposed architecture and objective can be found in the paper (please see - PRUNE):
PRUNE: Preserving Proximity and Global Ranking for Network Embedding
Yi-An Lai+, Chin-Chi Hsu+, Wen-Hao Chen, Ming-Han Feng, and Shou-De Lin
Advances in Neural Information Processing Systems (NIPS), 2017
+: These authors contributed equally to this paper.
This repo contains reference implementation of PRUNE.
Run PRUNE on the sample graph:
python src/main.py --inputgraph sample/graph.edgelist
Check out optional arguments such as learning rate, epochs, GPU usage by:
python src/main.py --help
Supported graph format is the edgelist:
Input graph are treated as directed.
A comma-separated table of embeddings, the k-th row represents the k-th node's embeddings:
node_0 embed_dim1, embed_dim2, ... node_1 embed_dim1, embed_dim2, ... ...
Install all dependencies:
pip install -r requirements.txt
This implementation is built on
tensorflow 1.1.0. If using Mac OS or encountering other problems, see detailed TensorFlow installation guild at:
If you find PRUNE useful in your research, please consider citing the paper:
PRUNE: Preserving Proximity and Global Ranking for Network Embedding, NIPS 2017.