28 votos

¿Qué está mal con t-SNE vs PCA para la reducción dimensional utilizando R?

Tengo una matriz de números de punto flotante de 336x256 (336 genomas bacterianos (columnas) x 256 frecuencias tetranucleotídicas normalizadas (filas), por ejemplo, cada columna suma 1).

Obtengo buenos resultados cuando ejecuto mi análisis usando análisis de componentes principales. Primero calculo los clusters de kmeans en los datos, luego ejecuto un PCA y colorizo los puntos de datos basados en el clustering inicial de kmeans en 2D y 3D:

library(tsne)
library(rgl)
library(FactoMineR)
library(vegan)
# leer datos de entrada
mydata <-t(read.csv("freq.out", header = T, stringsAsFactors = F, sep = "\t", row.names = 1))
# Kmeans Cluster con 5 centros e iteraciones =10000
km <- kmeans(mydata,5,10000)
# ejecutar análisis de componentes principales
pc<-prcomp(mydata)
# plotear puntos
plot(pc$x[,1], pc$x[,2],col=km$cluster,pch=16)
# plotear tela de araña y conectar valores atípicos con línea punteada
pc<-cbind(pc$x[,1], pc$x[,2])
ordispider(pc, factor(km$cluster), label = TRUE)
ordihull(pc, factor(km$cluster), lty = "dotted")

introducir descripción de la imagen aquí

# plotear la tercera dimensión
pc3d<-cbind(pc$x[,1], pc$x[,2], pc$x[,3])
plot3d(pc3d, col = km$cluster,type="s",size=1,scale=0.2)

introducir descripción de la imagen aquí

Pero cuando intento cambiar el PCA con 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")

introducir descripción de la imagen aquí

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

introducir descripción de la imagen aquí

Mi pregunta aquí es por qué el clustering de kmeans es tan diferente de lo que calcula t-SNE. Habría esperado una separación aún mejor entre los clusters que lo que hace el PCA pero para mí parece casi aleatorio. ¿Sabes por qué es esto? ¿Me estoy perdiendo un paso de escalado o algún tipo de normalización?

4 votos

Tenga en cuenta que con PCA, también, a menudo no obtendrá resultados tan "buenos" como los que le sucedieron obtener. Agrupar en muchas características y luego proyectar los grupos en el subespacio de solo unos pocos primeros CP puede mostrar una imagen como la que obtuvo aquí para t-SNE, - a menos que esos CP capturen casi toda la variabilidad. ¿Comparaste - qué parte de la variabilidad es capturada por tus primeras 3 CP y tus primeras 3 dimensiones t-SNE?

2 votos

Más trivialmente, ¿has intentado más iteraciones?

2 votos

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

10voto

Even Mien Puntos 10122

Es difícil comparar estos enfoques.

PCA es libre de parámetros. Dados los datos, solo tienes que mirar 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 predeterminados generalmente proporcionan buenos resultados.

Entonces no puedes simplemente compararlos, debes comparar el PCA con el mejor resultado que puedas lograr con t-SNE (o el mejor resultado que lograste después de varios intentos con 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)?".

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

10voto

yboren Puntos 26

Tienes que entender qué hace TSNE antes de usarlo.

Comienza construyendo un grafo de vecindarios entre vectores de características basados en la distancia.

El grafo conecta un nodo (vector de características) con sus n nodos más cercanos (en términos de distancia en el espacio de características). Este n se llama parámetro perplejidad.

El propósito de construir este grafo está arraigado en el tipo de muestreo en el que TSNE se basa para construir su nueva representación de tus vectores de características.

Una secuencia para construir el modelo de TSNE se genera utilizando un paseo aleatorio en tu grafo de características de TSNE.

En mi experiencia... algunos de mis problemas surgieron al razonar sobre cómo la representación de características afecta la construcción de este grafo. También juego con el parámetro perplejidad, ya que tiene un efecto en cuán enfocado está mi muestreo.

3voto

johndpope Puntos 111

Corrí 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 áspero funcionó bien mientras que el t-sne áspero me dio resultados que parecían aleatorios. Esto 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 carecía de sentido sin un escalado previo, esto me llevó de "aspecto aleatorio" a "tener sentido".

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

Distill tiene un muy buen artículo con algunas visualizaciones interactivas que realmente ayudan a entender 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 suele resultar en gráficos que están más equilibrados visualmente, pero ten cuidado al interpretarlos de la misma manera que lo harías con PCA. Esta diferencia probablemente explique la disparidad entre los gráficos mostrados anteriormente.

Consulta 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 utilizar t-SNE de manera efectiva", Distill, 2016. http://doi.org/10.23915/distill.00002)

No es sorprendente que los datos de tSNE mezclen los "clusters" ya que no son tan distintos en los datos de 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ías resultados de agrupación muy diferentes con un parámetro k diferente. A menos que tengas una justificación biológica específica para usar 5 clusters, te recomendaría utilizar un enfoque de agrupación jerárquica no supervisada basado en gráficos.

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