Skip to content

yarlett/shoehorn

Repository files navigation

Shoehorn

Shoehorn is a nonlinear dimensional reduction tool written in Go. The shoehorn algorithm attempts to locate high-dimensional discrete probability distributions in a low-dimensional space with a specified number of dimensions. The algorithm operates by attempting to reconstruct the high-dimensional patterns by summing over the neighbors of these patterns in the low-dimensional space, where the weight attaching to a neighbor is a monotonically decreasing function of distance, so as to minimize the reconstruction error. Further technical details are provided in the /report directory.

The package implements 2 reconstruction methods, one involving exponential decay of summation weights, and one involving power-law decay of summation weights, along with gradient-descent learning algorithms for both. The code will automatically take advantage of multiple CPU cores in order to speed up learning.

The software takes input from a file consisting of {object_id, feature_id, feature_value} triples. Learning is performed according to a number of specifiable parameters and after learning has occurred the learned low-dimensional locations of the objects can be written in CSV format to a file. An example learning script can be found in the /mnist directory.

About

Nonlinear dimensional reduction through pattern reconstruction.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published