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ústeres o.Dendrograma El árbol no es un solo conjunto de clústeres, sino más bien una jerarquía multinivel, 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 agrupación en clústeres que es más adecuado para la aplicación. La función admite clustering aglomerativo y realiza todos los pasos necesarios para usted.Statistics and Machine Learning Toolbox™clusterdata Incorpora las funciones, que puede utilizar por separado para un análisis más detallado.pdistlinkagecluster La función traza el árbol del clúster.Dendrograma

Descripción del algoritmo

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

  1. En este paso, se calcula el entre los objetos utilizando la función.Find the similarity or dissimilarity between every pair of objects in the data set.distancepdist La función admite muchas maneras diferentes de calcular esta medida.pdist Consulte para obtener más información.Medidas de similitud

  2. En este paso, se vinculan pares de objetos que se encuentran en estrecha proximidad mediante la función.Group the objects into a binary, hierarchical cluster tree.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 podar ramas de la parte inferior del árbol jerárquico y asignar todos los objetos debajo de cada corte a un único clúster.Determine where to cut the hierarchical tree into clusters.cluster Esto crea una partición de los datos. La función puede crear estos clústeres mediante la detección de 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 sobre 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, o funciones por separado.pdistlinkagecluster

Medidas de similitud

Utilice la función 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 de dessimilitud.

Hay muchas maneras de calcular esta información de distancia. De forma predeterminada, la función calcula la distancia euclidiana entre los 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 cociente de inteligencia (IQ) y otra variable puede medir la circunferencia de la cabeza. Estas discrepancias pueden distorsionar los cálculos de proximidad. Utilizando 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, formado por cinco objetos donde cada objeto es un conjunto de coordenadas.Xx,y

  • :Object 1 1, 2

  • :Object 2 2,5, 4,5

  • :Object 3 2, 2

  • :Object 4 4, 1,5

  • :Object 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 que sea más fácil ver la relación entre la información de distancia generada por y los objetos en el conjunto de datos original, puede volver a formatear el vector de distancia en una matriz utilizando la función.pdistsquareform En esta matriz, el elemento corresponde a la distancia entre Object y Object 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 enlaza pares de objetos que están cerca juntos en clústeres binarios (clusters formado por dos objetos).linkagepdist A continuación, la función enlaza 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 estén enlazados entre sí en un árbol jerárquico.linkage

Por ejemplo, dado el vector de distancia generado por el conjunto de datos de ejemplo 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 los objetos o los clústeres. Las dos primeras columnas identifican los objetos que se han enlazado. 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 agrupa los objetos 6 y 7.linkage Si el conjunto de datos de ejemplo original contenía sólo 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 los 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, comenzando por el valor + 1, donde se encuentra 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, Object 7 es el clúster formado por agrupar 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 1 a 5.Y Pero la vinculación también debe ser capaz de determinar las distancias que implican los 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 diferentes métodos disponibles. Consulte la página de referencia para obtener más información.linkage

Como último clúster, la función agrupó el objeto 8, el clúster recién 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

Dendrogramas

El árbol de Cluster binario jerárquico creado por la función es más fácil de entender cuando se visualiza 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 enlaces 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 la distancia computa entre los objetos 2 y 8.linkage Para obtener más información sobre la creación de un diagrama de dendrograma, consulte la página de referencia.Dendrograma

Compruebe que el árbol del clúster

Después de vincular los objetos de un conjunto de datos en un árbol de clústeres jerárquico, es posible que desee comprobar que las distancias (es decir, las 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

Verifique la Dessimilitud

En un árbol de clústeres jerárquico, los dos objetos del conjunto de datos original eventualmente se vinculan 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 la entre los dos objetos.cophenetic distance Una forma de medir qué tan bien el árbol de clústeres generado por la función refleja los datos es comparar las distancias de la cofenesis 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 del 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 llamado el.cophenetcophenetic correlation coefficient Cuanto más se acerque el valor del coeficiente de correlación cofenética a 1, más precisa la solución de clustering reflejará sus datos.

Puede utilizar el coeficiente de correlación de cofenesis para comparar los resultados de clustering del mismo conjunto de datos utilizando diferentes métodos de cálculo de distancia o algoritmos de clustering. 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 la matriz por la función y es la salida del vector de distancia por la función.ZlinkageYpdist

Ejecutar de nuevo en el mismo conjunto de datos, esta vez especificando la métrica de bloque 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 cofenética muestra que el uso de una distancia y un método de vinculación diferentes crea un árbol que representa las distancias originales ligeramente mejor.

Compruebe la coherencia

Una forma de determinar las divisiones de clúster naturales 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 ninguna División distinta entre los objetos Unidos en este nivel de la jerarquía. Se dice que estos vínculos exhiben un alto nivel de coherencia, ya que 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 siguientes indica que los objetos Unidos a este nivel en el árbol del clúster están mucho más alejados que sus componentes cuando se unieron. Este enlace se dice que es incompatible con los enlaces debajo de él.

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 inconsistencia para determinar dónde dividir el conjunto de datos en clústeres.cluster

El siguiente dendrograma ilustra enlaces incoherentes. Observe cómo los objetos en el dendrograma caen en dos grupos que están conectados por los links en un nivel mucho más alto en el árbol. Estos vínculos son incoherentes cuando se comparan con los vínculos que se encuentran 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.inconsistencycoefficient Este valor compara el alto de un vínculo en una jerarquía de clústeres con la altura media de los vínculos que se encuentran debajo de él. Los vínculos que se unen a clústeres distintos tienen un coeficiente de inconsistencia alto; vínculos que se unen a clústeres indistintos tienen un coeficiente de incoherencia bajo.

Para generar una lista del coeficiente de inconsistencia para cada vínculo en el árbol del clúster, utilice la función.inconsistent De forma predeterminada, la función compara cada vínculo de la jerarquía del clúster con vínculos adyacentes que son inferiores a dos niveles inferiores en la jerarquía del clúster.inconsistent A esto se le llama la comparación.depth También puede especificar otras profundidades. Los objetos en la parte inferior del árbol del clúster, denominados nodos hoja, que no tienen más objetos debajo de ellos, tienen un coeficiente de inconsistencia 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 inconsistencia de los vínculos creados por la función en.inconsistentlinkageVínculos

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

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

A continuación, se utiliza para calcular los valores de inconsistencia.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 en una matriz (-1)-por-4, cuyas columnas se describen en la tabla siguiente.inconsistentm

ColumnaDescripción

1

Media de las alturas de todos los links 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 muestra, la primera fila representa el vínculo entre los objetos 4 y 5. La función asigna el índice 6 a este clúster.linkage Dado que ambos 4 y 5 son nodos hoja, el coeficiente de inconsistencia para el clúster es cero. La segunda fila representa el vínculo entre los objetos 1 y 3, que también son nodos de hoja. La función de vinculación asigna el índice 7 a este clúster.

La tercera fila evalúa el link que conecta estos dos clusteres, los objetos 6 y 7. (Este nuevo clúster se asigna el índice 8 en la salida).linkage La columna 3 indica que se tienen en cuenta tres vínculos en el cálculo: el propio vínculo y los dos vínculos directamente debajo de él en la jerarquía. La columna 1 representa la media de las alturas de estos links. 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 enlaces. La última columna contiene el valor de inconsistencia para estos enlaces, 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 

En la figura siguiente se muestran los vínculos y alturas incluidos en este cálculo.

Nota

En la figura anterior, el límite inferior en el eje se establece para mostrar las alturas de los vínculos.y0 Para establecer el límite inferior, seleccione0 Axes Properties del menú, haga clic en la pestaña y escriba en 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 enlaces en este cálculo: el propio enlace y el enlace directamente debajo de él en la jerarquía. El coeficiente de inconsistencia para este link es 0,7071.

En la figura siguiente se muestran los vínculos y alturas incluidos en este cálculo.

Crear clústeres

Después de crear el árbol jerárquico de clústeres binarios, puede podar el árbol para particionar 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 siguientes secciones:cluster

Encuentra divisiones naturales en Data

El árbol jerárquico del clúster puede dividir los datos de forma natural en clústeres distintos y bien separados. Esto puede ser particularmente evidente en un diagrama de dendrograma creado a partir de datos donde grupos de objetos están densamente embalados en ciertas áreas y no en otros. El coeficiente de inconsistencia de los enlaces en el árbol de clústeres puede identificar estas divisiones donde las similitudes entre los objetos cambian abruptamente. (Ver para más información sobre el coeficiente de inconsistencia.)Compruebe que el árbol del clúster Puede utilizar este valor para determinar dónde la función crea 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 inconsistencia como 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 del clúster 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 disminuye el umbral de coeficiente de inconsistencia, la función divide el conjunto de datos de ejemplo 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 cluster, los objetos 4 y 5 están en otro Cluster, y el objeto 2 está en su propio cluster.

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

Especifique 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 siguiente figura muestra el dendrograma del árbol de clústeres jerárquico.cluster La línea discontinua horizontal intersecta dos líneas del dendrograma, correspondiente a la configuración.'maxclust'2 Estas dos líneas dividen los objetos en dos clústeres: los objetos por debajo de la línea izquierda, es decir, 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 se establece en, la función de clúster agrupa los objetos 4 y 5 en un clúster, los objetos 1 y 3 en 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 intersecta tres líneas del dendrograma en la figura siguiente.cluster

Temas relacionados