Stochastic Neighbor Embedding (SNE) is a probabilistic approach to mimick distributional
description in high-dimensional - possible, nonlinear - subspace on low-dimensional target space.
do.sne fully adopts algorithm details in an original paper by Hinton and Roweis (2002).
do.sne(
X,
ndim = 2,
perplexity = 30,
eta = 0.05,
maxiter = 2000,
jitter = 0.3,
jitterdecay = 0.99,
momentum = 0.5,
pca = TRUE,
pcascale = FALSE,
symmetric = FALSE
)an \((n\times p)\) matrix or data frame whose rows are observations and columns represent independent variables.
an integer-valued target dimension.
desired level of perplexity; ranging [5,50].
learning parameter.
maximum number of iterations.
level of white noise added at the beginning.
decay parameter in \((0,1)\). The closer to 0, the faster artificial noise decays.
level of acceleration in learning.
whether to use PCA as preliminary step; TRUE for using it, FALSE otherwise.
a logical; FALSE for using Covariance, TRUE for using Correlation matrix. See also do.pca for more details.
a logical; FALSE to solve it naively, and TRUE to adopt symmetrization scheme.
a named Rdimtools S3 object containing
an \((n\times ndim)\) matrix whose rows are embedded observations.
a vector containing betas used in perplexity matching.
name of the algorithm.
Hinton GE, Roweis ST (2003). “Stochastic Neighbor Embedding.” In Becker S, Thrun S, Obermayer K (eds.), Advances in Neural Information Processing Systems 15, 857--864. MIT Press.
# \donttest{
## load iris data
data(iris)
set.seed(100)
subid = sample(1:150,50)
X = as.matrix(iris[subid,1:4])
label = as.factor(iris[subid,5])
## try different perplexity values
out1 <- do.sne(X, perplexity=5)
out2 <- do.sne(X, perplexity=25)
out3 <- do.sne(X, perplexity=50)
## Visualize two comparisons
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,3))
plot(out1$Y, pch=19, col=label, main="perplexity=5")
plot(out2$Y, pch=19, col=label, main="perplexity=25")
plot(out3$Y, pch=19, col=label, main="perplexity=50")
par(opar)
# }