Comprender el algoritmo de agrupamiento K-means en el aprendizaje automático
Agrupamiento K-means o algoritmo K-means o, algoritmo de agrupamiento K-means—bueno, antes de adentrarnos en qué son los algoritmos de agrupamiento, necesitamos entender lo esenciales que son para que las empresas modernas den sentido a los datos—datos sobre productos, datos sobre clientes, datos sobre transacciones, etc.
En un mundo donde la tecnología está redefiniendo el panorama empresarial, las empresas gastan millones de dólares analizando datos para desarrollar patrones que les ayuden a ser más eficientes y aumentar sus beneficios. Agrupar objetos en función de atributos es una de las primeras tareas involucradas en este proceso de creación de dichos patrones.
Agrupar objetos ayuda a las empresas a diseñar diversas estrategias para distintas situaciones. Clientes, productos y transacciones son objetos de interés central en estos procesos. Agrupar clientes en función de su comportamiento ayuda a las empresas a diseñar ofertas personalizadas. Agrupar productos les ayuda a ofrecer opciones alternativas a los clientes. Y agrupar transacciones les ayuda a identificar patrones inusuales que requieren una atención más cercana.
Aquí es donde entra en juego el agrupamiento. El agrupamiento es un algoritmo de aprendizaje automático (ML) no supervisado que agrupa objetos en función de atributos.
Este artículo completo de Zilliz, una empresa líder de base de datos vectorial para IA lista para producción, te llevará a fondo en qué consiste el algoritmo de agrupamiento K-means en el aprendizaje automático y cómo puedes implementarlo usando Python. También explorará cuándo usar el algoritmo de agrupamiento K-means y dará un ejemplo real de agrupamiento K-means.
¿Qué es el agrupamiento?
El agrupamiento es el proceso de agrupar puntos de datos de modo que cada elemento de un grupo particular sea más similar a los elementos de ese grupo que a los elementos de otros grupos. El agrupamiento no se refiere a un algoritmo específico. Es una tarea genérica que puede resolverse mediante muchos algoritmos. Los algoritmos de agrupamiento generalmente definen una métrica para cuantificar la similitud de manera sistemática. El agrupamiento se utiliza en muchos campos, como el procesamiento de imágenes, la recuperación de información, los motores de recomendación y la compresión de datos.
El agrupamiento establece la similitud en función de los atributos de los objetos que agrupa. Los atributos difieren según el dominio. Por ejemplo, en el caso de una imagen, los atributos son los valores de los píxeles. En el caso de un perfil de usuario, los atributos son detalles como la edad, el género y el historial de compras. En el caso de un producto, los atributos son la categoría, el color, el precio, etc. El agrupamiento se denomina una tarea no supervisada porque no hay un proceso de entrenamiento supervisado por el usuario que implique preparar datos etiquetados.
¿Cómo funcionan los algoritmos de agrupamiento?
La mayoría de los algoritmos de agrupamiento funcionan calculando la similitud entre todos los pares de muestras. Cada punto de datos se asigna al centroide más cercano en función de cálculos de distancia, lo cual es un paso fundamental en el proceso de agrupamiento.
La capacidad de escalar al volumen del conjunto de datos es un factor esencial que se debe considerar al decidir el algoritmo de agrupamiento para un problema. El tiempo de ejecución aumenta con el número de pares de elementos. En casos extremos, puede variar proporcionalmente al cuadrado del volumen de datos.
Cuatro enfoques del agrupamiento
Hay cuatro enfoques comunes del agrupamiento: basado en centroides, basado en densidad, jerárquico y basado en distribución. Veámoslos, uno por uno.
1. Agrupamiento basado en centroides
Este método organiza los puntos de datos en clústeres individuales sin ninguna jerarquía basada en el centroide de todos los puntos de datos del clúster. El centroide es el centro geométrico de un objeto. En palabras simples, es la media aritmética de todos los puntos que constituyen ese objeto en un espacio n-dimensional. Aquí, un clúster es una colección de puntos ubicados alrededor de un centroide. El agrupamiento basado en centroides presenta problemas relacionados con las asignaciones iniciales y los valores atípicos.
2. Agrupamiento basado en densidad
Como su nombre indica, calcula la densidad de puntos en un área y luego asigna puntos de datos a clústeres dondequiera que se encuentre una alta densidad. En este caso, los clústeres pueden adoptar cualquier forma. El agrupamiento basado en densidad enfrenta problemas cuando los datos tienen inherentemente una alta varianza en la densidad. No funciona bien cuando la dimensión de los datos es alta, ya que puede tener dificultades para distinguir entre clústeres y clústeres vecinos.
3. Agrupamiento jerárquico
Este método proporciona un árbol de clústeres con la posibilidad de que haya clústeres ubicados dentro de clústeres más grandes. Este método encaja bien cuando los datos presentan una jerarquía inherente. El agrupamiento jerárquico permite elegir cualquier número de clústeres diferentes después de la ejecución, ya que el analista puede dividir el árbol en el punto requerido y considerar solo los clústeres después de ese punto.
4. Agrupamiento basado en distribución
Este método utiliza el concepto de distribuciones de probabilidad para encontrar clústeres. Supone que la probabilidad de que un punto esté en un clúster disminuye cuando aumenta la distancia desde el centro del clúster. Los desarrolladores deben conocer la distribución de sus datos para usar este método de manera efectiva.
¿Qué es el agrupamiento K-means?
El algoritmo de agrupamiento K-means es un algoritmo de agrupamiento basado en centroides. Es un algoritmo de aprendizaje no supervisado, ya que no depende de datos etiquetados. La “K” en un algoritmo de agrupamiento K-means representa el número de clústeres.
K-means es un algoritmo iterativo que calcula la media o el centroide muchas veces antes de converger. El tiempo para converger depende de la asignación inicial y del número óptimo de clústeres utilizado. Generalmente, la complejidad temporal de K-means es
donde d es el número de dimensiones, k es el número de clústeres y n es el número de k clústeres de elementos de datos.
El algoritmo de agrupamiento K-means funciona calculando la distancia de cada elemento de datos desde el centro geométrico de un clúster. Luego reconfigura el clúster si encuentra un punto perteneciente a un clúster específico más cercano al centroide de otro clúster. Después de eso, vuelve a calcular el centroide del clúster y repite el proceso hasta que no haya más reasignación de clústeres.
Veamos cómo funciona el algoritmo.
¿Cómo funciona el algoritmo de agrupamiento K-means?
El algoritmo de agrupamiento K-means es un proceso iterativo que implica cuatro pasos principales. Para entender estos pasos, consideremos un problema de agrupamiento bidimensional. Supongamos que los puntos son (x1,y1),(x2,y2), y así sucesivamente. Comencemos con un tamaño de clúster de 2.
Asignación inicial
Este paso asigna cada punto a un clúster arbitrario. Una opción es asignar puntos aleatorios como centroides de clúster y calcular las distancias entre cada punto de datos y los centroides.
Los puntos se asignan al clúster cuyo centroide esté más cerca de ellos. La distancia entre dos clústeres se calcula utilizando la fórmula de distancia euclidiana. Por ejemplo, si x3,y3 es uno de los centroides asignados aleatoriamente, se puede calcular la distancia entre x1,y1 y x3,y3 utilizando esta fórmula:
Y vs. X
Y vs. X
Los puntos rojos y verdes indican las asignaciones iniciales aleatorias de centroides. Basándose solo en estos centroides iniciales de clúster, la asignación inicial de clústeres aparecerá como se muestra a continuación:
Y vs. X
Y frente a X
Cálculo de centroides
Este paso implica recalcular los centroides para cada clúster. El centroide de un clúster se calcula usando la media aritmética de todos los elementos de ese clúster. Por ejemplo, supongamos que x1,y1, x2,y2 y x3,y3 pertenecen a un clúster. El centroide de ese clúster se calcula como:
Los puntos con forma de diamante, como se muestra a continuación, se convierten en los nuevos centroides.
Y frente a X
Y frente a X
Reasignación de clústeres
Una vez que se encuentran nuevos centroides para los tres clústeres, se recalcula la distancia entre cada punto y los nuevos centroides. Si alguno de los puntos está ubicado más cerca del centroide de un clúster al que está asignado actualmente, los puntos se reasignan.
Y frente a X
Y frente a X
Convergencia
Después de la reasignación de clústeres, los centroides se calculan nuevamente y el proceso se repite. El cálculo de centroides y la reasignación de clústeres se ejecutan hasta que no haya más reasignaciones nuevas. La tarea de clustering convergida, en este caso, aparecerá como se muestra a continuación:
Y frente a X
Y frente a X
Elección del número de clústeres
Dos métodos comúnmente utilizados para elegir el número ideal de clústeres son el método del codo y el método de la silueta.
Método del codo
El método del codo calcula una métrica llamada WCSS (Within Cluster Sum of Squares). WCSS es la suma de los cuadrados de la distancia de cada punto desde el centroide de su clúster más cercano anterior. El gráfico de WCSS con respecto al número de clústeres se utiliza como indicación para seleccionar el número óptimo de clústeres.
Los desarrolladores ejecutan el clustering K-means para recuentos de clústeres de 1 a n y luego calculan WCSS para cada una de estas ejecuciones. WCSS será más alto para una ejecución con un solo clúster y disminuye cuando aumenta el número de clústeres. El punto donde WCSS muestra una curva pronunciada, como el codo de un brazo, se considera el número óptimo ideal de clústeres.
Método del codo
Método del codo
Método de la silueta
Este método intenta comprender el grado de similitud de un objeto con otros miembros del mismo clúster y el grado de separación de los objetos de otros clústeres. La puntuación de silueta para un punto se calcula combinando la distancia promedio de ese punto respecto a otros puntos en el clúster (a) y la distancia promedio de ese punto con todos los puntos que pertenecen a otros clústeres (b), incluidos los clústeres vecinos. Una vez que se encuentran a y b, la puntuación de silueta para un punto se calcula como
Luego se promedia la puntuación de cada punto para encontrar la puntuación de silueta. La puntuación se calcula para todos los candidatos del recuento óptimo y luego se selecciona como recuento óptimo aquel con los k puntos y la puntuación más alta.
Método de la silueta
Método de la silueta
Un ejemplo real del algoritmo de clustering K-means (Implementación de clustering K-means con Python)
Este tutorial demuestra cómo implementar clustering K-means usando Python y cómo encontrar el tamaño óptimo del clúster. Para hacer esto, supongamos un enunciado de problema común en el dominio del comercio electrónico. Agrupar clientes en clústeres según sus atributos demográficos y hábitos de gasto es una tarea común en el dominio del comercio electrónico. Para simplificar el ejemplo de clustering K-means, usaremos aquí dos atributos: la edad del cliente y el importe promedio gastado por mes.
- Para hacer esto, usemos una biblioteca de aprendizaje automático de Python llamada scikit-learn y una biblioteca de gráficos llamada matplotlib. Primero, inicializa las bibliotecas usando las instrucciones de importación dadas a continuación:
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette\_score
from sklearn.preprocessing import StandardScaler
- El siguiente paso es definir el marco de datos de entrada. Aquí, el primer atributo es la edad y el segundo atributo es el gasto mensual promedio en rupias indias (INR). Para simplificar, inicialicemos el arreglo en el propio código. Aquí tenemos 16 puntos de datos:
raw\_features = np.array([[22,200],[24,200],[24,200],[20,800],[24,800],[24,800],[25,200],[54,200],[24,200],[54,200],[50,800],[53,800],[24,800],[55,800],[53,800],[50,800]])
- Luego normalizarás los puntos de datos, de modo que la variación en un atributo no eclipse las variaciones en otros atributos.
scaler = StandardScaler()
features = scaler.fit\_transform(raw\_features)
- Implementa un bucle for para probar el clustering K-means con el número de clústeres variando de 2 a 6. Luego calcularemos la suma de cuadrados y la graficaremos frente al número de clústeres para identificar el número óptimo de clústeres.
sse = []
s\_scores=[]
for i in range(2,6):
kmeans = KMeans(init = **"random"** ,n\_clusters = i,n\_init = 10,max\_iter = 300,random\_state = 42)
kmeans.fit(features)
sse.append(kmeans.inertia\_)
s\_scores.append(silhouette\_score(features, kmeans.labels\_))
- Usa la biblioteca matplotlib para graficar la suma de cuadrados frente al número de clústeres.
plt.style.use( **"fivethirtyeight"** )
plt.plot(range(1, 6), sse)
plt.xticks(range(1, 6))
plt.xlabel( **"Number of Clusters"** )
plt.ylabel( **"SSE"** )
plt.show()
- Ejecutar el código anterior dará como resultado una gráfica que podemos usar para identificar el número óptimo de clústeres.
Clustering K-means
Algoritmo de clustering K-means
El diagrama de dispersión anterior muestra un 'codo' claro en 4. Por lo tanto, el número óptimo de clústeres aquí es 4. Con cierto conocimiento del dominio, un científico de datos puede explicar este número como cuatro combinaciones: clientes de baja edad y alto gasto, baja edad y bajo gasto, alta edad y alto gasto, y alta edad y bajo gasto. Pero tales explicaciones pueden no ser siempre posibles, y el número óptimo de clústeres varía según las especificaciones del problema.
Eso es todo lo que hay que hacer para ejecutar clustering K-means en Python. Los frameworks scikit-learn y matplotlib hacen que sea muy fácil usar clustering en Python.
Cuándo usar el algoritmo de clustering K-Means
Entonces, como hemos aprendido, el clustering es un algoritmo de aprendizaje automático no supervisado que ayuda a agrupar objetos según su similitud. Se usa ampliamente en muchos dominios de la industria para el análisis exploratorio de datos.
Es útil en áreas como la segmentación de clientes, los motores de recomendación y la búsqueda por similitud. Dicho esto, el algoritmo de clustering K-means no es la única técnica que puede usarse para resolver estos problemas. Otra forma de resolver un problema así es generar embeddings vectoriales para cada objeto en función de sus atributos.
Las redes de entrenamiento basadas en aprendizaje profundo pueden generar embeddings multidimensionales para objetos con una gran cantidad de atributos. Estos embeddings, junto con una buena base de datos vectorial, pueden resolver problemas basados en similitud con mucho mejor control.
Si estás trabajando en problemas de este tipo, echa un vistazo a Zilliz. Ofrece una solución integral para los desafíos de manejar datos no estructurados, especialmente para empresas que crean aplicaciones de IA/ML que aprovechan la búsqueda por similitud vectorial.
Zilliz creó Milvus, una popular base de datos vectorial de código abierto ampliamente reconocida por más de mil usuarios empresariales en todo el mundo. La empresa también ofrece un servicio de base de datos vectorial totalmente gestionado, Zilliz Cloud, que permite a las empresas experimentar toda la potencia de Milvus sin la molestia de crear y gestionar infraestructura.
Si quieres saber: ¿qué es una base de datos vectorial? - puedes consultar la guía detallada. ¿Buscas más información sobre temas relacionados? Consulta esta explicación de Búsqueda aproximada de vecinos más cercanos (ANNS). ¿Quieres aprender más sobre cómo Zilliz puede ayudarte? ¡Todo lo que tienes que hacer es hacer clic aquí y preguntar!
Sigue leyendo

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.



