Clustering (o agrupamiento) es una técnica de aprendizaje no supervisado que se utiliza para descubrir grupos ocultos dentro de un conjunto de datos.
En palabras simples: es el arte de encontrar grupos de cosas que se parecen entre sí, sin saber de antemano cuántos grupos hay, ni cuáles deberían ser.
📦 ¿Qué tipo de problema resuelve?
Supón que tienes muchos datos de clientes pero no sabes cómo clasificarlos. El clustering los agrupa automáticamente en segmentos que comparten características similares.
Por ejemplo:
- Clientes con ingresos parecidos y edad similar.
- Productos que se venden juntos.
- Usuarios que navegan de formas similares.
🎯 ¿Para qué se usa?
- Segmentación de clientes (marketing)
- Detección de patrones o comportamientos similares
- Agrupar documentos, imágenes o sonidos
- Reducir complejidad en grandes datasets
- Preprocesamiento para modelos supervisados
🧠 ¿Cómo funciona?
Los algoritmos de clustering buscan agrupar puntos cercanos entre sí en el espacio de datos. Cada grupo se llama cluster.
No hay etiquetas ni categorías predeterminadas. El algoritmo se basa en:
- Distancias (similitud)
- Densidad
- Distribución natural de los puntos
🔧 Tipos populares de Clustering:
Algoritmo | ¿Cómo agrupa? | Ideal para… |
---|---|---|
K-Means | Agrupa por cercanía a un centroide | Grupos bien separados y esféricos |
DBSCAN | Agrupa por densidad de puntos | Datos con ruido y formas irregulares |
Hierarchical | Crea una estructura de árbol de agrupaciones | Análisis jerárquico de datos |
Mean Shift | Encuentra “picos” de densidad | Clusters sin forma predefinida |
📉 ¿Cómo evaluar un buen clustering?
- Inercia (K-Means)
- Silhouette score: qué tan bien definido está cada grupo
- Visualización 2D o 3D (a veces usando PCA)
- Conocimiento del dominio (sentido del grupo)
🧑💻 Ejemplo práctico en Python (con K-Means)
from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt
# Dataset simple
data = pd.DataFrame({
'edad': [20, 21, 22, 40, 41, 42, 60, 61, 62],
'ingreso': [1000, 1100, 1050, 3000, 3200, 3100, 7000, 7100, 6900]
})
# Aplicar K-Means
modelo = KMeans(n_clusters=3, random_state=42)
data['cluster'] = modelo.fit_predict(data)
# Visualizar
plt.scatter(data['edad'], data['ingreso'], c=data['cluster'], cmap='Set1')
plt.xlabel("Edad")
plt.ylabel("Ingreso")
plt.title("Clustering de personas")
plt.show()
🧩 Resumen final
Concepto | Explicación simple |
---|---|
¿Qué es? | Una técnica para encontrar grupos ocultos |
¿Supervisado? | ❌ No, es no supervisado |
¿Qué produce? | Etiquetas de grupo asignadas automáticamente |
¿Cuándo usarlo? | Cuando no tienes etiquetas y quieres descubrir patrones |
¿Cómo agrupa? | Por similitud, densidad o jerarquía |