Skip to contents

Reconstructs each point from its neighbours under a sum-to-one constraint – which makes the weights invariant to rotation, rescaling and translation of each neighbourhood, and so a description of local geometry rather than local position – then finds low-dimensional coordinates the same weights reconstruct.

Usage

morie_esl_lle(X, k = 2, neighbors = 5, reg = 0.001)

Arguments

X

Data, n by p.

k

Embedding dimension.

neighbors

Neighbourhood size.

reg

Relative ridge on the local Gram matrix – required, not cosmetic, when a neighbourhood is larger than the ambient dimension.

Value

List with embedding, weights, eigenvalues, reconstruction_error.

Details

The bottom eigenvector of M = (I - W)'(I - W) is the constant vector with eigenvalue ~0 and is discarded; keeping it is the classic LLE bug and costs a dimension.

References

Roweis, S. T., & Saul, L. K. (2000). Science 290(5500), 2323-2326.

Examples

set.seed(1)
tt <- runif(150, 0, 4 * pi)
X <- cbind(tt * cos(tt), tt * sin(tt), rnorm(150, sd = 0.05))
all(abs(rowSums(morie_esl_lle(X, k = 2, neighbors = 10)$weights) - 1) < 1e-8)
#> [1] TRUE