Publicado: 26 de junio de 2024
Colaboradores: Eda Kavlakoglu, Vanna Winland
K-means clustering es un algoritmo de aprendizaje no monitorear que se emplea para la agrupación de datos , que agrupa puntos de datos no etiquetados en grupos o clústeres.
Es uno de los métodos de agrupación más populares utilizados en el machine learning. A diferencia del aprendizaje supervisado, los datos de entrenamiento que utiliza este algoritmo no están etiquetados, lo que significa que los puntos de datos no tienen una estructura de clasificación definida.
Si bien existen varios tipos de algoritmos de agrupamiento, incluidos los exclusivos, superpuestos, jerárquicos y probabilísticos, el algoritmo de clustering k-means es un ejemplo de un método de clustering exclusivo o “duro”. Esta forma de agrupación estipula que un punto de datos puede existir en un solo clúster. Este tipo de análisis de clústeres se usa comúnmente en la ciencia de datos para la segmentación del mercado, la agrupación de documentos, la segmentación de imágenes y la compresión de imágenes. El algoritmo k-means es un método ampliamente empleado en el análisis de conglomerados porque es eficiente, eficaz y sencillo.
K-means es un algoritmo de agrupamiento iterativo basado en centroides que divide un conjunto de datos en grupos similares en función de la distancia entre sus centroides. El centroide, o centro del clúster, es la media o la mediana de todos los puntos dentro del clúster, según las características de los datos.
Conozca las barreras para la adopción de IA, en particular la falta de soluciones de gobernanza y gestión de riesgos de IA.
Regístrese para obtener la guía sobre modelos fundacionales
La agrupación en clústeres de K-means es un proceso iterativo para minimizar la suma de distancias entre los puntos de datos y sus centroides de clúster.
El algoritmo de agrupamiento de medias k funciona categorizando puntos de datos en clústeres utilizando una medida matemática de distancia, generalmente euclidiana, desde el centro del clúster. El objetivo es minimizar la suma de distancias entre los puntos de datos y sus clústeres asignados. Los puntos de datos más cercanos a un centroide se agrupan dentro de la misma categoría. Un valor k más alto, o el número de conglomerados, significa conglomerados más pequeños con mayor detalle, mientras que un valor k más bajo da lugar a conglomerados más grandes con menos detalle.
El algoritmo convencional de clustering k-means requiere algunos pasos. El primer paso es inicializar k centroides donde k es igual al número de clústeres elegidos para un conjunto de datos específico. Este enfoque utiliza métodos de selección aleatoria o muestreo centroide inicial.
El siguiente paso incluye un proceso iterativo de dos etapas basado en el algoritmo de machine learning de maximización de expectativas.1 El paso de expectativa asigna cada punto de datos a su centroide más cercano en función de la distancia (de nuevo, normalmente euclídea). El paso de maximización calcula la media de todos los puntos de cada conglomerado y reasigna el centro del conglomerado, o centroide. Este proceso se repite hasta que las posiciones de los centroides hayan alcanzado la convergencia o se haya alcanzado el número máximo de iteraciones.
El agrupamiento de medias K es simple pero sensible a las condiciones iniciales y los valores atípicos. Es importante optimizar la inicialización del centroide y el número de clústeres k, para lograr los clústeres más significativos. Hay varias formas de evaluar y optimizar los componentes de agrupación del algoritmo mediante el uso de métricas de evaluación y métodos de muestreo de centroide inicial.
Los clústeres de calidad contienen al menos dos propiedades:
Estas propiedades se logran minimizando la distancia dentro del clúster y maximizando la distancia entre clústeres de todos los puntos de datos en un conjunto de datos. En otras palabras, cuanto más compacto y aislado esté un clúster de otros clústeres, mejor. El objetivo del algoritmo de agrupamiento k-means es minimizar la suma de errores cuadráticos (SSE).2 Calcular el SSE de la distancia euclidiana al cuadrado de cada punto a su centroide más cercano evalúa la calidad de las asignaciones de clústeres midiendo la variación total dentro de cada clúster.
Las métricas de evaluación de clústeres verifican la calidad y proporcionan diferentes perspectivas para analizar los resultados de la agrupación. Esto ayuda a seleccionar el número óptimo de clústeres y la inicialización del centroide. Las siguientes métricas de evaluación son formas comunes de medir las distancias dentro y entre clústeres en la agrupación.
El algoritmo de agrupación k-means tiene como objetivo elegir los centroides, o centros de agrupación, que minimicen la inercia, una métrica de evaluación que mide lo bien que se agrupó un conjunto de datos basar en métricas de distancia. La inercia se calcula midiendo la distancia entre un punto de datos y su centroide, elevando la distancia al cuadrado y sumando esos cuadrados para cada punto de datos del conglomerado. La suma o valor inercial es la distancia intracluster. Cuanto menor sea la suma, mejor, porque significa que los puntos de datos dentro del clúster son compactos o más similares.3
La segunda propiedad se mide con el índice de Dunn. El índice de Dunn representa la relación entre la distancia mínima entre clústeres y la distancia máxima dentro de clústeres. Los clústeres con una distancia entre clústeres alta indican una mejor calidad porque significa que los clústeres son tan diferentes entre sí como sea posible.4
La optimización es importante cuando se emplea k-means para lograr los mejores resultados de agrupación.
El algoritmo k-means no es determinista debido a su paso de inicialización aleatoria. Este método implica que si el algoritmo se realiza dos veces en datos idénticos, las asignaciones del clúster pueden diferir. Para lograr resultados óptimos de clustering, seleccionar adecuadamente los centroides iniciales y el número óptimo de clústeres mejora la precisión y la velocidad del algoritmo k-means.
Cada grupo está representado por un centroide, un punto de datos que representa el centro del grupo. K-means agrupa puntos de datos similares en grupos minimizando la distancia entre los puntos de datos de un grupo con su centroide o valor medio k. El objetivo principal del algoritmo k-means es minimizar las distancias totales entre los puntos y su centroide de grupo asignado. El algoritmo funciona de forma iterativa y la selección de la partición inicial puede tener un gran impacto en los clústeres resultantes.
La inicialización aleatoria corre el riesgo de producir resultados incoherentes. Existen métodos de inicialización de centroides para mitigar estos riesgos. Un estudio de NUS Computing explica y compara métodos como el popular k-means++ con la inicialización aleatoria.5
K-means++ es un algoritmo k-means que optimiza la selección del centroide o centroides iniciales del clúster. Desarrollado por los investigadores Arthur y Vassilvitskii, k-means++ mejora la calidad de la asignación final del clúster.6
El primer paso para la inicialización mediante el método de medias k++ es elegir un centroide del conjunto de datos. Para cada centroide subsiguiente, calcule la distancia de cada punto de datos desde su centro de clúster más cercano. El siguiente centroide se selecciona teniendo en cuenta la probabilidad de que un punto se encuentre a una distancia proporcional del centroide más cercano elegido anteriormente. El proceso ejecuta iteraciones hasta que se haya inicializado el número elegido de centros de clúster.
Este es un tutorial de IBM Developer que emplea el método k-means++ para la inicialización.
Idealmente, el algoritmo de medias k itera hasta alcanzar el número óptimo de conglomerados. El número máximo de iteraciones se alcanza una vez que los centroides han logrado la convergencia.
Un método para lograr el número óptimo de clústeres es el método del codo. El método del codo es un método gráfico para encontrar el número óptimo de clústeres dentro de un algoritmo de agrupamiento k-means. Mide la distancia euclidiana entre cada punto de datos y su centro de clúster y elige el número de clústeres en función de dónde se nivela el cambio en la "suma de cuadrados dentro del clúster" (WCSS). Este valor representa la varianza total dentro de cada clúster que se traza frente al número de clústeres.7
El primer paso del método del codo es calcular el WCSS para cada grupo (k). A continuación, el valor del WCSS se traza en el eje Y y el número de clústeres se traza en el eje X. A medida que aumenta el número de clústeres, los puntos de la gráfica deben formar un patrón coherente. A partir de este patrón, se obtiene un rango para el número óptimo de clústeres.8 A la hora de decidir el número de clústeres, tenga en cuenta los costos computacionales. Cuanto mayor sea el número de clústeres, más potencia de procesamiento se necesitará, especialmente con grandes conjuntos de datos.
Este método no es necesariamente el mejor, especialmente para conjuntos de datos con alta dimensionalidad o forma irregular. Otro método para elegir el número óptimo de clústeres es el análisis de la silueta.9
Aprenda los fundamentos del agrupamiento de medias K en Python mediante IBM watsonx Studio Jupyter Notebooks en watsonx.ai.
El algoritmo de agrupamiento de medias k se utiliza en casi todos los dominios e industrias. Generalmente se aplica a datos de machine learning que tienen pocas dimensiones, son numéricos y se pueden dividir fácilmente.
Los investigadores han integrado el agrupamiento de medias k con métodos de aprendizaje profundo como CNN y RNN para mejorar el rendimiento de diversas tareas de aprendizaje automático como visión artificial, PLN y muchos otros dominios. A continuación se muestra una lista de aplicaciones comunes de agrupamiento de medias k:
Segmentación de clientes: La práctica de dividir a los clientes de una compañía en grupos según características comunes que reflejen similitud. Esta estrategia permite a las compañías dirigir a grupos o clusters específicos de clientes para campañas publicitarias específicas.
Clasificación de documentos: procedimiento para asignar varias categorías a los documentos. Muchas organizaciones utilizan este método para moderar el contenido. Consulte esta documentación de watsonx Discover para crear un clasificador de documentos.
Segmentación de imágenes: técnica de visión artificial que divide una imagen digital en conjuntos distintos de pixeles. Esta investigación analiza cómo se emplean los modelos k-means para ayudar a identificar límites en imágenes médicas.10
Motores de recomendación: las aplicaciones de toda la web utilizan motores de recomendación. El análisis de componentes principales y las técnicas de agrupación de medias k se utilizan para crear recomendaciones de productos para empresas de comercio electrónico.11
Para obtener una experiencia de aprendizaje práctica, consulte el tutorial que explica los fundamentos de la realización de clústeres k-means en Python mediante el uso de IBM Watson Studio en watsonx.ai.
En este tutorial se emplea un módulo de la biblioteca scikit-learn (sklearn) que realiza la agrupación en clústeres de k-medias. El módulo incluye técnicas de optimización integradas que son manipuladas por sus parámetros de clase. La clase del módulo tiene el siguiente aspecto:
class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init='auto', max_iter=300, tol=0.0001, verbose=0, random_state=Ninguno, copy_x=Verdadero, algorithm='lloyd')12
Los parámetros incluyen el número de clusters que hay que formar y el número de centroides que hay que generar (n_clusters). Hay dos métodos de inicialización disponibles: medias k++ y aleatorio. También incluye atributos para fijar el número máximo de iteraciones. Cada iteración comienza particionando el conjunto de datos en el valor del parámetro n_clustersparameter.
Estas bibliotecas se emplean para generar un conjunto de datos de prueba y realizar agrupaciones:
import pandas as pd import sklearn import matplotlib.pyplot as plt import seaborn as sns import numpy from sklearn.cluster import KMeans from sklearn.datasets import make_blobs from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler
Algunos de los beneficios habituales del agrupamiento de medidas K en las aplicaciones de machine learning son:
Sencillo: el agrupamiento de medias K es fácil de entender y poner en práctica. Es la técnica de aprendizaje automático no monitorear más popular.
Rápido: la agrupación en clústeres K-means está diseñada con un enfoque iterativo computacionalmente simple. El algoritmo de agrupación en clústeres k-means es más rápido que el agrupamiento jerárquico que implica la construcción de una estructura de clústeres en forma de árbol y requiere calcular la distancia por pares entre todos los puntos de datos.
Escalable: las medias K también son fácilmente escalables a grandes conjuntos de datos y se generaliza a clústeres de diferentes formas y tamaños, lo que es ideal para el análisis de clústeres. Dado que el algoritmo es tan eficiente desde el punto de vista computacional, es más escalable y adecuado para grandes conjuntos de datos en comparación con otros métodos.
Algunos desafíos comunes asociados con la agrupación en clústeres k-means incluyen:
Dependencia de los parámetros de entrada: La agrupación en clústeres de K-means depende de los parámetros de entrada configurados correctamente. La inicialización del centroide y el número de clústeres adecuados es impecable para obtener resultados de clúster significativos. Una inicialización incorrecta del centroide puede provocar un aumento del tiempo de ejecución y asignaciones de clústeres de baja calidad. Se realizaron muchas investigaciones para mejorar el procedimiento de inicialización del centroide para obtener mejores resultados de agrupación en clústeres y un tiempo de convergencia más rápido.
Posible bajo rendimiento en determinados conjuntos de datos: las medias k funcionan de forma eficaz cuando el conjunto de datos contiene clústeres de tamaño similar y no hay valores atípicos ni variaciones de densidad notables. Las medias k funcionan mal cuando el conjunto de datos contiene muchas variaciones o es muy dimensional. Los datos que no se alinean con ciertas suposiciones de conjuntos de datos pueden provocar que las medias k produzcan clústeres de baja calidad.13 Por ejemplo, los clústeres de tamaños desiguales pueden sesgar los centroides hacia los grupos más grandes, lo que provoca sesgos y errores de clasificación entre los grupos más pequeños. Para resolver este problema, las medias k se pueden generalizar mediante modelos probabilísticos, como el nodo de mezcla gaussiana.
Impacto significativo de los valores atípico: los valores atípicos tienen un impacto significativo en los resultados de la agrupación en clústeres de medias k. Los diferentes clústeres deben estar muy separados, pero no tanto como para sesgar los puntos de datos. Es importante tener en cuenta las suposiciones de los datos antes de aplica medias K. Las medias K son especialmente sensibles a los valores atípicos, ya que su objetivo es determinar los centroides promediando los valores con un clúster. Esta sensibilidad hace que sea propenso al sobreajuste para incluir estos valores atípicos.
Aprenda los fundamentos de la agrupación de medias K en Python mediante IBM watsonx Studio Jupyter Notebooks en watsonx.ai
Aprenda más sobre el agrupamiento en clústeres de datos.
Conozca los fundamentos de la realización de clústeres K-means en R empleando IBM Watson Studio Jupyter Notebooks en watsonx.ai.
1 Todd K. Moon, "The Expectation Maximization Algorithm, " IEE Signal Processing Magazine, https://ieeexplore.ieee.org/document/543975 (enlace externo a ibm.com)
2 Kevin Arvai, "K-Means Clustering in Python: A Practical Guide," https://realpython.com/k-means-clustering-python/#:~:text=Understanding%20the%20K%2DMeans%20Algorithm,-Conventional%20k%2Dmeans&text=The%20quality%20of%20the%20cluster,point%20to%20its%20closest%20centroid. (enlace externo a ibm.com)
3 "Clustering: K-Means," https://www.codecademy.com/learn/dspath-unsupervised/modules/dspath-clustering/cheatsheet (enlace externo a ibm.com)
4 "Dunn Index," https://ruivieira.dev/dunn-index.html (enlace externo a ibm.com)
5 Xiangyuan, Siyuan, Hao, "A survey on k-means initialization methods," https://www.comp.nus.edu.sg/~arnab/randalg20/HLW.pdf (enlace externo a ibm.com)
6 Arthur, Vassilvitskii, "k-means++: The Advantages of Careful Seeding, " Standford, https://theory.stanford.edu/~sergei/papers/kMeansPP-soda.pdf (enlace externo a ibm.com)
7 Gutierrez, "Unsupervised Learning: Evaluating Clusters," https://opendatascience.com/unsupervised-learning-evaluating-clusters/ (enlace externo a ibm.com)
8 "K-means clustering using Python on IBM watsonx.ai," https://developer.ibm.com/tutorials/awb-k-means-clustering-in-python/ , step 4 (enlace externo a ibm.com)
9 Shutaywi, Kachouie, "Silhouette Analysis for Performance Evaluation in Machine Learning with Applications in Clustering", junio de 2021, https://www.mdpi.com/1099-4300/23/6/759 (enlace externo a ibm.com)
10 Dhanachandra, Manglem, Chanu, "Image Segmentation Using K-means Clustering Algorithm and Subtractive Clustering Algorithm," ScienceDirect Vol 54, pgs 764-771, https://www.sciencedirect.com/science/article/pii/S1877050915014143 (enlace externo a ibm.com)
11 Bagus Mulyawan et al, "Recommendation Product Based on Customer Categorization with K-Means Clustering Method," 2019 IOP Conf. Ser.: Mater. Sci. Eng. 508 012123 https://iopscience.iop.org/article/10.1088/1757-899X/508/1/012123/pdf#:~:text=The%20K%2DMeans%20algorithm%20is,group%20customer%20based%20on%20attributes. (enlace externo a ibm.com)
12 scikit-learn, https://github.com/scikit-learn/scikit-learn/blob/5491dc695/sklearn/cluster/_kmeans.py#L1193 (enlace externo a ibm.com)
13 "Demonstration of k-means assumptions," https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_assumptions.html(enlace externo a ibm.com)