Skip to content

tlarock/nol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOL*: Network Online Learning

Purpose

This repository contains code and data to reproduce results from the following paper:

Larock, Sakharov, Bahdra, and Eliassi-Rad. Understanding the Limitations of Network Online Learning. Forthcoming in Applied Network Science. ArXiv preprint.

Instructions

The code in this repository is written in Python 3 and was developed using Python 3.5. It should work, but has not been tested, on any version 3.5+.

No installation of the software in this repository is required, and the dependencies are fairly standard, most notably numpy/scipy and sklearn. Scripts to reproduce the experiments from the paper are located in the reproduce/ directory, and are named for the figures they reproduce. Scripts should automatically generate plots, but in case of issues, plotting code is also available in the plotting/ directory.

Notes

  1. The experiments in this paper are computationally expensive and this code is written in pure python and not optimized for speed. We used a large computer with many processors over hours and days to generate our results. Running these experiments, especially the parameter search, without multiprocessing is not recommended and will likely take days on a single machine.
  2. This code is meant for prototyping, experimentation, and now reproducibility, not necessarily for general use. If you would like to use the NOL* method in a specific setting, we encourage you to use this implementation as a guide or reference for how our methodology works, but it is likely that implementing the method for your own use case, and especially API endpoints, will be desirable in the long run.
  3. Code for the iKNN-UCB baseline can be found at this link. Note that for our experiments we modified the random node sampling technique in their code to match our version. We also modified the implementation to handle networks with singleton nodes (nodes with 0 degree). We do not provide our modifications here because the code is unlicensed.
  4. Our experiments using node2vec node embeddings rely on a subprocess.run call to the SNAP node2vec example code. Begin with this line to understand how we compute and read the embeddings.

Contact

If you have any questions about this repository or run in to issues reproducing our work or using this code, please either open an issue or contact Tim LaRock.

License

We are providing this code under the MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages