Tutorial de t-SNE

Después de hacer un análisis descriptivo datos, complete los espacios en blanco y seleccione las primeras columnas. Es importante continuar con la reducción de dimensiones, para ello, este tutorial sobre t-SNE presenta la reducción de dimensiones mediante análisis no lineal.

Tutorial de t-SNE

La mayoría de los conjuntos de datos del mundo real tienen muchas características, a veces varios miles. Cada uno de ellos se puede considerar como una dimensión en el espacio de los puntos de datos. Por lo tanto, la mayoría de las veces tratamos con conjuntos de datos de alta dimensión, donde la visualización completa es bastante difícil.

Para ver un conjunto de datos como un todo, necesitamos reducir la cantidad de dimensiones utilizadas en la visualización sin perder mucha información sobre los datos. Esta tarea se llama reducción de dimensionalidad y es un ejemplo de un problema de aprendizaje no supervisado porque tenemos que derivar nuevas características de baja dimensión de los datos mismos, sin ninguna entrada supervisada.

Uno de los métodos más conocidos de reducción de la dimensionalidad es el análisis de componentes principales (PCA), que exploraremos más adelante en este curso. Su limitación es que es un algoritmo lineal lo que implica algunas restricciones en los datos.

También hay muchos métodos no lineales, denominados colectivamente aprendizaje múltiple. Uno de los más conocidos es el t-SNE, de ahí este tutorial de t-SNE 🙂

El nombre del método suena complejo y un poco intimidante: incrustación de vecinos estohasticos distribuidos en t. Su Matemáticas también son impresionantes (no nos detendremos en eso aquí, pero, si te sientes valiente, aquí tienes el artículo original de Laurens van der Maaten y Geoffrey Hinton de JMLR).

Su idea básica es simple: encontrar una proyección para un espacio de características de alta dimensión en un plano (o un hiperplano 3D, pero casi siempre es 2D) tal que los puntos que estaban muy separados en el espacio inicial en n dimensiones terminarán muy lejos. aparte en el avión. Aquellos que originalmente estaban cerca permanecerán cerca el uno del otro.

Esencialmente, la incrustación de vecinos es una búsqueda de una nueva representación de datos menos dimensional que preserva la vecindad de los ejemplos.

Representación de t-SNE

Ahora vamos a practicar un poco. Primero, necesitamos importar clases adicionales:

de sklearn.manifold importar TSNE
de sklearn.preprocessing importar StandardScaler

Dejaremos de lado las características Estado y Churn y convertiremos los valores "Sí"/"No" de características binarias a valores numéricos usando pandas.Series.map():

X = gl.soltar(['Abandono', 'Estado'], eje=1)
X['Plan internacional'] = X['Plan internacional'].
mapa({'Sí': 1, 'No': 0})
X['Plan de correo de voz'] = X['Plan de correo de voz'].
mapa({'Sí': 1, 'No': 0})

También necesitamos normalizar los datos. Para ello, restaremos la media de cada variable y la dividiremos por su desviación estándar. Todo esto se puede hacer con StandardScaler.

escalador = StandardScaler()
X_scaled = escalador.encajar_transformar(X)

Construyamos ahora una representación t-SNE:

%%tiempo tsne = TSNE(estado_aleatorio=17)
tsne_repr = tsne.encajar_transformar(X_escala)
Tiempos de CPU: usuario 1 min 32 s, sys: 7,86 s, total: 1 min 39 s
Tiempo de pared: 1min 39s

Coloreemos esta representación del t-SNE según el churn (verde para los clientes fidelizados y rojo para los que se han ido).

por favordispersión(tsne_repr[:, 0], tsne_repr[:, 1], 
c=df['Churn'].map({Falso: 'verde', Verdadero: 'rojo'}));
Tutorial de t-SNE Tutorial de t-SNE

Podemos ver que los clientes que rechazaron se concentran en unas pocas áreas del espacio de características de menor dimensión.

Multi-t-SNE

Para entender mejor la imagen, también podemos colorearla con las funciones binarias restantes: Plan Internacional y Correo de Voz. Los puntos verdes aquí indican objetos que son positivos para la característica binaria correspondiente.

_, ejes = plt.subplots(1, 2, sharey=True, figsize=(12, 5))para i, nombre en enumerate(['Plan internacional', 'Plan de correo de voz']):
ejes[i].dispersión(tsne_repr[:, 0], tsne_repr[:, 1],
c=df[nombre].mapa({'Sí': 'verde', 'No': 'rojo'}))
ejes[i].set_title(nombre)
Tutorial de t-SNE Tutorial de t-SNE

Sin embargo, está claro que, por ejemplo, muchos clientes insatisfechos que han cancelado su suscripción se amontonan en el grupo más al sudoeste que representa a las personas con el plan internacional pero sin correo de voz.

Desventajas de t-SNE

Finalmente, notemos algunas desventajas en este tutorial de t-SNE:

Grande complejidad Cálculo. Es poco probable que la implementación en scikit-learn sea factible en una tarea real. Si tiene una gran cantidad de muestras, debería probar Multicore-TSNE en su lugar.

La trama puede cambiar mucho dependiendo de la semilla aleatoria, lo que complica la interpretación. Aquí hay un buen tutorial sobre t-SNE. En general, no debe sacar conclusiones de gran alcance basadas en dichos gráficos, ya que pueden ser meras conjeturas. Por supuesto, algunos hallazgos en las imágenes t-SNE pueden inspirar una idea y ser confirmados por más investigaciones en el futuro, pero eso no sucede muy a menudo.

Compartir, repartir