Landmark MDS (LMDS) algorithm applies first classical MDS to a subset of the data (landmark points) and then the remaining individuals are projected onto the landmark low dimensional configuration using a distance-based triangulation procedure.
landmark_mds(x, num_landmarks, r)Returns a list containing the following elements:
A matrix that consists of \(n\) points (rows)
and r variables (columns) corresponding to the principal coordinates. Since
a dimensionality reduction is performed, r\(<<k\)
The first r largest eigenvalues:
\(\lambda_i, i \in \{1, \dots, r\} \), where each \(\lambda_i\) is obtained
from applying classical MDS to the first data subset.
A matrix with \(n\) points (rows) and \(k\) variables (columns).
Number of landmark points to obtain an initial MDS configuration. It is
equivalent to l parameter used in interpolation_mds(), divide_conquer_mds() and
fast_mds(). Therefore, it is the size for which classical MDS can be computed efficiently
(using cmdscale function). It means that if \(\bar{l}\) is the limit
size for which classical MDS is applicable, then l\(\leq \bar{l}\).
Number of principal coordinates to be extracted.
LMDS applies first classical MDS to a subset of the data (landmark points). Then, it uses a distance-based triangulation procedure to project the non-landmark individuals. This distance-based triangulation procedure coincides with Gower's interpolation formula.
This method is similar to interpolation_mds() and reduced_mds().
Delicado P. and C. Pachón-García (2021). Multidimensional Scaling for Big Data. https://arxiv.org/abs/2007.11919.
Borg, I. and P. Groenen (2005). Modern Multidimensional Scaling: Theory and Applications. Springer.
De Silva V. and JB. Tenenbaum (2004). Sparse multidimensional scaling using landmark points. Technical Report, Stanford University.
Gower JC. (1968). Adding a point to vector diagrams in multivariate analysis. Biometrika.
set.seed(42)
x <- matrix(data = rnorm(4 * 10000), nrow = 10000) %*% diag(c(9, 4, 1, 1))
mds <- landmark_mds(x = x, num_landmarks = 200, r = 2)
head(mds$points)
mds$eigen
Run the code above in your browser using DataLab