Skip to content

Repository files navigation

UMAPCT.jl

Author: Luke Morris

This project implements the ISUMAP manifold learning algorithm. It is based off of the LUK4s-B/IsUMap reference python implementation. UMPACT.jl extracts the relevant components of the code to just demonstrate the high-level flow of the ISUMAP algorithm:

  1. K-nearest neighbors is run.
  2. Distances are normalized so that the distance to the farthest neighbor is 1.
  3. These normalized distances are collated into a single matrix, $$T$$.
  4. For nonzero entries, $$v$$, of this matrix, we perform $$exp(-v)$$.
  5. A "nice" means of symmetrizing the matrix is performed. Here, we take $$T T'$$, then take $$min(v, 1)$$ for nonzero elements $$v$$ of that matrix.
  6. For nonzero entries, $$v$$, of this matrix, we take $$-log(v)$$.
  7. We find all shortest distances in this matrix, via Floyd-Warshall.
  8. Perform multi-dimensional scaling (MDS) to perform dimension reduction.

These first 7 steps constitute ISUMAP.

Mathematically, we say that step 4 converts from a "metric space" to a "fuzzy simplicial set", and step 6 converts from a fuzzy simplicial set to a metric space.

Implementation details

So as not to distract from the high-level flow of this algorithm, popular Julia libraries are used for pre- and post-processing where possible.

The t-conorm used is the "bounded sum".

Results

Torus

The torus is an intuitive test case. The phenomena of interest that we want to preserve are the hole in the center and the roughly circular outline.

High-dimensional embedding of the torus High-dimensional embedding of the torus

Hemisphere

1000 points are generated on the hemisphere.

High-dimensional embedding of the hemisphere High-dimensional embedding of the hemisphere

Cube Interior

Uniformly random data are generated.

High-dimensional embedding of random data High-dimensional embedding of random data

About

ISUMAP Manifold Learning ML Model

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages