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.

El escalado multidimensional clásico

Este ejemplo muestra cómo utilizar para realizar el escalado multidimensional clásico (métrico), también conocido como análisis de coordenadas principales.cmdscale

toma como entrada una matriz de distancias inter-punto y crea una configuración de puntos.cmdscale Idealmente, esos puntos están en dos o tres dimensiones, y las distancias euclidiana entre ellos reproducen la matriz de distancia original. Por lo tanto, un gráfico de dispersión de los puntos creados proporciona una representación visual de las distancias originales.cmdscale

Como ejemplo muy sencillo, puede reconstruir un conjunto de puntos sólo a partir de sus distancias entre puntos. En primer lugar, cree algunos puntos tridimensionales con un componente pequeño en su cuarta coordenada y reducirlos a distancias.

rng default;  % For reproducibility X = [normrnd(0,1,10,3),normrnd(0,.1,10,1)]; D = pdist(X,'euclidean');

A continuación, se utiliza para buscar una configuración con esas distancias entre puntos. acepta distancias como una matriz cuadrada o, como en este ejemplo, en la forma vectorial superior-triangular producida por.cmdscalecmdscalepdist

[Y,eigvals] = cmdscale(D);

produce dos salidas.cmdscale La primera salida, es una matriz que contiene los puntos reconstruidos.Y La segunda salida,, es un vector que contiene los valores ordenados de lo que a menudo se conoce como la "matriz de producto escalar", que, en el caso más simple, es igual a.eigvalsY*Y' Las magnitudes relativas de estos valores propios indican la contribución relativa de las columnas correspondientes de la reproducción de la matriz de distancia original con los puntos reconstruidos.YD

format short g [eigvals eigvals/max(abs(eigvals))]
ans = 10×2

        35.41            1
       11.158      0.31511
       1.6894      0.04771
       0.1436    0.0040553
   7.9529e-15    2.246e-16
    4.564e-15   1.2889e-16
   2.6538e-15   7.4944e-17
  -2.2475e-17  -6.3471e-19
  -3.6359e-16  -1.0268e-17
  -3.3335e-15  -9.4139e-17

Si sólo contiene valores propios positivos y nulos (dentro del error de redondeo), las columnas correspondientes a los valores eigenpositivos proporcionan una reconstrucción exacta de, en el sentido de que sus distancias euclidianas inter-punto, calculadas utilizando, por ejemplo, son idénticos (dentro del redondeo) a los valores en.eigvalsYDpdistD

maxerr4 = max(abs(D - pdist(Y)))   % Exact reconstruction
maxerr4 =     3.5527e-15  

Si dos o tres de los valores eigenson mucho más grandes que el resto, entonces la matriz de distancia basada en las columnas correspondientes de casi reproduce la matriz de distancia original.eigvalsYD En este sentido, esas columnas forman una representación de menor dimensión que describe adecuadamente los datos. Sin embargo, no siempre es posible encontrar una buena reconstrucción de baja dimensión.

maxerr3 = max(abs(D - pdist(Y(:,1:3))))  % Good reconstruction in 3D
maxerr3 =       0.043142  
maxerr2 = max(abs(D - pdist(Y(:,1:2))))  % Poor reconstruction in 2D
maxerr2 =        0.98315  

La reconstrucción en tres dimensiones se reproduce muy bien, pero la reconstrucción en dos dimensiones tiene errores que son del mismo orden de magnitud que los valores más grandes en.DD

max(max(D))
ans =         5.8974  

A menudo, contiene algunos valores propios negativos, lo que indica que las distancias en no se pueden reproducir exactamente.eigvalsD Es decir, puede que no haya ninguna configuración de puntos cuyas distancias euclidianas inter-punto sean dadas por.D Si el valor valor propio negativo más grande es pequeño en magnitud con respecto a los valores eigenpositivos más grandes, entonces la configuración devuelta por podría todavía reproducirse bien.cmdscaleD