Aplicación Práctica: K-Means

0

 


Aplicación Práctica: K-Means Ambito de las Redes Sociales

Explicación del algoritmo de K-Means.

El algoritmo K-Means es un método de agrupamiento (clustering) muy utilizado en el aprendizaje no supervisado, una rama del aprendizaje automático. El objetivo del K-Means es dividir un conjunto de datos en grupos (o "clusters") de modo que los puntos de datos en el mismo grupo estén más cerca entre sí que los de otros grupos. Aquí está cómo funciona:

Inicialización: Selecciona K puntos al azar como los centros iniciales de los clusters, conocidos como centroides.

Asignación: Asigna cada punto de datos al centroide más cercano, basándose en la distancia euclidiana. Esto forma K clusters.

Actualización de Centroides: Calcula el centroide (punto medio) de cada cluster actualizando el centroide para que sea el promedio de todos los puntos de datos en el cluster.

Iteración: Repite los pasos 2 y 3 hasta que se cumpla alguno de los siguientes criterios: los centroides ya no cambian, la suma de las distancias al cuadrado de los puntos a sus centroides respectivos se minimiza, o se alcanza un número máximo de iteraciones.

Resultado: Al final del proceso, tendrás K clusters de puntos de datos similares y los centroides que representan el centro de estos clusters.

El algoritmo es simple pero poderoso, aunque tiene algunas limitaciones y suposiciones, como:

Necesita que el número de clusters (K) sea especificado de antemano.

Funciona mejor con clusters de forma esférica y de tamaño similar.

Puede ser sensible a los puntos de datos iniciales seleccionados.

Ahora, en términos de aplicaciones prácticas, K-Means se puede utilizar en diversas áreas como la segmentación del mercado, la organización de grandes bibliotecas de documentos, la compresión de imágenes, entre otras.

Ejemplo de aplicación

He creado un conjunto de datos sintético para el análisis de redes sociales. Este dataset incluye las siguientes características para cada usuario:

Edad: Rango de 18 a 70 años.

Número de Amigos: Rango de 50 a 1000 amigos.

Horas Diarias: Tiempo gastado en la red social por día, entre 0.5 y 8 horas.

Publicaciones por Semana: Número de publicaciones hechas por semana, entre 1 y 20.

Este archivo está en formato CSV y puedes descargarlo desde el siguiente enlace:

Dataset Analiss Redes Sociales- kmeans

Este dataset puede ser utilizado para aplicar K-Means u otros algoritmos de clustering, permitiendo explorar posibles agrupaciones o segmentaciones de usuarios basadas en su comportamiento en la red social. Por ejemplo, podrías encontrar grupos de usuarios con hábitos de uso similares, lo que podría ser útil para análisis de mercado, publicidad dirigida, o estudios de comportamiento social.

Evaluar la efectividad de un modelo de clustering como K-Means y seleccionar el número óptimo de clusters son pasos cruciales en el análisis de clustering. A continuación, describo dos métodos comunes para estas tareas:

1. Método del Codo (Elbow Method)

El Método del Codo se utiliza para determinar el número óptimo de clusters. Se basa en la idea de que al aumentar el número de clusters, la variación dentro de los clusters disminuye. Este método implica lo siguiente:

Calcular el algoritmo K-Means para un rango de valores de K (por ejemplo, de 1 a 10).

Para cada valor de K, calcular la suma total del cuadrado dentro de los clusters (WCSS).

Graficar la relación entre el número de clusters y la WCSS.

El "codo" en la gráfica, donde la reducción en WCSS comienza a disminuir, es una buena indicación del número óptimo de clusters.

2. Silhouette Score

El Silhouette Score es una medida de cuán similares son los objetos a su propio cluster en comparación con otros clusters. El rango del Silhouette Score es de -1 a 1, donde un valor alto indica que los objetos están bien emparejados con su propio cluster y mal emparejados con los vecinos. Si la mayoría de los objetos tienen un valor alto, entonces la configuración de clustering es adecuada. Si muchos puntos tienen un valor bajo o negativo, entonces el número de clusters podría ser incorrecto o simplemente el clustering no se aplica bien a tus datos.

Para aplicar estos métodos, primero necesitarás calcular K-Means para un rango de valores de K y luego calcular el Método del Codo y el Silhouette Score para cada uno de estos. Te mostraré cómo hacer esto con Python usando el conjunto de datos de redes sociales que generamos anteriormente.


Las gráficas muestran los resultados del Método del Codo y los Silhouette Scores para diferentes números de clusters (K) aplicados a nuestro conjunto de datos de redes sociales.

Método del Codo:

En la gráfica de la izquierda, se muestra la suma total del cuadrado dentro de los clusters (WCSS) para diferentes valores de K. Buscas un punto donde la disminución de WCSS empieza a aplanarse, indicando un equilibrio entre la compactación del cluster y el número de clusters. Este punto es el "codo".

Silhouette Scores:

La gráfica de la derecha muestra el Silhouette Score para cada K. Un valor más alto indica una mejor definición de los clusters. El mejor número de clusters se podría determinar buscando el valor de K que maximiza el Silhouette Score.

En conjunto, estas dos métricas pueden ayudarte a elegir el número óptimo de clusters para tus datos. Debes buscar un equilibrio entre un alto Silhouette Score y un punto razonable en el Método del Codo. A veces, estos métodos pueden dar resultados ligeramente diferentes, y la elección final puede depender de tu conocimiento específico del dominio y de los objetivos del análisis.

Codigo de Ejemplo

import os
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Establece la variable de entorno para evitar la fuga de memoria en Windows
os.environ['OMP_NUM_THREADS'] = '2'

# Carga del dataset
file_path = 'social_media_data.csv'
social_media_df = pd.read_csv(file_path)

# Normalización de los datos
scaler = StandardScaler()
scaled_features = scaler.fit_transform(social_media_df)

# Aplicación de K-Means con n_init establecido explícitamente
kmeans = KMeans(n_clusters=4, random_state=0, n_init=10)
kmeans.fit(scaled_features)
y_kmeans = kmeans.predict(scaled_features)

# Visualización de los resultados
plt.figure(figsize=(12, 8))
plt.scatter(scaled_features[:, 2], scaled_features[:, 3], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 2], centers[:, 3], c='red', s=200, alpha=0.5)
plt.xlabel('Horas Diarias (Normalizadas)')
plt.ylabel('Publicaciones por Semana (Normalizadas)')
plt.title("K-Means Clustering en Datos de Redes Sociales")
plt.show()


Conclusiones y reflexiones

La imagen mostrada muestra una visualización de un clustering realizado con el algoritmo K-Means sobre un conjunto de datos de redes sociales normalizado. Las conclusiones y reflexiones que se pueden obtener de esta gráfica son:

Distribución de los Clusters:

Los puntos están coloreados por cluster, lo que indica que el algoritmo K-Means ha encontrado una manera de separar los datos en grupos basándose en las características subyacentes.

Los puntos de colores similares (que representan los miembros de un mismo cluster) parecen estar relativamente cerca unos de otros, lo que sugiere que el algoritmo ha encontrado patrones cohesivos en los datos.

Centroides:

Los centroides (posiblemente representados por los puntos de mayor tamaño de color diferente o marcados de alguna forma) muestran el punto central de cada cluster. Estos puntos son clave porque representan el "usuario promedio" dentro de cada segmento en el espacio de las características seleccionadas.

Interpretación de Clusters:

Cada cluster puede representar un grupo distinto de usuarios de redes sociales basado en sus hábitos de publicación y tiempo pasado en la plataforma. Por ejemplo, un cluster podría representar usuarios activos que pasan mucho tiempo y publican frecuentemente, mientras que otro podría representar usuarios menos activos.

Potencial para Segmentación de Mercado:

Los clusters podrían ser útiles para diseñar campañas de marketing específicas o para entender mejor las diferencias en el comportamiento de los usuarios. Por ejemplo, un cluster con usuarios que pasan mucho tiempo en la red social pero no publican frecuentemente podría ser un target para incentivar más interacción.

Sobreajuste y Generalización:

Debemos tener cuidado de no sobreinterpretar los clusters o asumir que capturan toda la complejidad del comportamiento de los usuarios. El clustering es una simplificación y puede que no tome en cuenta todas las dimensiones importantes de los datos.

Validación de Resultados:

Es importante validar estos clusters con conocimiento de dominio o con información adicional. Por ejemplo, si se pueden correlacionar con métricas de engagement o conversiones, podríamos tener más confianza en la utilidad práctica de los clusters.

Consideraciones sobre la Calidad del Clustering:

Aunque visualmente los clusters parecen estar bien definidos, sería beneficioso corroborar esto con métricas cuantitativas como el Silhouette Score. Esto nos daría una medida de la calidad del clustering basada en cuán cerca están los puntos dentro de un cluster y cuán separados están de puntos en otros clusters.

Acciones Futuras:

Este análisis puede ser un punto de partida para una segmentación más profunda. Por ejemplo, podríamos investigar las diferencias demográficas o de intereses dentro de cada cluster.

También podría ser útil realizar un análisis de componentes principales (PCA) para reducir la dimensionalidad y quizás descubrir nuevas perspectivas de los clusters.

Relevancia del Número de Clusters:

La elección del número de clusters tiene un impacto significativo en los resultados. Es importante seleccionar un número de clusters que sea significativo para el caso de uso específico y que esté justificado por métodos de validación, como el Método del Codo y el Silhouette Score.

En resumen, la imagen proporciona una buena visualización de cómo los usuarios pueden ser agrupados en base a su comportamiento en las redes sociales. Esto puede ser muy valioso para las empresas y marcas que buscan adaptar sus estrategias de marketing y contenido a diferentes segmentos de la audiencia. Sin embargo, es crucial que estos resultados sean tomados como un punto de partida para una investigación más detallada, en lugar de conclusiones definitivas.


Sin comentarios