Como un juguete ejemplo, he utilizado la t-SNE en una simple parábola para tener una representación de la misma en una dimensión.
library(tidyverse)
library(tsne)
theme_set(theme_minimal())
df_parabol <- tibble(x = seq(-5, 5, by = 0.5), y = x^2)
N <- nrow(df_parabol)
colors <- terrain.colors(N)
ggplot(df_parabol) +
aes(x, y) +
geom_point(color = colors) +
geom_text(label = 1:N)
Como t-SNE uso distancias entre los puntos a reducir dimensiones, pensé que me va a terminar con los puntos en una línea con el fin de siguiente de la parábola (es decir, 1 -> 21).
Sin embargo, los puntos no están ordenadas en todos los...
df_tsne <- as.data.frame(tsne(df_parabol, k = 1))
ggplot(df_tsne) +
aes(V1, 0) +
geom_point(color = colors) +
geom_text(label = 1:N)
También he intentado con varios valores de la perplejidad pero tengo los mismos resultados...
df_tsne_cross <-
tibble(p = c(2, 4, 10, 30, 50, 90)) %>%
mutate(lowdim = map(p, ~ tsne(X = df_parabol,
k = 1, perplexity = .)),
lowdim = map(lowdim, as.data.frame),
lowdim = map(lowdim, mutate, N = 1:N, col = colors)) %>%
unnest()
ggplot(df_tsne_cross) +
aes(V1, 0) +
geom_point(aes(color = col)) +
geom_text(aes(label = N)) +
scale_color_identity(guide = FALSE) +
facet_wrap(~ p, scales = "free")
Como una comparación, PCA proyectos de los puntos en el eje y.
¿Tengo que explorar más el espacio de parámetros? No me esperaba mucho de t-SNE? ¿Tiene una explicación? ¿Cuál es la estructura capturado por t-SNE aquí?