Introducción
En el mundo del machine learning y el análisis de datos, los algoritmos de clustering son herramientas fundamentales para descubrir patrones ocultos. Nos ayudan a agrupar elementos similares sin necesidad de tener etiquetas previas.
Dos de los algoritmos de clustering más conocidos son K-Means y Gaussian Mixture Models, también llamados GMM. Ambos buscan agrupar datos, pero lo hacen con enfoques muy distintos.
K-Means trabaja con centroides y distancias. GMM trabaja con probabilidades y distribuciones gaussianas. Esa diferencia cambia mucho la forma en que cada algoritmo interpreta los datos, el tipo de clusters que puede detectar y la facilidad con la que podemos explicar sus resultados.
Idea clave
K-Means asigna cada punto a un único grupo. GMM permite asignaciones probabilísticas, donde un punto puede pertenecer parcialmente a varios grupos.
¿Qué es K-Means?
K-Means es uno de los algoritmos de clustering más populares en machine learning. Su objetivo es dividir un conjunto de datos en K clusters, procurando que los puntos dentro de cada grupo sean similares entre sí.
El algoritmo funciona de forma iterativa. Primero selecciona centroides iniciales, después asigna cada punto al centroide más cercano, recalcula los centroides con el promedio de los puntos asignados y repite el proceso hasta que los grupos se estabilizan.
K-Means es rápido, fácil de implementar y muy útil cuando los clusters son relativamente compactos, separados y con formas parecidas. Por eso se usa mucho en segmentación de clientes, exploración inicial de datos, agrupación de documentos y compresión de imágenes.
Su principal limitación es que asume clusters más o menos esféricos y de tamaño similar. Cuando los grupos tienen formas alargadas, se traslapan o tienen varianzas distintas, K-Means puede producir agrupaciones poco representativas.
Si quieres una explicación más detallada sobre este algoritmo, puedes revisar el artículo dedicado a K-Means, donde explico su funcionamiento con mayor profundidad.
Ejemplo práctico de K-Means
En este ejemplo generamos tres grupos de datos sintéticos y aplicamos K-Means con
scikit-learn.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Generar datos sintéticos
np.random.seed(42)
X = np.vstack([
np.random.normal(loc=0.0, scale=1.0, size=(100, 2)),
np.random.normal(loc=5.0, scale=1.0, size=(100, 2)),
np.random.normal(loc=10.0, scale=1.0, size=(100, 2))
])
# Aplicar K-Means
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
# Visualizar clusters
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap="viridis")
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c="red", s=200, alpha=0.75)
plt.title("Clusters generados por K-Means")
plt.show()
¿Qué es Gaussian Mixture Models?
Gaussian Mixture Models, o GMM, es un enfoque probabilístico para clustering. En lugar de asumir que cada punto pertenece por completo a un solo cluster, GMM calcula la probabilidad de que un punto pertenezca a cada componente gaussiano.
Esto significa que GMM modela los datos como una mezcla de distribuciones normales. Cada distribución tiene su propia media, covarianza y peso. Gracias a esto, puede representar clusters con formas elípticas, tamaños diferentes o mayor traslape entre grupos.
En términos prácticos, GMM es más flexible que K-Means. En vez de decir “este punto es del cluster 1”, puede decir “este punto tiene 70% de probabilidad de pertenecer al cluster 1 y 30% al cluster 2”.
Ejemplo práctico de GMM
En el siguiente ejemplo generamos datos con formas elípticas. Este tipo de distribución puede ser difícil para K-Means, pero GMM puede adaptarse mejor porque considera covarianzas y probabilidades.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
# Generar datos sintéticos con formas elípticas
np.random.seed(42)
X = np.vstack([
np.random.normal(loc=[0.0, 0.0], scale=[1.5, 0.5], size=(100, 2)),
np.random.normal(loc=[5.0, 5.0], scale=[1.0, 2.0], size=(100, 2)),
np.random.normal(loc=[10.0, 0.0], scale=[0.5, 1.5], size=(100, 2))
])
# Aplicar Gaussian Mixture Model
gmm = GaussianMixture(n_components=3, random_state=42)
gmm.fit(X)
y_gmm = gmm.predict(X)
# Visualizar clusters
plt.scatter(X[:, 0], X[:, 1], c=y_gmm, s=50, cmap="viridis")
plt.title("Clusters generados por Gaussian Mixture Models")
plt.show()
Esta flexibilidad tiene un costo: GMM suele ser más complejo, más sensible a supuestos estadísticos y más exigente computacionalmente. A cambio, ofrece una representación más rica cuando los datos no encajan bien con clusters esféricos.
¿Qué es Expectation-Maximization y cómo ayuda a GMM?
GMM ajusta sus distribuciones gaussianas mediante un algoritmo llamado Expectation-Maximization, normalmente abreviado como EM. Este algoritmo busca estimar los parámetros de las gaussianas que mejor explican los datos observados.
El proceso se divide en dos pasos que se repiten hasta converger: Expectation y Maximization.
1. Expectation
En la fase de Expectation, el algoritmo calcula qué tan probable es que cada punto pertenezca a cada componente gaussiano. A estas probabilidades se les suele llamar responsabilidades.
Esta fase permite manejar incertidumbre. Si un punto se encuentra en una zona donde dos clusters se traslapan, el modelo no tiene que asignarlo de manera tajante a un solo grupo; puede repartir su pertenencia de forma probabilística.
2. Maximization
En la fase de Maximization, el algoritmo actualiza los parámetros de las gaussianas: medias, covarianzas y pesos. El objetivo es maximizar la probabilidad de que los datos hayan sido generados por esa mezcla de distribuciones.
Después de actualizar los parámetros, el algoritmo vuelve a calcular responsabilidades. Este ciclo continúa hasta que los cambios entre iteraciones son pequeños.
Gracias a EM, GMM puede modelar datos más complejos que K-Means. Sin embargo, también puede ser más lento y requerir más cuidado al elegir el número de componentes, la covarianza y la inicialización.
Comparación directa: K-Means vs Gaussian Mixture Models
Tanto K-Means como GMM son algoritmos útiles, pero no resuelven exactamente el mismo tipo de problema. La elección depende de la forma de los datos, la necesidad de interpretabilidad, el costo computacional y el objetivo del análisis.
K-Means
- Asignación dura: cada punto pertenece a un cluster.
- Basado en distancias a centroides.
- Rápido, simple y fácil de explicar.
- Funciona mejor con clusters compactos y esféricos.
- Puede ser sensible a outliers e inicialización.
GMM
- Asignación probabilística.
- Basado en mezcla de gaussianas.
- Más flexible para formas elípticas.
- Permite estimar incertidumbre de pertenencia.
- Mayor costo computacional y mayor complejidad.
1. Método de agrupación
K-Means agrupa los datos según la distancia euclidiana entre puntos y centroides. Cada punto se asigna al centroide más cercano. Es un método directo y determinista.
GMM agrupa los datos según probabilidades. Cada cluster se modela como una distribución gaussiana, y cada punto tiene una probabilidad de pertenecer a cada componente.
2. Forma de los clusters
K-Means tiende a funcionar bien cuando los clusters son compactos, esféricos y de tamaño parecido. Cuando los grupos tienen formas alargadas o se traslapan, puede fallar.
GMM puede manejar formas elípticas y distribuciones con varianzas distintas, porque considera la covarianza de cada componente.
3. Complejidad computacional
K-Means suele ser más rápido y escalable. Por eso es común usarlo como primer enfoque para exploración de datos.
GMM requiere ajustar más parámetros y ejecutar EM, por lo que puede ser más costoso. Aun así, puede valer la pena cuando necesitas una modelación probabilística más precisa.
4. Interpretabilidad
K-Means es fácil de explicar: cada grupo tiene un centroide y cada punto pertenece al centroide más cercano.
GMM ofrece una interpretación más rica, pero también más compleja: cada punto tiene probabilidades de pertenencia, y cada cluster se describe con una distribución.
5. Elección del número de clusters
Ambos métodos requieren definir el número de grupos o componentes. En K-Means se suele usar el método del codo o el silhouette score. En GMM también pueden utilizarse criterios como BIC o AIC para comparar modelos con distinto número de componentes.
¿Cuándo usar K-Means y cuándo usar GMM?
Una forma práctica de decidir es observar la geometría de tus datos y el objetivo del análisis. Si necesitas rapidez, simplicidad e interpretabilidad, K-Means suele ser un excelente punto de partida.
Si los clusters parecen tener formas elípticas, se traslapan o quieres medir la incertidumbre de pertenencia, GMM puede darte una lectura más adecuada.
Regla práctica
Usa K-Means cuando necesites una segmentación simple y rápida. Considera GMM cuando la forma de los datos sea más compleja o cuando la probabilidad de pertenencia aporte valor al análisis.
Casos donde K-Means suele funcionar bien
- Segmentación inicial de clientes.
- Agrupación rápida de datos grandes.
- Clusters compactos y bien separados.
- Casos donde necesitas explicar resultados de forma sencilla.
Casos donde GMM puede ser mejor opción
- Clusters elípticos o con diferentes varianzas.
- Datos con traslape entre grupos.
- Modelos donde importa la incertidumbre de pertenencia.
- Análisis probabilístico de distribuciones.
Conclusión
K-Means y Gaussian Mixture Models son dos herramientas fundamentales para clustering, pero responden a necesidades distintas. K-Means es simple, rápido e interpretable. GMM es más flexible, probabilístico y adecuado para datos con estructuras más complejas.
No existe un algoritmo universalmente mejor. La elección depende de tus datos, del objetivo del análisis, del tiempo de cómputo disponible y del nivel de explicación que necesitas.
Para problemas simples y bien separados, K-Means puede ser suficiente. Para escenarios con traslape, formas elípticas o necesidad de probabilidades, GMM puede ofrecer una lectura más precisa.
Una buena práctica es probar ambos enfoques, visualizar los resultados y apoyarte en métricas como silhouette score, BIC o AIC para tomar una decisión mejor fundamentada.
Recursos adicionales
Citación
Cita este artículo
APA
MLA
BibTeX
¿Tienes una idea?
Si este tema te interesa, podemos convertirlo en un proyecto real.
Puedo ayudarte a segmentar clientes, analizar datos no etiquetados, comparar algoritmos de clustering o construir dashboards que expliquen patrones ocultos de forma clara.
Platícame tu idea