Saltar al contenido
Introducción

El clustering o agrupamiento es una técnica de aprendizaje automático no supervisado que tiene como objetivo dividir un conjunto de datos en grupos o clústeres de objetos similares. El objetivo es maximizar la similitud entre los objetos dentro de cada grupo y minimizar la similitud entre los grupos. Existen diferentes métodos de clustering, siendo los más utilizados el k-means, el clustering jerárquico y el DBSCAN. Cada método tiene sus propias ventajas y desventajas dependiendo del tipo de datos y del número de clústeres esperado. El clustering se utiliza en diferentes áreas de aplicación, como la segmentación de clientes en marketing, la agrupación de elementos en redes sociales, la agrupación de genes en genética o en la clasificación de documentos en minería de texto, entre otros. En resumen, el clustering es una técnica útil y poderosa que permite explorar y comprender patrones en los datos no etiquetados de manera supervisada, lo que la hace muy relevante en la actualidad, donde tenemos grandes cantidades de datos sin etiquetar en diversas áreas de aplicación.

Resumen

Clustering (agrupamiento) es una técnica de aprendizaje automático no supervisado que se utiliza para agrupar conjuntos de objetos o datos similares en grupos o clústeres. Se basa en la idea de que los objetos similares deben agruparse en el mismo clúster y los objetos diferentes deben agruparse en diferentes clústeres. El objetivo del clustering es crear grupos homogéneos y heterogéneos a partir de un conjunto de datos no etiquetados. Esto significa que no hay una etiqueta predefinida que defina a qué grupo pertenece cada objeto. Hay diferentes algoritmos de clustering que se utilizan para categorizar los datos. El K-means es uno de los algoritmos de clustering más populares. El proceso de clustering implica los siguientes pasos:

  1. Seleccionar un número de clústeres (K) que se espera encontrar en el conjunto de datos.
  2. Inicializar los centroides de los clústeres seleccionando K puntos aleatorios del conjunto de datos.
  3. Asignar cada punto a su centroide más cercano.
  4. Recalcular la posición de los centroides.
  5. Repetir los pasos 3 y 4 hasta que los centroides ya no cambien.

El resultado del clustering es un conjunto de clústeres en los que los objetos similares se agrupan juntos. Este enfoque se utiliza para identificar patrones y relaciones en los datos, y puede ser útil para segmentar conjuntos de clientes en grupos específicos, detectar patrones en la genética, o incluso analizar las tendencias en las redes sociales. También puede ser utilizado para la recolección de datos, preparación para análisis y exploración de los conjuntos de datos.

Aplicación teórica

Un ejemplo práctico de clustering (agrupamiento) es cuando se quiere segmentar a los clientes de un supermercado de acuerdo a sus hábitos de compra. Se recopilan datos como las compras realizadas, el monto de la compra, la frecuencia de compra, entre otros. A partir de estos datos, se pueden utilizar algoritmos de clustering para agrupar a los clientes en diferentes segmentos de acuerdo a sus patrones de compra. Por ejemplo, se puede agrupar a los clientes que compran principalmente productos de limpieza y cuidado personal, a los clientes que compran alimentos frescos y a los clientes que compran principalmente productos de electrónica y tecnología. Estos grupos podrían ser útiles para que el supermercado pueda dirigir su publicidad de manera más específica a cada grupo y ofertar promociones que sean de interés para distintos segmentos de clientes.

Aplicación práctica

Un ejemplo práctico de clustering utilizando Python y la librería Scikit-learn.

Primero, importamos las librerías necesarias:


from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

Luego, generamos datos aleatorios para nuestro ejemplo utilizando la función make_blobs() de Scikit-learn que nos permite crear puntos en un espacio 2D pertenecientes a diferentes cluster:


X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

En este ejemplo, hemos generado 300 puntos en 4 cluster diferentes con una desviación estándar de 0.60. A continuación, visualizamos nuestros datos:


plt.scatter(X[:, 0], X[:, 1], s=50);
plt.show()

Para realizar el clustering, utilizaremos el algoritmo K-means que es uno de los más utilizados en este ámbito. Usaremos 4 cluster ya que conocemos de antemano que hemos generado nuestros datos con 4 cluster:


kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

Finalmente, visualizamos los resultados del clustering:


plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
plt.show()

Como se puede ver, los puntos han sido agrupados adecuadamente en sus respectivos cluster según el algoritmo K-means.