28 votos

¿Qué tiene de malo t-SNE frente a PCA para la reducción dimensional utilizando R?

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

Obtengo buenos resultados cuando realizo mi análisis utilizando el análisis de componentes principales. Primero calculo las agrupaciones de kmeans en los datos, luego ejecuto un ACP y coloreo los puntos de datos basándome en la agrupación inicial de kmeans 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")

enter image description here

# 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)

enter image description here

Pero cuando intento cambiar el PCA por el método t-SNE, los resultados son 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")

enter image description here

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

enter image description here

Mi pregunta aquí es por qué la agrupación kmeans es tan diferente de lo que calcula t-SNE. Habría esperado una separación aún mejor entre los conglomerados de lo que hace el PCA, pero a mí me parece casi aleatoria. ¿Sabéis a qué se debe? ¿Me falta un paso de escala o algún tipo de normalización?

4 votos

Tenga en cuenta que, también con el PCA, a menudo no obtendrá resultados tan "buenos" como los que ha obtenido. Agrupar muchas características y luego proyectar las agrupaciones en el subespacio de sólo unos pocos primeros PC puede mostrar una imagen como la que obtuvo aquí para t-SNE, a menos que esos PCS capturen casi toda la variabilidad. ¿Ha comparado qué parte de la variabilidad capturan sus 3 primeros PC y sus 3 primeras dimensiones t-SNE?

2 votos

Más trivialmente, ¿has probado con más iteraciones?

2 votos

He jugado con las iteraciones con hasta 2000 y también he jugado con varios ajustes de perplejidad, pero nunca he visto algo ni siquiera cercano al rendimiento que muestra el PCA.

10voto

Even Mien Puntos 10122

Es difícil comparar estos enfoques.

El ACP no tiene parámetros. Dados los datos, basta con ver los componentes principales.

Por otro lado, t-SNE depende de parámetros severos: perplejidad, exageración temprana, tasa de aprendizaje, número de iteraciones, aunque los valores por defecto suelen proporcionar buenos resultados.

Así que no puede compararlos sin más, sino que tiene que comparar el PCA con el mejor resultado que pueda obtener con t-SNE (o el mejor resultado que haya obtenido a lo largo de varios intentos de t-SNE). De lo contrario, sería equivalente a preguntar "¿por qué mi modelo lineal funciona mejor que mi modelo (no ajustado) de gradient boosting?".

Editar Después de ver muchas preguntas relacionadas con las diferencias entre estos dos enfoques, escribí esta entrada del blog resumiendo los pros y los contras de cada método.

10voto

yboren Puntos 26

Tienes que entender lo que TSNE antes de utilizarlo.

Empieza por construir un barrio gráfico entre vectores de características en función de la distancia.

El gráfico conecta un nodo (vector de características) con su n nodos más cercanos (en términos de distancia en el espacio de características). Este n se denomina perplexity parámetro.

El propósito de construir este gráfico tiene su origen 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 walk en su gráfico de características TSNE.

En mi experiencia... algunos de mis problemas vinieron del razonamiento sobre cómo la representación de características afecta a la construcción de este gráfico. También juego con el perplexity ya que influye en el enfoque de mi muestreo.

3voto

johndpope Puntos 111

Ejecuté t-sne en un conjunto de datos para reemplazar PCA y (a pesar del error que Rum Wei notó) obtuve mejores resultados. En mi caso de aplicación, el pca aproximado funcionaba bien mientras que el t-sne aproximado me daba resultados de aspecto aleatorio. Se debió al paso de escalado/centrado incluido en el pca (por defecto en la mayoría de los paquetes) pero no utilizado en el t-sne.
Mis puntos eran áreas y la distancia entre ellos no tenía mucho sentido sin un escalado previo, me hizo pasar de "parecer aleatorio" a "tener sentido".

Como dijo RUser4512, también podrías probar tus parámetros. En su sitio web El autor recomienda una perplejidad de entre 5 y 50 (la tuya parece bastante pequeña), pero también advierte de que una perplejidad demasiado grande te dará una esfera de puntos casi homogénea (lo que es bueno saber).

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

0voto

Kevin Puntos 543

Una diferencia importante entre métodos como PCA y SVD con tSNE es que tSNE utiliza una escala no lineal. Esto a menudo hace que los gráficos sean más equilibrados visualmente, pero tenga cuidado al interpretarlos de la misma manera que lo haría con PCA. Esta diferencia probablemente explica la diferencia entre los gráficos mostrados arriba.

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

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X