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")
# 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)
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")
plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)
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?
Respuestas:
Tienes que entender lo que
TSNE
hace 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
n
nodos más cercanos (en términos de distancia en el espacio de características). Eston
se llamaperplexity
pará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 walk
grá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
perplexity
parámetro, ya que tiene un efecto sobre qué tan enfocado está mi muestreo.fuente
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)?".
fuente
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.
fuente
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.
fuente