Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

-Significa clusteringk

Introducción a-means clusteringk

-Means clustering es un método de particionamiento.k La función divide los datos en clústeres mutuamente excluyentes y devuelve el índice del clúster al que ha asignado cada observación.kmeansk A diferencia de clustering jerárquico,-significa clustering opera en observaciones reales (en lugar del conjunto más grande de medidas de dessimilitud), y crea un único nivel de clústeres.k Las distinciones significan que la agrupación en clústeres suele ser más adecuada que la agrupación jerárquica para grandes cantidades de datos.k

trata cada observación en sus datos como un objeto que tiene una ubicación en el espacio.kmeans Encuentra una partición en la que los objetos dentro de cada clúster están tan cerca entre sí como sea posible, y tan lejos de los objetos de otros clústeres como sea posible. Puede elegir entre cinco métricas de distancia diferentes, según el tipo de datos que esté agrupen.

Cada clúster de la partición se define por sus objetos miembro y por su centroide o centro. El centroide de cada clúster es el punto al que se minimiza la suma de las distancias de todos los objetos de ese clúster. calcula los centroides de clúster de forma diferente para cada métrica de distancia, para minimizar la suma con respecto a la medida que especifique.kmeans

Puede controlar los detalles de la minimización utilizando varios parámetros de entrada opcionales, incluidos los de los valores iniciales de los centroides del clúster y el número máximo de iteraciones.kmeans De forma predeterminada, utiliza el algoritmo-Means + + para la inicialización del centro de clúster y la métrica euclidiana cuadrada para determinar las distancias.kmeansk

Crear clústeres y determinar la separación

En el siguiente ejemplo se explora la posible agrupación en clústeres de datos en cuatro dimensiones analizando los resultados de la partición de los puntos en tres, cuatro y cinco clústeres.

Nota

Dado que cada parte de este ejemplo genera números aleatorios secuencialmente, es decir, sin establecer un nuevo estado, debe realizar todos los pasos en secuencia para duplicar los resultados mostrados. Si realiza los pasos fuera de secuencia, las respuestas serán esencialmente las mismas, pero los resultados intermedios, el número de iteraciones o el orden de las parcelas de silueta pueden diferir.

Primero, cargue algunos datos.

rng default  % For reproducibility load kmeansdata size(X)
ans = 1×2

   560     4

Aunque estos datos son de cuatro dimensiones y no se pueden visualizar fácilmente, le permite investigar si existe una estructura de grupo en ellas.kmeans Llame con, el número deseado de clusters, igual a.kmeansk3 Para este ejemplo, especifique la métrica de distancia de bloque de ciudad y utilice el algoritmo default-Means + + para la inicialización del centro de clúster.k

idx3 = kmeans(X,3,'Distance','cityblock');

Para tener una idea de cuán bien separados están los clústeres resultantes, puede crear un trazado de silueta utilizando los índices de Cluster de salida.kmeans La gráfica de silueta muestra una medida de la cercanía de cada punto de un clúster con los puntos de los clústeres vecinos. Esta medida oscila entre + 1, indicando los puntos que están muy distantes de los clústeres vecinos, a través de 0, indicando los puntos que no son distintivamente en un cluster u otro, a-1, indicando los puntos que se asignan probablemente al cluster incorrecto. Devuelve estos valores en su primera salida.silhouette

figure [silh3,h] = silhouette(X,idx3,'cityblock'); h = gca; h.Children.EdgeColor = [.8 .8 1]; xlabel 'Silhouette Value' ylabel 'Cluster'

Desde la gráfica de silueta, puede ver que la mayoría de los puntos del segundo clúster tienen un valor de silueta grande, mayor que 0,6, lo que indica que el clúster está algo separado de los clústeres vecinos. Sin embargo, el tercer clúster contiene muchos puntos con valores de silueta bajos, y el primero y el tercero contienen algunos puntos con valores negativos, lo que indica que esos dos clústeres no están bien separados.

Determine el número correcto de clústeres

Aumente el número de clústeres para ver si puede encontrar una mejor agrupación de los datos.kmeans Esta vez, use el argumento de par nombre-valor para imprimir información sobre cada iteración.'Display'

idx4 = kmeans(X,4, 'Distance','cityblock','Display','iter');
  iter  phase      num          sum      1      1      560      1792.72      2      1        6       1771.1 Best total sum of distances = 1771.1 

Una gráfica de silueta para esta solución indica que estos cuatro clústeres están mejor separados que los tres de la solución anterior.

figure [silh4,h] = silhouette(X,idx4,'cityblock'); h = gca; h.Children.EdgeColor = [.8 .8 1]; xlabel 'Silhouette Value' ylabel 'Cluster'

Una forma más cuantitativa de comparar las dos soluciones es mirar los valores de silueta promedio para los dos casos.

cluster3 = mean(silh3)
cluster3 = 0.5352 
cluster4 = mean(silh4)
cluster4 = 0.6400 

Por último, intente agrupar los datos con cinco clústeres.

idx5 = kmeans(X,5,'Distance','cityblock','Replicates',5); figure [silh5,h] = silhouette(X,idx5,'city'); h = gca; h.Children.EdgeColor = [.8 .8 1]; xlabel 'Silhouette Value' ylabel 'Cluster'

mean(silh5)
ans = 0.5266 

Esta gráfica de silueta indica que probablemente no es el número correcto de clústeres, ya que dos de los clústeres contienen puntos con valores de silueta en su mayoría bajos. Sin un cierto conocimiento de cuántos clústeres están realmente en los datos, es una buena idea experimentar con un rango de valores para.k

Evite los minima locales

Al igual que muchos otros tipos de minimizaciones numéricas, la solución que llega a menudo depende de los puntos de partida.kmeans Es posible alcanzar un mínimo local, donde la reasignación de cualquier punto a un nuevo clúster aumentaría la suma total de las distancias punto a centroide, pero donde exista una solución mejor.kmeans Sin embargo, puede usar el argumento de par nombre-valor para superar ese problema.'Replicates'

Para cuatro clústeres, especifique cinco réplicas y utilice el argumento de par nombre-valor para imprimir la suma final de las distancias para cada una de las soluciones.'Display'

[idx4,cent4,sumdist] = kmeans(X,4,'Distance','cityblock',...                        'Display','final','Replicates',5);
Replicate 1, 4 iterations, total sum of distances = 1771.1. Replicate 2, 2 iterations, total sum of distances = 1771.1. Replicate 3, 5 iterations, total sum of distances = 2303.45. Replicate 4, 4 iterations, total sum of distances = 2303.45. Replicate 5, 6 iterations, total sum of distances = 1771.1. Best total sum of distances = 1771.1 

En dos de las cinco replicaciones, se encontró un mínimo local (nonglobal).kmeans Dado que cada una de estas cinco réplicas comienzan a partir de un conjunto de centroides iniciales seleccionados aleatoriamente, a veces se encuentra más de un mínimo local.kmeans Sin embargo, la solución final que devuelve es la que tiene la suma total más baja de distancias, sobre todas las réplicas.kmeans

sum(sumdist)
ans = 1.7711e+03 

Temas relacionados