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.

Clustering jerárquico

Introducción a la agrupación jerárquica

La agrupación jerárquica agrupa los datos en una variedad de escalas mediante la creación de un árbol de clúster o .Dendrograma El árbol no es un único conjunto de clústeres, sino más bien una jerarquía de varios niveles, donde los clústeres de un nivel se unen como clústeres en el siguiente nivel. Esto le permite decidir el nivel o la escala de la agrupación en clústeres más adecuada para la aplicación. La función admite la agrupación en clústeres aglomerativas y realiza todos los pasos necesarios para usted.Statistics and Machine Learning Toolbox™clusterdata Incorpora las funciones , , y, que puede utilizar por separado para un análisis más detallado.pdistlinkagecluster La función traza el árbol de clúster.Dendrograma

Descripción del algoritmo

Para realizar un análisis de clúster jerárquico aglomerativo en un conjunto de datos mediante funciones, siga este procedimiento:Statistics and Machine Learning Toolbox

  1. En este paso, se calcula el entre objetos mediante la función.Busque la similitud o la diferencia entre cada par de objetos del conjunto de datos.Distanciapdist La función admite muchas maneras diferentes de calcular esta medición.pdist Consulte para obtener más información.Medidas de similitud

  2. En este paso, se vinculan pares de objetos que están muy cerca mediante la función.Agrupe los objetos en un árbol de clúster binario y jerárquico.linkage La función utiliza la información de distancia generada en el paso 1 para determinar la proximidad de los objetos entre sí.linkage A medida que los objetos se emparejan en clústeres binarios, los clústeres recién formados se agrupan en clústeres más grandes hasta que se forma un árbol jerárquico. Consulte para obtener más información.Vínculos

  3. En este paso, se utiliza la función para eliminar las ramas de la parte inferior del árbol jerárquico y asignar todos los objetos debajo de cada corte a un único clúster.Determine dónde cortar el árbol jerárquico en clústeres.cluster Esto crea una partición de los datos. La función puede crear estos clústeres detectando agrupaciones naturales en el árbol jerárquico o cortando el árbol jerárquico en un punto arbitrario.cluster

En las secciones siguientes se proporciona más información acerca de cada uno de estos pasos.

Nota

La función realiza todos los pasos necesarios para usted.Statistics and Machine Learning Toolboxclusterdata No es necesario ejecutar las funciones , , o por separado.pdistlinkagecluster

Medidas de similitud

La función se utiliza para calcular la distancia entre cada par de objetos de un conjunto de datos.pdist Para un conjunto de datos formado por objetos, haym m*(m – 1)/2 pares en el conjunto de datos. El resultado de este cálculo se conoce comúnmente como una matriz de distancia o diferencia.

Hay muchas maneras de calcular esta información de distancia. De forma predeterminada, la función calcula la distancia euclidiana entre objetos; sin embargo, puede especificar una de varias otras opciones.pdist Consulte para obtener más información.pdist

Nota

Opcionalmente, puede normalizar los valores del conjunto de datos antes de calcular la información de distancia. En un conjunto de datos del mundo real, las variables se pueden medir con diferentes escalas. Por ejemplo, una variable puede medir las puntuaciones de la prueba del cociente de inteligencia (IQ) y otra variable puede medir la circunferencia de la cabeza. Estas discrepancias pueden distorsionar los cálculos de proximidad. Mediante la función, puede convertir todos los valores del conjunto de datos para utilizar la misma escala proporcional.zscore Consulte para obtener más información.zscore

Por ejemplo, considere un conjunto de datos, , compuesto por cinco objetos donde cada objeto es un conjunto de coordenadas.Xx,y

  • :Objeto 1 1, 2

  • :Objeto 2 2.5, 4.5

  • :Objeto 3 2, 2

  • :Objeto 4 4, 1.5

  • :Objeto 5 4, 2.5

Puede definir este conjunto de datos como una matriz

rng default;  % For reproducibility X = [1 2;2.5 4.5;2 2;4 1.5;...     4 2.5];

y pasarlo a .pdist La función calcula la distancia entre el objeto 1 y el objeto 2, el objeto 1 y el objeto 3, y así sucesivamente hasta que se hayan calculado las distancias entre todos los pares.pdist La figura siguiente traza estos objetos en un gráfico. La distancia euclidiana entre el objeto 2 y el objeto 3 se muestra para ilustrar una interpretación de la distancia.

Información de distancia

La función devuelve esta información de distancia en un vector, , donde cada elemento contiene la distancia entre un par de objetos.pdistY

Y = pdist(X)
Y = 1×10

    2.9155    1.0000    3.0414    3.0414    2.5495    3.3541    2.5000    2.0616    2.0616    1.0000

Para facilitar la retransmisión entre la información de distancia generada por y los objetos del conjunto de datos original, puede volver a formatear el vector de distancia en una matriz mediante la función.pdistsquareform En esta matriz, el elemento corresponde a la distancia entre el objeto y el objeto en el conjunto de datos original.i,jij En el ejemplo siguiente, el elemento 1,1 representa la distancia entre el objeto 1 y sí mismo (que es cero). El elemento 1,2 representa la distancia entre el objeto 1 y el objeto 2, y así sucesivamente.

squareform(Y)
ans = 5×5

         0    2.9155    1.0000    3.0414    3.0414
    2.9155         0    2.5495    3.3541    2.5000
    1.0000    2.5495         0    2.0616    2.0616
    3.0414    3.3541    2.0616         0    1.0000
    3.0414    2.5000    2.0616    1.0000         0

Vínculos

Una vez calculada la proximidad entre los objetos del conjunto de datos, puede determinar cómo se deben agrupar los objetos del conjunto de datos en clústeres mediante la función.linkage La función toma la información de distancia generada por y vincula pares de objetos que están cerca entre sí en clústeres binarios (clústeres formados por dos objetos).linkagepdist A continuación, la función vincula estos clústeres recién formados entre sí y con otros objetos para crear clústeres más grandes hasta que todos los objetos del conjunto de datos original se vinculen entre sí en un árbol jerárquico.linkage

Por ejemplo, dado el vector de distancia generado por el conjunto de datos de muestra de - y -coordenadas, la función genera un árbol de clúster jerárquico, devolviendo la información de vinculación en una matriz, .YpdistxylinkageZ

Z = linkage(Y)
Z = 4×3

    4.0000    5.0000    1.0000
    1.0000    3.0000    1.0000
    6.0000    7.0000    2.0616
    2.0000    8.0000    2.5000

En esta salida, cada fila identifica un vínculo entre objetos o clústeres. Las dos primeras columnas identifican los objetos que se han vinculado. La tercera columna contiene la distancia entre estos objetos. Para el conjunto de datos de ejemplo de - y -coordenadas, la función comienza agrupando los objetos 4 y 5, que tienen la proximidad más cercana (valor de distancia 1.0000).xylinkage La función continúa agrupando los objetos 1 y 3, que también tienen un valor de distancia de 1.0000.linkage

La tercera fila indica que la función agrupó los objetos 6 y 7.linkage Si el conjunto de datos de ejemplo original contenía solo cinco objetos, ¿qué son los objetos 6 y 7? El objeto 6 es el clúster binario recién formado creado por la agrupación de objetos 4 y 5. Cuando la función agrupa dos objetos en un nuevo clúster, debe asignar al clúster un valor de índice único, empezando por el valor + 1, donde está el número de objetos del conjunto de datos original.linkagemm (Los valores 1 a través ya son utilizados por el conjunto de datos original.)m Del mismo modo, el objeto 7 es el clúster formado por la agrupación de los objetos 1 y 3.

utiliza distancias para determinar el orden en el que agrupa los objetos.linkage El vector de distancia contiene las distancias entre los objetos originales del 1 al 5.Y Pero la vinculación también debe ser capaz de determinar las distancias que implican clústeres que crea, como los objetos 6 y 7. De forma predeterminada, utiliza un método conocido como vinculación única.linkage Sin embargo, hay una serie de métodos diferentes disponibles. Consulte la página de referencia para obtener más información.linkage

Como clúster final, la función agrupó el objeto 8, el clúster recién formado formado formado por los objetos 6 y 7, con el objeto 2 del conjunto de datos original.linkage La figura siguiente ilustra gráficamente la forma en que agrupa los objetos en una jerarquía de clústeres.linkage

Dendrograms

El árbol de clúster binario jerárquico creado por la función se entiende más fácilmente cuando se ve gráficamente.linkage La función traza el árbol de la siguiente manera.Statistics and Machine Learning ToolboxDendrograma

dendrogram(Z)

En la figura, los números a lo largo del eje horizontal representan los índices de los objetos del conjunto de datos original. Los vínculos entre objetos se representan como líneas en forma de U al revés. La altura de la U indica la distancia entre los objetos. Por ejemplo, el vínculo que representa el clúster que contiene los objetos 1 y 3 tiene una altura de 1. El vínculo que representa el clúster que agrupa el objeto 2 junto con los objetos 1, 3, 4 y 5 (que ya están agrupados como objeto 8) tiene una altura de 2,5. La altura representa los cálculos de distancia entre los objetos 2 y 8.linkage Para obtener más información sobre cómo crear un diagrama de dendrograma, consulte la página de referencia.Dendrograma

Verifique el árbol del cluster

Después de vincular los objetos de un conjunto de datos a un árbol de clúster jerárquico, es posible que desee comprobar que las distancias (es decir, alturas) en el árbol reflejan las distancias originales con precisión. Además, es posible que desee investigar las divisiones naturales que existen entre los vínculos entre los objetos. funciones están disponibles para ambas tareas, como se describe en las secciones siguientes.Statistics and Machine Learning Toolbox

Verificar la disparidad

En un árbol de clúster jerárquico, los dos objetos del conjunto de datos original se vinculan finalmente entre sí en algún nivel. La altura del vínculo representa la distancia entre los dos clústeres que contienen esos dos objetos. Esta altura se conoce como entre los dos objetos.distancia cophenetic Una forma de medir qué tan bien refleja el árbol de clúster generado por la función es comparar las distancias copheneticas con los datos de distancia originales generados por la función.linkagepdist Si la agrupación en clústeres es válida, la vinculación de objetos en el árbol de clúster debe tener una correlación fuerte con las distancias entre los objetos del vector de distancia. La función compara estos dos conjuntos de valores y calcula su correlación, devolviendo un valor denominado .cophenetcoeficiente de correlación cophenetica Cuanto más cerca esté el valor del coeficiente de correlación cophenetic en 1, más precisa es la solución de agrupación en clústeres que refleje los datos.

Puede utilizar el coeficiente de correlación cophenetic para comparar los resultados de la agrupación en clústeres del mismo conjunto de datos mediante diferentes métodos de cálculo de distancia o algoritmos de agrupación en clústeres. Por ejemplo, puede utilizar la función para evaluar los clústeres creados para el conjunto de datos de ejemplo.cophenet

c = cophenet(Z,Y)
c = 0.8615 

es la salida de matriz por la función y es la salida vectorial de distancia por la función.ZlinkageYpdist

Ejecute de nuevo en el mismo conjunto de datos, esta vez especificando la métrica de bloqueo de ciudad.pdist Después de ejecutar la función en esta nueva salida mediante el método de vinculación promedio, llame para evaluar la solución de agrupación en clústeres.linkagepdistcophenet

Y = pdist(X,'cityblock'); Z = linkage(Y,'average'); c = cophenet(Z,Y)
c = 0.9047 

El coeficiente de correlación copénica muestra que el uso de un método de distancia y vinculación diferente crea un árbol que representa las distancias originales ligeramente mejor.

Verificar la consistencia

Una forma de determinar las divisiones de clúster natural en un conjunto de datos es comparar la altura de cada vínculo en un árbol de clúster con las alturas de los vínculos vecinos debajo de él en el árbol.

Un vínculo que tiene aproximadamente la misma altura que los vínculos siguientes indica que no hay divisiones distintas entre los objetos unidos en este nivel de la jerarquía. Se dice que estos vínculos exhiben un alto nivel de coherencia, porque la distancia entre los objetos que se unen es aproximadamente la misma que las distancias entre los objetos que contienen.

Por otro lado, un vínculo cuya altura difiere notablemente de la altura de los vínculos debajo indica que los objetos unidos en este nivel en el árbol de clúster están mucho más separados entre sí de sus componentes cuando se unieron. Se dice que este enlace es incompatible con los enlaces que están debajo.

En el análisis de clústeres, los vínculos incoherentes pueden indicar el borde de una división natural en un conjunto de datos. La función utiliza una medida cuantitativa de incoherencia para determinar dónde particionar el conjunto de datos en clústeres.cluster

El siguiente dendrograma ilustra enlaces incoherentes. Observe cómo los objetos del dendrograma se dividen en dos grupos que están conectados por vínculos en un nivel mucho más alto en el árbol. Estos vínculos son incoherentes cuando se comparan con los vínculos que están debajo de ellos en la jerarquía.

La coherencia relativa de cada vínculo en un árbol de clúster jerárquico se puede cuantificar y expresar como el archivo .InconsistenciaCoeficiente Este valor compara el alto de un vínculo en una jerarquía de clúster con la altura media de los vínculos por debajo de él. Los vínculos que unen clústeres distintos tienen un alto coeficiente de incoherencia; los enlaces que se unen a clústeres indistintos tienen un coeficiente de incoherencia bajo.

Para generar una lista del coeficiente de incoherencia para cada vínculo del árbol de clúster, utilice la función.inconsistent De forma predeterminada, la función compara cada vínculo de la jerarquía de clústeres con vínculos adyacentes que están por debajo de dos niveles por debajo de él en la jerarquía del clúster.inconsistent Esto se llama el de la comparación.Profundidad También puede especificar otras profundidades. Los objetos de la parte inferior del árbol de clúster, denominados nodos hoja, que no tienen más objetos debajo de ellos, tienen un coeficiente de incoherencia de cero. Los clústeres que unen dos hojas también tienen un coeficiente de incoherencia cero.

Por ejemplo, puede utilizar la función para calcular los valores de incoherencia para los vínculos creados por la función en .inconsistentlinkageVínculos

En primer lugar, vuelva a calcular los valores de distancia y vinculación utilizando la configuración predeterminada.

Y = pdist(X); Z = linkage(Y);

A continuación, utilice para calcular los valores de incoherencia.inconsistent

I = inconsistent(Z)
I = 4×4

    1.0000         0    1.0000         0
    1.0000         0    1.0000         0
    1.3539    0.6129    3.0000    1.1547
    2.2808    0.3100    2.0000    0.7071

La función devuelve datos sobre los vínculos de una matriz ( -1)-by-4, cuyas columnas se describen en la tabla siguiente.inconsistentm

ColumnaDescripción

1

Media de las alturas de todos los enlaces incluidos en el cálculo

2

Desviación estándar de todos los enlaces incluidos en el cálculo

3

Número de enlaces incluidos en el cálculo

4

Coeficiente de incoherencia

En la salida de ejemplo, la primera fila representa el vínculo entre los objetos 4 y 5. A este clúster se le asigna el índice 6 por la función.linkage Dado que 4 y 5 son nodos hoja, el coeficiente de incoherencia para el clúster es cero. La segunda fila representa el vínculo entre los objetos 1 y 3, que también son nodos hoja. A este clúster se le asigna el índice 7 mediante la función de vinculación.

La tercera fila evalúa el vínculo que conecta estos dos clústeres, los objetos 6 y 7. (A este nuevo clúster se le asigna el índice 8 en la salida).linkage La columna 3 indica que se consideran tres vínculos en el cálculo: el propio enlace y los dos vínculos directamente debajo de él en la jerarquía. La columna 1 representa la media de las alturas de estos vínculos. La función utiliza la salida de información de altura de la función para calcular la media.inconsistentlinkage La columna 2 representa la desviación estándar entre los vínculos. La última columna contiene el valor de incoherencia para estos vínculos, 1.1547. Es la diferencia entre la altura del enlace actual y la media, normalizada por la desviación estándar.

(2.0616 - 1.3539) / .6129
ans = 1.1547 

La figura siguiente ilustra los vínculos y las alturas incluidas en este cálculo.

Nota

En la figura anterior, el límite inferior en el eje -axis se establece para mostrar las alturas de los vínculos.y0 Para establecer el límite inferior en , seleccione0 Axes Properties En el menú, haga clic en la pestaña e introduzca el campo inmediatamente a la derecha de .EditY Axis0Y Limits

La fila 4 de la matriz de salida describe el vínculo entre el objeto 8 y el objeto 2. La columna 3 indica que se incluyen dos vínculos en este cálculo: el propio enlace y el vínculo directamente debajo de él en la jerarquía. El coeficiente de incoherencia para este link es 0.7071.

La figura siguiente ilustra los vínculos y las alturas incluidas en este cálculo.

Crear clústeres

Después de crear el árbol jerárquico de clústeres binarios, puede podar el árbol para dividir los datos en clústeres mediante la función.cluster La función le permite crear clústeres de dos maneras, como se describe en las secciones siguientes:cluster

Buscar divisiones naturales en datos

El árbol de clústerjero jerárquico puede dividir naturalmente los datos en clústeres distintos y bien separados. Esto puede ser particularmente evidente en un diagrama de dendrograma creado a partir de datos donde los grupos de objetos se empaquetan densamente en ciertas áreas y no en otras. El coeficiente de incoherencia de los vínculos en el árbol de clúster puede identificar estas divisiones donde las similitudes entre los objetos cambian abruptamente. (Consulte para obtener más información sobre el coeficiente de incoherencia.)Verifique el árbol del cluster Puede utilizar este valor para determinar dónde crea la función límites de clúster.cluster

Por ejemplo, si utiliza la función para agrupar el conjunto de datos de ejemplo en clústeres, especificando un umbral de coeficiente de incoherencia como el valor del argumento, la función agrupa todos los objetos del conjunto de datos de ejemplo en un clúster.cluster1.2cutoffcluster En este caso, ninguno de los vínculos de la jerarquía de clústeres tenía un coeficiente de incoherencia mayor que .1.2

T = cluster(Z,'cutoff',1.2)
T = 5×1

     1
     1
     1
     1
     1

La función genera un vector, , que tiene el mismo tamaño que el conjunto de datos original.clusterT Cada elemento de este vector contiene el número del clúster en el que se colocó el objeto correspondiente del conjunto de datos original.

Si reduce el umbral del coeficiente de incoherencia a , la función divide el conjunto de datos de muestra en tres clústeres independientes.0.8cluster

T = cluster(Z,'cutoff',0.8)
T = 5×1

     3
     2
     3
     1
     1

Esta salida indica que los objetos 1 y 3 están en un clúster, los objetos 4 y 5 están en otro clúster y el objeto 2 está en su propio clúster.

Cuando los clústeres se forman de esta manera, el valor de corte se aplica al coeficiente de incoherencia. Estos racimos pueden, pero no necesariamente, corresponder a una rebanada horizontal a través del dendrograma a una cierta altura. Si desea que los clústeres correspondan a un segmento horizontal del dendrograma, puede utilizar la opción para especificar que el límite debe basarse en la distancia en lugar de la incoherencia, o puede especificar el número de clústeres directamente como se describe a continuación, Sección.criterion

Especificar clústeres arbitrarios

En lugar de permitir que la función cree clústeres determinados por las divisiones naturales del conjunto de datos, puede especificar el número de clústeres que desea crear.cluster

Por ejemplo, puede especificar que desea que la función particione el conjunto de datos de ejemplo en dos clústeres.cluster En este caso, la función crea un clúster que contiene los objetos 1, 3, 4 y 5 y otro clúster que contiene el objeto 2.cluster

T = cluster(Z,'maxclust',2)
T = 5×1

     2
     1
     2
     2
     2

Para ayudarle a visualizar cómo la función determina estos clústeres, la figura siguiente muestra el dendrograma del árbol de clústerjero jerárquico.cluster La línea discontinua horizontal interseca dos líneas del dendrograma, correspondientes al ajuste a .'maxclust'2 Estas dos líneas particionan los objetos en dos clústeres: los objetos debajo de la línea izquierda, a saber, 1, 3, 4 y 5, pertenecen a un clúster, mientras que el objeto debajo de la línea derecha, es decir, 2, pertenece al otro clúster.

Por otro lado, si establece en , la función de clúster agrupa los objetos 4 y 5 en un clúster, los objetos 1 y 3 de un segundo clúster y el objeto 2 en un tercer clúster.'maxclust'3 El siguiente comando ilustra esto.

T = cluster(Z,'maxclust',3)
T = 5×1

     2
     3
     2
     1
     1

Esta vez, la función corta la jerarquía en un punto inferior, correspondiente a la línea horizontal que interseca tres líneas del dendrograma en la figura siguiente.cluster

Temas relacionados