¿Qué tiene de malo t-SNE vs PCA para la reducción dimensional con R?

27

Tengo una matriz de 336x256 números de coma flotante (336 genomas bacterianos (columnas) x 256 frecuencias de tetranucleótidos normalizadas (filas), por ejemplo, cada columna suma 1).

Obtengo buenos resultados cuando ejecuto mi análisis utilizando el análisis de componentes principales. Primero calculo los grupos de kmeans en los datos, luego ejecuto un PCA y coloreo los puntos de datos basados ​​en el grupo de kmeans inicial en 2D y 3D:

library(tsne)
library(rgl)
library(FactoMineR)
library(vegan)
# read input data
mydata <-t(read.csv("freq.out", header = T, stringsAsFactors = F, sep = "\t", row.names = 1))
# Kmeans Cluster with 5 centers and iterations =10000
km <- kmeans(mydata,5,10000)
# run principle component analysis
pc<-prcomp(mydata)
# plot dots
plot(pc$x[,1], pc$x[,2],col=km$cluster,pch=16)
# plot spiderweb and connect outliners with dotted line
pc<-cbind(pc$x[,1], pc$x[,2])
ordispider(pc, factor(km$cluster), label = TRUE)
ordihull(pc, factor(km$cluster), lty = "dotted")

ingrese la descripción de la imagen aquí

# plot the third dimension
pc3d<-cbind(pc$x[,1], pc$x[,2], pc$x[,3])
plot3d(pc3d, col = km$cluster,type="s",size=1,scale=0.2)

ingrese la descripción de la imagen aquí

Pero cuando trato de cambiar la PCA con el método t-SNE, los resultados se ven muy inesperados:

tsne_data <- tsne(mydata, k=3, max_iter=500, epoch=500)
plot(tsne_data[,1], tsne_data[,2], col=km$cluster, pch=16)
ordispider(tsne_data, factor(km$cluster), label = TRUE)
ordihull(tsne_data, factor(km$cluster), lty = "dotted")

ingrese la descripción de la imagen aquí

plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)

ingrese la descripción de la imagen aquí

Mi pregunta aquí es por qué la agrupación de kmeans es tan diferente de lo que calcula t-SNE. Hubiera esperado una separación aún mejor entre los clústeres que la PCA, pero me parece casi aleatoria. ¿Sabes por qué es esto? ¿Me estoy perdiendo un paso de escala o algún tipo de normalización?

Loddi
fuente
44
Tenga en cuenta que con PCA, a menudo, no obtendrá resultados tan "buenos" como los que puede obtener. El agrupamiento en muchas características y luego la proyección de los clústeres en el subespacio de solo unas pocas PC pueden mostrar una imagen como la que obtuvo aquí para t-SNE, a menos que esas PCS capten casi toda la variabilidad. ¿Comparó - qué porción de la variabilidad es capturada por sus primeras 3 PC y sus primeras 3 dimensiones t-SNE?
ttnphns
2
Más trivialmente, ¿has intentado más iteraciones?
jubo
2
Jugué con las iteraciones hasta 2000 y también jugué con varias configuraciones de perplejidad, pero nunca vi algo tan cercano al rendimiento que muestra la PCA.
Loddi
1
¿Has intentado ajustar la perplejidad?
1
tSNE tiene una perplejidad teórica óptima que minimiza la divergencia KL entre sus datos en sus dimensiones originales y proyectadas. ¿Has intentado primero hacer una búsqueda en la cuadrícula de perplejidad? Por ejemplo, 10,20,30,40, etc.
Alex R.

Respuestas:

10

Tienes que entender lo que TSNEhace antes de usarlo.

Comienza construyendo un gráfico de vecindario entre vectores de características basado en la distancia.

El gráfico conecta un nodo (vector de características) a sus nnodos más cercanos (en términos de distancia en el espacio de características). Esto nse llama perplexityparámetro.

El propósito de construir este gráfico se basa en el tipo de muestreo en el que se basa TSNE para construir su nueva representación de sus vectores de características.

Se genera una secuencia para la construcción del modelo TSNE utilizando un random walkgráfico de características en su TSNE.

En mi experiencia ... algunos de mis problemas provienen del razonamiento sobre cómo la representación de características afecta la construcción de este gráfico. También juego con el perplexityparámetro, ya que tiene un efecto sobre qué tan enfocado está mi muestreo.

Cónico
fuente
9

Es difícil comparar estos enfoques.

PCA no tiene parámetros. Dados los datos, solo tiene que mirar los componentes principales.

Por otro lado, t-SNE se basa en parámetros severos: perplejidad, exageración temprana, tasa de aprendizaje, número de iteraciones, aunque los valores predeterminados generalmente proporcionan buenos resultados.

Por lo tanto, no puede simplemente compararlos, debe comparar el PCA con el mejor resultado que puede lograr con t-SNE (o el mejor resultado que logró en varios intentos de t-SNE). De lo contrario, sería equivalente a preguntar "¿por qué mi modelo lineal funciona mejor que mi modelo de aumento de gradiente (no ajustado)?".

RUser4512
fuente
3

Ejecuté t-sne en un conjunto de datos para reemplazar PCA y (a pesar del error que notó Rum Wei) obtuve mejores resultados. En mi caso de aplicación, el pca en bruto funcionó bien, mientras que el t-sne en bruto me dio resultados aleatorios. Se debió al paso de escala / centrado incluido en el pca (por defecto en la mayoría de los paquetes) pero no se utilizó en el t-sne.
Mis puntos eran áreas y la distancia entre ellos tenía poco sentido sin una escala previa, me llevó de "mirar al azar" a "tener sentido".

Como dijo RUser4512, es posible que también desee probar sus parámetros. En su sitio web , el autor recomienda una perplejidad entre 5 y 50 (la suya parece bastante pequeña), también advierte que una perplejidad demasiado grande le dará una esfera de puntos casi homogénea (lo cual es bueno saber).

Distill tiene un artículo muy agradable con una visualización interactiva que realmente ayuda a comprender el impacto de los parámetros.

Néstor Demeure
fuente
0

Una diferencia importante entre métodos como PCA y SVD con tSNE es que tSNE está utilizando una escala no lineal. Esto a menudo genera tramas que son más equilibradas visualmente, pero tenga cuidado al interpretarlas de la misma manera que lo haría con PCA. Esta diferencia probablemente explica la diferencia entre las parcelas que se muestran arriba.

Consulte el siguiente artículo para obtener más detalles sobre la interpretación de la escala no lineal de tSNE: https://distill.pub/2016/misread-tsne/ (Wattenberg, et al., "Cómo usar t-SNE efectivamente", Distill, 2016. http://doi.org/10.23915/distill.00002 )

No es inesperado que los datos de tSNE mezclen los "grupos", ya que no son tan distintos en los datos de PCA. Algunos puntos dentro de los grupos 2 y 4 están más distantes del centroide del grupo que la diferencia entre los grupos, por ejemplo. Obtendría resultados de agrupación muy diferentes con un parámetro k diferente. A menos que tenga una justificación biológica específica para usar 5 grupos, recomendaría usar un enfoque de agrupamiento jerárquico basado en gráficos o sin supervisión.

Tom Kelly
fuente