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.

silhouette

Gráfica de silueta

Descripción

ejemplo

silhouette(X,clust) traza siluetas de clúster para la matriz de datos por entrada, dada la asignación de cada punto (observación) en el clúster.npXclustX

ejemplo

silhouette(X,clust,Distance) traza las siluetas utilizando la métrica de distancia entre puntos especificada en.Distance

ejemplo

silhouette(X,clust,Distance,DistParameter) acepta uno o más valores de parámetro de métrica de distancia adicional cuando se especifica como un identificador de función de distancia personalizadoDistance @distfun que acepte los valores de parámetro adicionales.

ejemplo

s = silhouette(___) Devuelve los valores de silueta de cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores sin trazar las siluetas del clúster.s

ejemplo

[s,h] = silhouette(___) traza las siluetas y devuelve el identificador de la figura además de los valores de la silueta.hs

Ejemplos

contraer todo

Cree trazados de silueta a partir de datos agrupados utilizando diferentes métricas de distancia.

Genere datos de muestra aleatorios.

rng('default')  % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];

Cree un gráfico de dispersión de los datos.

scatter(X(:,1),X(:,2)); title('Randomly Generated Data');

El gráfico de dispersión muestra que los datos parecen dividirse en dos clústeres de igual tamaño.

Particionar los datos en dos clústeres usando la métrica de distancia euclidiana cuadrada predeterminada.kmeans

clust = kmeans(X,2);

contiene los índices de clúster de los datos.clust

Cree una gráfica de silueta a partir de los datos agrupados utilizando la métrica de distancia euclidiana cuadrada predeterminada.

silhouette(X,clust)

La gráfica de silueta muestra que los datos se dividen en dos clústeres de igual tamaño. Todos los puntos de los dos clústeres tienen valores de silueta grandes (0,8 o superior), lo que indica que los clústeres están bien separados.

Cree una gráfica de silueta a partir de los datos agrupados mediante la métrica de distancia euclidiana.

silhouette(X,clust,'Euclidean')

La gráfica de silueta muestra que los datos se dividen en dos clústeres de igual tamaño. Todos los puntos de los dos clústeres tienen valores de silueta grandes (0,6 o superior), lo que indica que los clústeres están bien separados.

Calcule los valores de silueta a partir de datos agrupados.

Genere datos de muestra aleatorios.

rng('default')  % For reproducibility X = [randn(10,2)+1;randn(10,2)-1];

Agruparse los datos en función de la suma de las diferencias absolutas en la distancia mediante el uso de.Xkmeans

clust = kmeans(X,2,'distance','cityblock');

contiene los índices de clúster de los datos.clust

Calcule los valores de la silueta a partir de los datos agrupados. Especifique la métrica de distancia para indicar que la agrupación en clústeres se basa en la suma de las diferencias absolutas.'cityblock'kmeans

s = silhouette(X,clust,'cityblock')
s = 20×1

    0.0816
    0.5848
    0.1906
    0.2781
    0.3954
    0.4050
    0.0897
    0.5416
    0.6203
    0.6664
      ⋮

Busque valores de silueta a partir de datos agrupados mediante una métrica de distancia de Chi-cuadrado personalizada. Compruebe que la métrica de distancia de Chi-cuadrado es equivalente a la métrica de distancia euclidiana, pero con un parámetro de escalado opcional.

Genere datos de muestra aleatorios.

rng('default'); % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];

Agrupara los datos en el uso con la métrica de distancia euclidiana cuadrada predeterminada.Xkmeans

clust = kmeans(X,2);

Busque valores de silueta y cree un trazado de silueta a partir de los datos agrupados mediante la métrica Distancia euclidiana.

[s,h] = silhouette(X,clust,'Euclidean')

s = 20×1

    0.6472
    0.7241
    0.5682
    0.7658
    0.7864
    0.6397
    0.7253
    0.7783
    0.7054
    0.7442
      ⋮

h =    Figure (1) with properties:        Number: 1         Name: ''        Color: [0.9400 0.9400 0.9400]     Position: [348 480 583 437]        Units: 'pixels'    Show all properties  

La distancia de Chi-cuadrado entre Jpuntos dimensionales y esxz

<math display="block">
<mrow>
<mi>χ</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msqrt>
<mrow>
<mstyle displaystyle="true" scriptlevel="0">
<mrow>
<munderover>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>J</mi>
</mrow>
</munderover>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mstyle>
</mrow>
</msqrt>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</math>
es el peso asociado a la dimensión.j

Establezca ponderaciones para cada cota y especifique la función de distancia de Chi-cuadrado. La función de distancia debe:

  • Tome como argumentos de entrada la matriz de datos por entrada, una fila de (por ejemplo,) y un parámetro de escalado (o peso).np XXxw

  • Calcule la distancia desde cada fila de.xX

  • Devuelve un vector de longitud.n Cada elemento del vector es la distancia entre la observación correspondiente y las observaciones correspondientes a cada fila de.xX

w = [0.4; 0.6]; % Set arbitrary weights for illustration chiSqrDist = @(x,Z,w)sqrt((bsxfun(@minus,x,Z).^2)*w);

Busque valores de silueta a partir de los datos agrupados mediante la métrica de distancia personalizada.chiSqrDist

s1 = silhouette(X,clust,chiSqrDist,w)
s1 = 20×1

    0.6288
    0.7239
    0.6244
    0.7696
    0.7957
    0.6688
    0.7386
    0.7865
    0.7223
    0.7572
      ⋮

Establezca el peso de ambas cotas en 1 para utilizarlas como métrica de distancia euclidiana.chiSqrDist Busque valores de silueta y compruebe que son los mismos que los valores de.s

w2 = [1; 1]; s2 = silhouette(X,clust,chiSqrDist,w2); AreValuesEqual = isequal(s2,s)
AreValuesEqual = logical
   1

Los valores de silueta son los mismos en y.ss2

Argumentos de entrada

contraer todo

Datos de entrada, especificados como una matriz numérica de tamaño por.np Las filas corresponden a puntos y las columnas corresponden a las coordenadas.

Tipos de datos: single | double

Asignación de clúster, especificada como una variable categórica, Vector numérico, matriz de caracteres, matriz de cadenas o matriz de celdas de vectores de caracteres que contiene un nombre de clúster para cada punto de.X

trata s y los valores vacíos en como valores faltantes y omite las filas correspondientes de.silhouetteNaNclustX

Tipos de datos: single | double | char | string | cell | categorical

Métrica de distancia, especificada como un vector de caracteres, un escalar de cadena o un identificador de función, como se describe en esta tabla.

MétricasDescripción
'Euclidean'

Distancia euclidiana

'sqEuclidean'

Distancia euclidiana cuadrada (por defecto)

'cityblock'

Suma de las diferencias absolutas

'cosine'

Uno menos el coseno del ángulo incluido entre los puntos (tratado como vectores)

'correlation'

Uno menos la correlación de muestra entre puntos (tratado como secuencias de valores)

'Hamming'

Porcentaje de coordenadas que difieren

'Jaccard'

Porcentaje de coordenadas distintas de cero que difieren

VectorUn vector de fila numérico de distancias en pares, en el formulario creado por la función. no se utiliza en este caso, y se puede establecer con seguridad.pdistX[]
@distfun

Mango de función de distancia personalizado. Una función de distancia tiene la forma

function D = distfun(X0,X,DistParameter)
% calculation of distance
...
Dónde

  • es a-por-vector que contiene un solo punto (observación) de la matriz de datos de entrada.X01pX

  • es una-por-matriz de puntos.Xnp

  • representa uno o varios valores de parámetro adicionales específicos paraDistParameter @distfun.

  • es un vector de distancias, y es la distancia entre las observaciones y.Dn1D(k)X0X(k,:)

Para obtener más información, consulte.Las métricas de distancia

Ejemplo: 'cosine'

Tipos de datos: char | string | function_handle | single | double

Valor de parámetro de métrica de distancia, especificado como un escalar positivo, un vector numérico o una matriz numérica. Este argumento solo es válido cuando se especifica un identificador de función de distancia personalizado @distfun que acepte uno o varios valores de parámetro además de los parámetros de entrada y.X0X

Ejemplo: Dónde y son los valores de parámetros métricos de distancia adicionales parasilhouette(X,clust,distfun,p1,p2)p1p2 @distfun

Tipos de datos: single | double

Argumentos de salida

contraer todo

Valores de silueta, devueltos como un vector de valores que van desde a.n1–11 Un valor de silueta mide la forma en que un punto es similar a los puntos de su propio clúster, en comparación con los puntos de otros clústeres. Los valores van desde a.–11 Un valor de silueta alto indica que un punto está bien adaptado a su propio clúster y que no coincide con otros clústeres.

Tipos de datos: single | double

Identificador de figura, devuelto como un escalar. Puede usar el identificador de figura para consultar y modificar las propiedades de la figura. Para obtener más información, consulte.Figure Properties

Más acerca de

contraer todo

Valor de silueta

El valor de la silueta de cada punto es una medida de lo similar que es ese punto a los puntos de su propio clúster, en comparación con los puntos de otros clústeres. El valor de silueta para el punto TH se define comoSii

Si = (bi-ai)/ max(ai,bi)

donde está la distancia promedio desde el punto de TH a los otros puntos en el mismo clúster como, y es la distancia promedio mínima desde el punto de TH a los puntos en un clúster diferente, minimizado sobre los clústeres.aiiibii

El valor de silueta oscila entre to.–11 Un valor de silueta alto indica que está bien adaptado a su propio clúster y que está mal adaptado a otros clústeres.i Si la mayoría de los puntos tienen un valor de silueta alto, la solución de clustering es adecuada. Si muchos puntos tienen un valor de silueta bajo o negativo, la solución de clustering podría tener demasiados o muy pocos clústeres. Puede utilizar valores de silueta como criterio de evaluación de clustering con cualquier métrica de distancia.

Referencias

[1] Kaufman L., and P. J. Rousseeuw. Finding Groups in Data: An Introduction to Cluster Analysis. Hoboken, NJ: John Wiley & Sons, Inc., 1990.

Introducido antes de R2006a