TSNE: una forma fácil de hacer que tus datos hablen por sí mismos
diciembre 29, 2022¿Alguna vez has tenido un conjunto de datos y no sabías cómo visualizarlo de manera que sea fácil de entender? ¿Has querido hacer que tus datos “hablen por sí mismos” pero no sabías cómo hacerlo? Si es así, entonces TSNE es el algoritmo que necesitas.
TSNE (T-Distributed Stochastic Neighbor Embedding) es una herramienta de visualización de datos que te permite ver patrones y relaciones en tus datos de una manera que simplemente no es posible con gráficos tradicionales. Con TSNE, puedes ver fácilmente cómo diferentes grupos de datos están relacionados entre sí y cómo se diferencian.
Aunque puede parecer complicado, en realidad es bastante fácil de usar y está disponible tanto en Python como en R. En esta publicación, aprenderás cómo usar TSNE para hacer que tus datos hablen por sí mismos y cómo puedes ajustar los principales parámetros para obtener los mejores resultados. ¡Así que si quieres aprender cómo visualizar tus datos de manera increíblemente efectiva, sigue leyendo!
Si quieres jugar directamente con el algoritmo y probar sus distintos parámetros, tengo la siguiente aplicación que puedes usar (si falla, este es el enlace):
Índice
¿Qué es TSNE y cómo funciona?
TSNE es un algoritmo de visualización de datos que te permite ver patrones y relaciones en tus datos de manera que simplemente no es posible con gráficos tradicionales. Se basa en un concepto llamado “vecino más cercano”, que significa que si dos puntos en tus datos están muy cerca uno del otro, entonces es muy probable que pertenezcan al mismo grupo o categoría.
TSNE funciona proyectando tus datos en un espacio de dos o tres dimensiones, lo que te permite verlos gráficamente. Los puntos que están cerca uno del otro en el espacio proyectado también estarán cerca uno del otro en tus datos originales, lo que te permite ver fácilmente cómo están relacionados.
Una de las principales ventajas de TSNE es que es muy bueno para visualizar datos de alta dimensionalidad, es decir, datos con muchas características o columnas. A menudo, es difícil visualizar estos datos usando gráficos tradicionales, pero TSNE los hace mucho más fáciles de entender.
TSNE se diferencia de otras técnicas de visualización de datos como PCA (Análisis de Componentes Principales) en que TSNE intenta preservar tanto la distancia como la similitud entre los puntos de datos mientras los proyecta en un espacio de menor dimensionalidad. PCA, por otro lado, solo se centra en la distancia entre los puntos. Esto significa que TSNE es especialmente útil para visualizar datos que tienen patrones complejos o relaciones no lineales.
Cómo usar TSNE en Python y R
Afortunadamente, usar TSNE es bastante fácil tanto en Python como en R. Los pasos que tienes que seguir son los siguientes:
1. Cargar las librerías necesarias
Empezamos instalando las librerías necesarias:
- TSNE: sklearn en Python y Rtsne en R.
- plotly: para visualizar los datos. Tanto en Python como R.
- Pandas: para análisis de datos. Solo lo necesitamos en Python.
- dslabs en R y mnist en Python: para poder usar los datos de MNIST.
Python
R
2. Cargar los datos
A continuación, cargamos los datos de MNIST. Este conjunto de datos consta de 60 mil imágenes en escala de grises de tamaño 28*28.
Python
R
3. Procesar los datos
Antes de ejecutar el algoritmo TSNE, vamos a normalizar los datos. Así, la distancia euclídea (distancia que usaremos como medida de similitud) no se ve afectado por valores muy alto. Al ser datos de imágenes, sus valores están entre 0 y 255. Al dividir entre el valor máximo, los nuevos datos se encontrarán entre 0 y 1.
Python
R
4. Aplicar TSNE
Una vez que hayamos cargado y normalizado los datos, aplicamos el algoritmo TSNE. Es muy sencillo aplicar el algoritmo tanto en Python como en R. Veamos:
Python
R
5. Visualizar
Y, ¡Listo!, ya tenemos los datos de 784 dimensiones reducidas a solo 2 dimensiones. Ahora usaremos plotly para visualizar los datos:
Python
R
Ajustando los parámetros de TSNE
Cuando utilizas TSNE para visualizar tus datos, hay varios parámetros que puedes ajustar para obtener diferentes resultados. Algunos de los parámetros más importantes son:
- n_components: Este parámetro determina el número de dimensiones en las que se proyectarán los datos. Por defecto, se establece en 2 para que los datos se proyecten en un espacio bidimensional, pero puedes ajustarlo a un número mayor si lo deseas.
- perplexity: Este parámetro determina el número de vecinos cercanos que tendrá cada punto de datos. Un mayor valor de perplexity significa que se tendrá en cuenta más vecinos y los datos serán más difusos. Un valor menor significa que se tendrá en cuenta menos vecinos y los datos serán más definidos.
- learning_rate: Este parámetro determina la velocidad a la que se optimiza el algoritmo. Un valor más alto significa que se realizarán más actualizaciones por iteración, pero también significa que el algoritmo puede saltearse algunos óptimos locales. Un valor más bajo significa que se realizarán menos actualizaciones por iteración, pero también significa que el algoritmo puede tardar más en converger.
- n_iter: Este parámetro determina el número de iteraciones que se realizarán durante el procesamiento de los datos. Un mayor valor significa que el algoritmo tendrá más oportunidades de optimizarse, pero también significa que el procesamiento puede tardar más tiempo.
En general, es recomendable comenzar con valores por defecto para estos parámetros y luego ajustarlos según sea necesario.
Además, es importante recordar que TSNE es un algoritmo iterativo y que los resultados pueden variar de una ejecución a otra. Esto significa que es recomendable ejecutar TSNE varias veces y comparar los resultados para asegurarse de que estás obteniendo una visualización adecuada.
Perplejidad
La perplejidad es un parámetro que se utiliza en el algoritmo TSNE para controlar la complejidad de la visualización final. Se refiere a la cantidad de vecinos que se tienen en cuenta para cada punto de datos durante el procesamiento de TSNE. Un valor de perplejidad más alto significa que se tienen en cuenta más vecinos y un valor más bajo significa que se tienen en cuenta menos vecinos.
La perplejidad tiene un impacto significativo en la calidad de la visualización final de TSNE. Por ejemplo, un valor de perplejidad alto puede preservar más la similitud local de los datos, mientras que un valor más bajo puede preservar más la similitud global. Esto significa que, dependiendo del valor de perplejidad que elijas, puedes obtener una visualización que muestre más detalles o una visualización más general y difusa.
El valor de perplejidad recomendable suele estar entre 5 y 50, aunque puede variar dependiendo del tamaño y la complejidad de tus datos. Si tienes un conjunto de datos grande y complejo, es posible que necesites aumentar el valor de perplejidad para que TSNE tenga en cuenta más vecinos y los datos sean más difusos. Si tienes un conjunto de datos pequeño y sencillo, es posible que necesites disminuir el valor de perplejidad para que TSNE tenga en cuenta menos vecinos y los datos sean más definidos. En general, es recomendable experimentar con diferentes valores de perplejidad para encontrar el que mejor se adapte a tus datos y tus necesidades.
Aquí tienes dos ejemplos de cómo cambia la visualización de TSNE al cambiar el valor de perplejidad en el conjunto de datos MNIST:
Perplejidad = 2:
En esta visualización, podemos ver que la perplejidad es muy baja y TSNE solo tiene en cuenta muy pocos vecinos para cada punto de datos. Como resultado, la visualización es muy detallada y podemos ver muchos patrones y detalles pequeños. Sin embargo, también podemos ver que hay mucho ruido y que algunos puntos de datos están muy alejados de sus vecinos similares.
Perplejidad = 100:
En esta visualización, podemos ver que la perplejidad es muy alta y TSNE tiene en cuenta muchos vecinos para cada punto de datos. Como resultado, la visualización es muy difusa y no podemos ver muchos patrones y detalles pequeños. Sin embargo, también podemos ver que hay menos ruido y que los puntos de datos están más cerca de sus vecinos similares.
Como puedes ver, el valor de perplejidad tiene un gran impacto en la calidad de la visualización de TSNE y es importante elegir un valor adecuado para tus datos y tus necesidades.
En la siguiente aplicación puedes probar con más parámetros y ver el resultado final (si falla, este es el enlace):
Ejemplos de uso de TSNE
TSNE es una herramienta increíblemente versátil que puedes utilizar para visualizar y analizar tus datos de muchas maneras diferentes. A continuación, te proporcionaré algunos ejemplos de cómo puedes usar TSNE para encontrar patrones interesantes en tus datos.
- Visualización de datos de alta dimensionalidad: Como mencioné anteriormente, TSNE es especialmente útil para visualizar datos de alta dimensionalidad, es decir, datos con muchas características o variables. Por ejemplo, puedes usar TSNE para visualizar un conjunto de datos de imágenes y ver cómo están relacionadas entre sí. Esto te puede ayudar a entender mejor tu conjunto de datos y a encontrar patrones interesantes.
- Clustering de datos: TSNE también puede ser útil para agrupar tus datos en diferentes clusters o grupos. Por ejemplo, puedes usar TSNE para visualizar un conjunto de datos de texto y ver cómo diferentes palabras están relacionadas entre sí. Esto te puede ayudar a entender mejor el contenido de tus datos y a encontrar palabras similares o relacionadas.
- Análisis de tópicos: TSNE también puede ser útil para el análisis de tópicos en textos. Por ejemplo, puedes usar TSNE para visualizar un conjunto de documentos y ver cómo diferentes tópicos están relacionados entre sí. Esto te puede ayudar a entender mejor el contenido de tus documentos y a encontrar tópicos similares o relacionados.
- Detección de anomalías: TSNE también puede ser útil para detectar anomalías o patrones anómalos en tus datos. Por ejemplo, puedes usar TSNE para visualizar un conjunto de datos de transacciones financieras y ver si hay algún patrón anómalo que indique actividad fraudulenta.
Conclusión
En conclusión, hemos aprendido que TSNE es un algoritmo de visualización de datos muy útil y versátil que nos permite encontrar patrones y relaciones interesantes en grandes conjuntos de datos. Hemos visto cómo funciona el algoritmo y cómo usarlo en Python y R, así como cómo ajustar sus parámetros para obtener diferentes resultados. También hemos visto algunos ejemplos de cómo utilizar TSNE para visualizar diferentes tipos de datos y encontrar patrones interesantes.
Si te ha interesado este tema y quieres profundizar más, te recomendamos los siguientes recursos adicionales:
- La página web oficial de TSNE: https://lvdmaaten.github.io/tsne/
- Cómo funciona TSNE: https://distill.pub/2016/misread-tsne/
Si has disfrutado leyendo esta publicación, ¡nos encantaría leer tus comentarios y saber qué otros temas te gustaría ver en el futuro! ¡Gracias por leer!