Skip to content

Minimum distortion embedding for networks and... other almost uncorrelated stuff

License

Notifications You must be signed in to change notification settings

djanloo/netgross

Repository files navigation

netgross

CircleCIcodecov

This repository aims to implement some network embedding algorithms (MDE, t-SNE, UMAP) for dimensionality reduction and other networks-related stuff (processes over networks, maybe also leaky integrate-and-fire for SNN in future).

MDE strategy

Using a sum of squares loss over link distances the gradient is available in analytical form (no time wasted in computing it numerically).

The net is "inflated" using a repulsion strategy weighted with the inverse of the distance squared over random selected couples (pushing nodes away costs a lot of time apparently). This "squashes" the net and avoids overlapping manifold regions in the projection.

Then the net is evolved elastically using a "pull the childs" strategy for each node.

Everything done is opinable (I merely followed intuition and some suggestions from the MDE article) and suggestions are widely accepted.

Further development

Most of the code is written in python3 but I had to resort to extend with C for the most resource-expensive tasks, even if I'm considering using cython.

The conceptual points of greater interest for me are:

  • (possibly) multiprocessing
  • (even more possibly) GPU processing
  • find a more efficient way to display the data

apple_game apple_game apple_game

apple_fixed_distances

Installation

I suggest using a virtual environment running

pipenv install
pipenv shell
pip install .

in the main directory.

To install globally:

pip install .

About

Minimum distortion embedding for networks and... other almost uncorrelated stuff

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published