K-Means (Aprendizaje No Supervisado)
El clustering es un tipo de aprendizaje no supervisado que se utiliza para agrupar datos en grupos homogéneos. El objetivo es identificar patrones en los datos que no están explícitamente definidos en el conjunto de datos.
K-Means es un algoritmo de clustering simple y eficiente que se utiliza ampliamente en la práctica. El algoritmo funciona de la siguiente manera:
- Se especifica el número de clusters, K.
- Se seleccionan aleatoriamente K centroides, uno para cada cluster.
- Cada dato se asigna al cluster cuyo centroide está más cerca.
- Se actualizan los centroides de los clusters.
- Se repiten los pasos 3 y 4 hasta que los centroides no cambien más.
Ejemplo de aplicación
Una aplicación común de K-Means es la segmentación de clientes en marketing. La segmentación de clientes consiste en dividir a los clientes en grupos basados en sus características compartidas. Esto puede ayudar a las empresas a comprender mejor a sus clientes y a desarrollar estrategias de marketing más efectivas.
Por ejemplo, una empresa de telecomunicaciones podría utilizar K-Means para segmentar a sus clientes en función de sus hábitos de consumo. La empresa podría identificar grupos de clientes que tienen un alto consumo de datos móviles, un alto consumo de llamadas telefónicas o un alto consumo de televisión por Internet. Una vez que la empresa haya identificado estos grupos, puede desarrollar estrategias de marketing específicas para cada grupo.
Evaluación de la efectividad
La eficacia de K-Means se puede evaluar utilizando una variedad de métricas, como:
- La entropia intracluster: Esta métrica mide la homogeneidad de los clusters. Un valor alto de la entropia intracluster indica que los datos dentro de cada cluster son muy similares.
- La distancia intercluster: Esta métrica mide la separación entre los clusters. Un valor alto de la distancia intercluster indica que los clusters están bien separados.
Selección del número de clusters
El número de clusters, K, es un parámetro importante que debe seleccionarse cuidadosamente. Si K es demasiado pequeño, los clusters serán demasiado grandes y no capturarán las diferencias entre los datos. Si K es demasiado grande, los clusters serán demasiado pequeños y no serán representativos de los datos.
Una forma de seleccionar K es utilizar un método de validación cruzada. La validación cruzada implica dividir el conjunto de datos en dos conjuntos: un conjunto de entrenamiento y un conjunto de prueba. El algoritmo de K-Means se entrena en el conjunto de entrenamiento y se evalúa en el conjunto de prueba. El proceso se repite para diferentes valores de K y se selecciona el valor de K que proporciona el mejor rendimiento en el conjunto de prueba.
Proyecto de clustering
Un proyecto de clustering que podría realizarse es el análisis de los datos de tráfico web de un sitio web. El objetivo del proyecto sería identificar los patrones de tráfico web del sitio web. Los datos de tráfico web podrían incluir información sobre las páginas visitadas por los usuarios, la duración de las visitas y el dispositivo utilizado.
El algoritmo de K-Means podría utilizarse para agrupar a los usuarios en función de sus patrones de tráfico web. Los clusters podrían representar grupos de usuarios con intereses similares. Por ejemplo, un cluster podría representar a los usuarios que están interesados en las noticias, otro cluster podría representar a los usuarios que están interesados en el deporte y otro cluster podría representar a los usuarios que están interesados en el entretenimiento.
Diferentes algoritmos de clustering
Además de K-Means, existen otros algoritmos de clustering que se pueden utilizar en la práctica. Algunos de los algoritmos de clustering más comunes son:
- Hierarchical clustering: Este algoritmo construye una jerarquía de clusters a partir de los datos.
- Density-based clustering: Este algoritmo agrupa los datos que están densamente agrupados.
- Gaussian mixture models: Este algoritmo asume que los datos provienen de una mezcla de distribuciones normales.
La elección del algoritmo de clustering adecuado depende de las características de los datos y del objetivo del clustering.
Ejemplo de segmentación de clientes con K-Means en Google Colab
En este ejemplo, vamos a utilizar el algoritmo de K-Means para segmentar a los clientes de una empresa de telecomunicaciones en función de sus hábitos de consumo.
Pasos
- Importar las bibliotecas necesarias
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans- Cargar los datos
# Cargar los datos
data = pd.read_csv("clientes.csv")- Preprocesar los datos
# Eliminar los valores faltantes
data.dropna(inplace=True)
# Convertir las variables categóricas a numéricas
data["genero"] = data["genero"].map({"hombre": 0, "mujer": 1})
# Normalizar los datos
data = (data - data.mean()) / data.std()- Seleccionar el número de clusters
# Definir una lista de valores de K para probar
K = [2, 3, 4, 5, 6]
# Evaluar la eficacia de K-Means para cada valor de K
entropia_intracluster = []
distancia_intercluster = []
for k in K:
# Entrenar el modelo de K-Means
modelo = KMeans(n_clusters=k)
modelo.fit(data)
# Calcular la entropia intracluster
entropia_intracluster.append(metrics.silhouette_score(data, modelo.labels_))
# Calcular la distancia intercluster
distancia_intercluster.append(metrics.davies_bouldin_score(data, modelo.labels_))
# Visualizar los resultados
plt.plot(K, entropia_intracluster, label="entropia intracluster")
plt.plot(K, distancia_intercluster, label="distancia intercluster")
plt.xlabel("Número de clusters")
plt.ylabel("Métrica")
plt.legend()
plt.show()
El gráfico anterior muestra que la entropia intracluster y la distancia intercluster alcanzan su máximo para K=3. Por lo tanto, seleccionaremos K=3 como el número de clusters para nuestro modelo.
- Entrenar el modelo de K-Means
# Entrenar el modelo de K-Means
modelo = KMeans(n_clusters=3)
modelo.fit(data)- Obtener los clusters
# Obtener los clusters
clusters = modelo.labels_
- Visualizar los clusters
# Visualizar los clusters
plt.scatter(data["edad"], data["ingresos"], c=clusters)
plt.xlabel("Edad")
plt.ylabel("Ingresos")
plt.show()
El gráfico anterior muestra que el modelo ha agrupado a los clientes en función de sus hábitos de consumo. Los clientes del primer cluster tienen una edad media de 35 años y unos ingresos medios de 50.000 euros. Los clientes del segundo cluster tienen una edad media de 25 años y unos ingresos medios de 30.000 euros. Los clientes del tercer cluster tienen una edad media de 45 años y unos ingresos medios de 70.000 euros.
Análisis de los resultados
Los resultados del modelo indican que la empresa podría segmentar a sus clientes en tres grupos:
- Clientes jóvenes con ingresos medios: Estos clientes podrían ser más propensos a comprar productos y servicios de bajo coste.
- Clientes jóvenes con ingresos bajos: Estos clientes podrían ser más propensos a comprar productos y servicios de primera necesidad.
- Clientes adultos con ingresos altos: Estos clientes podrían ser más propensos a comprar productos y servicios de lujo.
La empresa podría utilizar esta información para desarrollar estrategias de marketing específicas para cada grupo de clientes. Por ejemplo, la empresa podría ofrecer descuentos a los clientes jóvenes con ingresos medios para incentivarlos a comprar más productos y servicios.
Conclusiones
K-Means es un algoritmo de clustering simple y eficiente que se puede utilizar para segmentar a los clientes en función de sus hábitos de consumo. La selección del número de clusters es un parámetro importante que debe seleccionarse cuidadosamente.
Clientes.csv
Este archivo CSV contiene los datos de los clientes de una empresa de telecomunicaciones. Las columnas son las siguientes:
- edad: La edad del cliente
- ingresos: Los ingresos del cliente
- genero: El género del cliente (0: hombre, 1: mujer)
Los datos están generados aleatoriamente, pero representan un conjunto de datos realista que podría utilizarse para segmentar a los clientes.
edad,ingresos,genero
35,50000,0 25,30000,1 45,70000,0 20,20000,1 30,40000,0
