Home

Awesome

PRUNE

Build Status

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): <br>

PRUNE: Preserving Proximity and Global Ranking for Network Embedding<br> Yi-An Lai+, Chin-Chi Hsu+, Wen-Hao Chen, Ming-Han Feng, and Shou-De Lin<br> Advances in Neural Information Processing Systems (NIPS), 2017 <br> +: These authors contributed equally to this paper.

This repo contains reference implementation of PRUNE.

Usage

Example

Run PRUNE on the sample graph:

python src/main.py --inputgraph sample/graph.edgelist

Options

Check out optional arguments such as learning rate, epochs, GPU usage by:

python src/main.py --help

Input

Supported graph format is the edgelist:

node_from node_to

Input graph are treated as directed.

Output

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, ...
        ...

Requirements

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: https://www.tensorflow.org/versions/r1.1/install/

Citing

If you find PRUNE useful in your research, please consider citing the paper:

PRUNE: Preserving Proximity and Global Ranking for Network Embedding, NIPS 2017.

Miscellaneous

If having any questions, please contact us: Yi-An Lai (b99202031@ntu.edu.tw) or Chin-Chi Hsu (chinchi@iis.sinica.edu.tw).