Skip to content

Instantly share code, notes, and snippets.

@serialhex
Created August 16, 2011 23:44
Show Gist options
  • Save serialhex/50837ac8b233fa396be1 to your computer and use it in GitHub Desktop.
Save serialhex/50837ac8b233fa396be1 to your computer and use it in GitHub Desktop.
/** @brief the class LaplacianEigenmaps used to preprocess
* data using Laplacian Eigenmaps algorithm as described in:
*
* Belkin, M., & Niyogi, P. (2002).
* Laplacian Eigenmaps and Spectral Techniques for Embedding and Clustering.
* Science, 14, 585-591. MIT Press.
* Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.9400&rep=rep1&type=pdf
*
* Note that the algorithm is very sensitive to the heat distribution coefficient
* and number of neighbors in the nearest neighbor graph. No connectivity check
* is provided, so the preprocessor will not produce reasonable embeddings if the
* K value makes a graph that is not connected.
*
* This implementation is not parallel due to performance issues. Generalized
* eigenproblem is the bottleneck for this algorithm.
*
* Solving of generalized eigenproblem involves LAPACK DSYGVX routine
* and requires extra memory for right-hand side matrix storage.
* If ARPACK is available then DSAUPD/DSEUPD is used with no extra
* memory usage.
*
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment