Home

Awesome

MILE: A Multi-Level Framework for Scalable Graph Embedding

MILE is a multi-level framework to scale up existing graph embedding techniques, without modifying them. It incorporates existing embedding techniques as black boxes, and can improves the scalability of many embedding methods by reducing both the running time and memory consumption. Additionally, MILE also provides a lift in the quality of node embeddings in most of the cases. Read our paper for more details. Here we publish our code and data with a brief instruction on how to add a new embedding method as the base embedding technique.

Required Packages

Input and Output

How To Run

Use python main.py to run the code with all the default settings. Here are some useful arguments that can be passed to the program:

Adding a New Base Embedding Method

Follow the steps below to add a new base embedding method (say DeepWalk):

  1. Create a python file in ./base_embed_methods/ (e.g., deepwalk.py).
  2. Include the original embedding implementation in that file (e.g., def DeepWalk_Original(...) in deepwalk.py).
  3. Provide a wrapper method to generate embeddings using the original embedding method; this wrapper will be called by MILE framework (e.g., def deepwalk(...) in deepwalk.py).<br/><b>NOTE</b>: The wrapper method should be same as the filename in Step 1.
  4. Add the name of the wrapper method in Step 3 as a choice to --basic-embed in the arguments of ./main.py.

Citation

If you use any part of our code, please cite our work:

J. Liang, S. Gurukar, S. Parthasarathy. "MILE: A Multi-Level Framework for Scalable Graph Embedding". arXiv preprint arXiv:1802.09612, 2018. [PDF][bib]