Aprenda sobre K-Means Clustering, un algoritmo clave de aprendizaje no supervisado para agrupar datos en clústeres. ¡Explore su proceso, aplicaciones y comparaciones!
K-Means Clustering es un algoritmo ampliamente utilizado en el campo del aprendizaje no supervisado diseñado para dividir de datos en subgrupos distintos que no se solapan. En el contexto más amplio del aprendizaje automático (AM), este método es esencial para descubrir patrones y estructuras ocultas en datos no etiquetados. El algoritmo funciona organizando los puntos de datos en un número $K$ de clusters, donde cada punto pertenece al cluster con la media más cercana, sirviendo como prototipo de grupo. Este enfoque ayuda a minimizar la varianza dentro de cada conglomerado, garantizando que los puntos de datos del mismo grupo sean lo más parecidos posible, a la vez que se mantiene la similitud entre ellos. grupo sean lo más parecidos posible, a la vez que se diferencian los distintos grupos.
El proceso de K-Means es iterativo y comienza con la selección de $K$ centroides iniciales, que actúan como puntos centrales de los conglomerados. de los conglomerados. Estos centroides pueden elegirse al azar o mediante técnicas de inicialización más inteligentes como inicialización k-means para mejorar la velocidad de convergencia. A continuación, el algoritmo procede a través de dos pasos primarios hasta que los resultados se estabilizan:
Este ciclo se repite hasta que los centroides dejan de moverse significativamente, lo que indica que el algoritmo ha convergido. Determinar el número óptimo de conglomerados es una parte crítica del proceso, que a menudo se consigue utilizando técnicas como el método del codo o analizando la puntuación de silueta para medir la distancia de separación entre los conglomerados resultantes.
K-Means Clustering es versátil y encuentra utilidad en varias industrias para minería de datos y tareas de análisis.
Mientras que los detectores de objetos modernos como Ultralytics YOLO11 a menudo utilizan técnicas de regresión avanzadas o cabezas sin anclaje, K-Means desempeñó un papel fundamental en la evolución de los modelos de detección. Las iteraciones anteriores, como YOLOv2 a YOLOv5, utilizaban agrupaciones de K-Means en las dimensiones de los recuadros delimitadores del conjunto de datos COCO. del conjunto de datosCOCO para determinar las cajas de anclaje óptimas. óptimos. Estos anclajes precalculados Estas anclas precalculadas proporcionaron al modelo unas mejores bases para predecir las formas de los objetos, lo que mejoró significativamente la estabilidad del entrenamiento y la recuperación.
Es habitual confundir K-Means con K-Nearest Neighbors (KNN), pero sirven para fines fundamentalmente diferentes.
Otro concepto relacionado es DBSCAN, que agrupa en función de la densidad y no de la distancia a un punto central. A diferencia de K-Means, DBSCAN no requiere que se especifique de antemano el número de conglomerados. que se especifique de antemano el número de conglomerados y maneja mejor los valores atípicos.
El siguiente ejemplo Python muestra cómo utilizar K-Means para agrupar colores de píxeles, un paso común de preprocesamiento de datos en tareas de visión. preprocesamiento de datos en tareas de visión.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")