El problema con t-SNE es que no conserva distancias ni densidad. Solo hasta cierto punto conserva a los vecinos más cercanos. La diferencia es sutil, pero afecta a cualquier algoritmo basado en la densidad o la distancia.
Para ver este efecto, simplemente genere una distribución gaussiana multivariada. Si visualiza esto, tendrá una pelota que es densa y se vuelve mucho menos densa hacia afuera, con algunos valores atípicos que pueden estar muy lejos.
Ahora ejecute t-SNE en estos datos. Por lo general, obtendrá un círculo de densidad bastante uniforme. Si usa una baja perplejidad, incluso puede tener algunos patrones extraños allí. Pero ya no puedes distinguir los valores atípicos.
Ahora hagamos las cosas más complicadas. Usemos 250 puntos en una distribución normal en (-2,0) y 750 puntos en una distribución normal en (+2,0).
Se supone que este es un conjunto de datos fácil, por ejemplo con EM:
Si ejecutamos t-SNE con una perplejidad predeterminada de 40, obtenemos un patrón de forma extraña:
No está mal, pero tampoco es tan fácil de agrupar, ¿verdad? Te resultará difícil encontrar un algoritmo de agrupación que funcione aquí exactamente como lo desees. E incluso si le pidiera a los humanos que agrupen estos datos, lo más probable es que encuentren mucho más de 2 grupos aquí.
Si ejecutamos t-SNE con una perplejidad demasiado pequeña como 20, obtenemos más de estos patrones que no existen:
Esto se agrupará, por ejemplo, con DBSCAN, pero generará cuatro grupos. ¡Así que cuidado, t-SNE puede producir patrones "falsos"!
La perplejidad óptima parece estar en algún lugar alrededor de 80 para este conjunto de datos; pero no creo que este parámetro deba funcionar para cualquier otro conjunto de datos.
Ahora esto es visualmente agradable, pero no mejor para el análisis . Un anotador humano probablemente podría seleccionar un corte y obtener un resultado decente; ¡k-means sin embargo fallará incluso en este escenario muy fácil ! Ya puede ver que la información de densidad se pierde , todos los datos parecen vivir en un área de casi la misma densidad. Si, en cambio, aumentasemos aún más la perplejidad, la uniformidad aumentaría y la separación se reduciría nuevamente.
En conclusión, use t-SNE para la visualización (¡y pruebe diferentes parámetros para obtener algo visualmente agradable!), Pero no ejecute la agrupación después , en particular no use algoritmos basados en la distancia o la densidad, ya que esta información fue intencionalmente (!) perdido. Los enfoques basados en gráficos de vecindad pueden estar bien, pero no es necesario que primero ejecute t-SNE de antemano, solo use los vecinos de inmediato (porque t-SNE intenta mantener este nn-gráfico en gran parte intacto).
Más ejemplos
Estos ejemplos se prepararon para la presentación del documento (pero aún no se pueden encontrar en el documento, ya que hice este experimento más adelante)
Erich Schubert y Michael Gertz.
Incrustación intrínseca de vecino t-estocástico para visualización y detección de valores atípicos: ¿un remedio contra la maldición de la dimensionalidad?
En: Actas de la 10ª Conferencia Internacional sobre Búsqueda de Similitudes y Aplicaciones (SISAP), Munich, Alemania. 2017
Primero, tenemos estos datos de entrada:
Como puede suponer, esto se deriva de una imagen de "colorearme" para niños.
Si ejecutamos esto a través de SNE ( NO t-SNE , sino el predecesor):
¡Guau, nuestro pez se ha convertido en un monstruo marino! Debido a que el tamaño del núcleo se elige localmente, perdemos gran parte de la información de densidad.
Pero te sorprenderá mucho la salida de t-SNE:
De hecho, he intentado dos implementaciones (las implementaciones ELKI y sklearn), y ambas produjeron ese resultado. Algunos fragmentos desconectados, pero que cada uno parece algo consistente con los datos originales.
Dos puntos importantes para explicar esto:
SGD se basa en un procedimiento de refinamiento iterativo y puede atascarse en los óptimos locales. En particular, esto dificulta que el algoritmo "voltee" una parte de los datos que ha reflejado, ya que esto requeriría mover puntos a través de otros que se supone que están separados. Por lo tanto, si algunas partes del pez se reflejan y otras no, es posible que no pueda solucionarlo.
t-SNE usa la distribución t en el espacio proyectado. A diferencia de la distribución gaussiana utilizada por el SNE regular, esto significa que la mayoría de los puntos se repelerán entre sí , ya que tienen 0 afinidad en el dominio de entrada (Gaussian obtiene cero rápidamente), pero> 0 afinidad en el dominio de salida. A veces (como en MNIST) esto hace una visualización más agradable. En particular, puede ayudar a "dividir" un conjunto de datos un poco más que en el dominio de entrada. Esta repulsión adicional también a menudo hace que los puntos usen el área de manera más uniforme, lo que también puede ser deseable. Pero aquí, en este ejemplo, los efectos repelentes en realidad hacen que se separen los fragmentos de los peces.
Podemos ayudar (en este conjunto de datos de juguetes ) el primer problema usando las coordenadas originales como ubicación inicial, en lugar de coordenadas aleatorias (como se usa generalmente con t-SNE). Esta vez, la imagen es sklearn en lugar de ELKI, porque la versión sklearn ya tenía un parámetro para pasar las coordenadas iniciales:
Como puede ver, incluso con una colocación inicial "perfecta", t-SNE "romperá" el pez en varios lugares que originalmente estaban conectados porque la repulsión de Student-t en el dominio de salida es más fuerte que la afinidad gaussiana en la entrada espacio.
Como puede ver, t-SNE (¡y SNE también!) Son técnicas de visualización interesantes , pero deben manejarse con cuidado. ¡Prefiero no aplicar k-means en el resultado! porque el resultado estará muy distorsionado, y ni las distancias ni la densidad se conservan bien. En cambio, más bien utilícelo para la visualización.