cmdscale

Классическое многомерное масштабирование

Синтаксис

Y = cmdscale(D)
[Y,e] = cmdscale(D)
[Y,e] = cmdscale(D,p)

Описание

Y = cmdscale(D) принимает n-by- n матрица расстояний D, и возвращает n-by- p матрица строения Y. Строки Y являются координатами n точки в p-мерное пространство для некоторых p < n. Когда D является евклидовой матрицей расстояний, расстояния между этими точками заданы как D. p - размерность наименьшего пространства, в котором n точки, межточечные расстояния которых заданы D может быть встроен.

[Y,e] = cmdscale(D) также возвращает собственные значения Y*Y'. Когда D Евклид, первый p элементы e положительны, остальные равны нулю. Если первый k элементы e намного больше остальных (n-k), тогда можно использовать первый k столбцы Y как k-мерные точки, межточечные расстояния которых аппроксимируют D. Это может обеспечить полезное уменьшение размерности для визуализации, например, для k = 2.

D не обязательно быть евклидовой матрицей расстояний. Если это неевклидова или более общая матрица различий, то некоторые элементы e отрицательные, и cmdscale выбирает p как количество положительных собственных значений. В этом случае сокращение до p или меньшее количество размерностей обеспечивает разумное приближение к D только если отрицательные элементы e малы по величине.

[Y,e] = cmdscale(D,p) также принимает положительное целое число p от 1 до n. p задает размерность необходимого встраивания Y. Если a p размерное вложение возможно, тогда Y будет иметь размер n-by- p и e будет иметь размер p-by-1. Если только q размерное вложение с q < p возможно, тогда Y будет иметь размер n-by- q и e будет иметь размер p-by-1. Определение p может уменьшить вычислительную нагрузку при n очень большой.

Можно задать D как полная матрица расхождения, или в форме вектора верхнего треугольника, такой как выводится pdist. Полная матрица различий должна быть действительной и симметричной, и иметь нули вдоль диагональных и положительных элементов повсюду. Матрица неоднородности в форме верхнего треугольника должна иметь вещественные, положительные значения. Можно также задать D как полная матрица подобия, с таковыми по диагонали и всеми остальными элементами меньше единицы. cmdscale преобразует матрицу подобия в матрицу различия таким образом, чтобы расстояния между точками, возвращенными в Y равны или аппроксимированы sqrt(1-D). Чтобы использовать другое преобразование, вы должны преобразовать сходства перед вызовом cmdscale.

Примеры

свернуть все

В этом примере показано, как создать карту 10 городов США на основе расстояний между этими городами, используя cmdscale.

Сначала создайте матрицу расстояния и передайте ее в cmdscale. В этом примере D является матрицей полного расстояния: она квадратная и симметричная, имеет положительные значения от диагонали и имеет нули на диагонали.

cities = ...
{'Atl','Chi','Den','Hou','LA','Mia','NYC','SF','Sea','WDC'};
D = [    0  587 1212  701 1936  604  748 2139 2182   543;
       587    0  920  940 1745 1188  713 1858 1737   597;
      1212  920    0  879  831 1726 1631  949 1021  1494;
       701  940  879    0 1374  968 1420 1645 1891  1220;
      1936 1745  831 1374    0 2339 2451  347  959  2300;
       604 1188 1726  968 2339    0 1092 2594 2734   923;
       748  713 1631 1420 2451 1092    0 2571 2408   205;
      2139 1858  949 1645  347 2594 2571    0  678  2442;
      2182 1737 1021 1891  959 2734 2408  678    0  2329;
       543  597 1494 1220 2300  923  205 2442 2329     0];
[Y,eigvals] = cmdscale(D);

Далее посмотрите на собственные значения, возвращенные cmdscale. Некоторые из них отрицательны, что указывает на то, что исходные расстояния не евклидовы. Это происходит из-за искривления земли.

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

   9.5821e+06            1
   1.6868e+06      0.17604
       8157.3    0.0008513
       1432.9   0.00014954
       508.67   5.3085e-05
       25.143    2.624e-06
   6.5103e-10   6.7942e-17
       -897.7  -9.3685e-05
      -5467.6   -0.0005706
       -35479   -0.0037026

Однако в этом случае два крупнейших положительных собственных значения намного больше по величине, чем оставшиеся собственные значения. Итак, несмотря на отрицательные собственные значения, первые две координаты Y достаточны для разумного воспроизведения D.

Dtriu = D(find(tril(ones(10),-1)))';
maxrelerr = max(abs(Dtriu-pdist(Y(:,1:2))))./max(Dtriu)
maxrelerr = 
    0.0075371

Вот график реконструированных городских локаций как карта. Ориентация реконструкции произвольна.

plot(Y(:,1),Y(:,2),'.')
text(Y(:,1)+25,Y(:,2),cities)
xlabel('Miles')
ylabel('Miles')

Figure contains an axes. The axes contains 11 objects of type line, text.

Определите, как изменяется качество реконструкции, когда вы уменьшаете точки до расстояний, используя различные метрики.

Сгенерируйте десять точек в 4-D пространстве, которые близки к трехмерному пространству. Возьмем линейное преобразование точек так, чтобы их преобразованные значения были близки к 3-D подпространству, которое не совпадает с осями координат.

rng default   % Set the seed for reproducibility
A = [normrnd(0,1,10,3) normrnd(0,0.1,10,1)];
B = randn(4,4);
X = A*B;

Уменьшите точки в X к расстояниям при помощи Евклидовой метрики. Найдите строение Y с межточечными расстояниями.

D = pdist(X,'euclidean');
Y = cmdscale(D);

Сравните качество реконструкций при использовании 2, 3 или 4 размерностей. Малая maxerr3 значение указывает, что первые 3 размерности обеспечивают хорошую реконструкцию.

maxerr2 = max(abs(pdist(X)-pdist(Y(:,1:2)))) 
maxerr2 = 0.1631
maxerr3 = max(abs(pdist(X)-pdist(Y(:,1:3)))) 
maxerr3 = 0.0187
maxerr4 = max(abs(pdist(X)-pdist(Y)))
maxerr4 = 2.9310e-14

Уменьшите точки в X к расстояниям при помощи 'cityblock' метрический. Найдите строение Y с межточечными расстояниями.

D = pdist(X,'cityblock');
[Y,e] = cmdscale(D);

Оцените качество реконструкции. e содержит по меньшей мере один отрицательный элемент большой величины, что может быть результатом низкого качества реконструкции.

maxerr = max(abs(pdist(X)-pdist(Y)))
maxerr = 9.0488
min(e)
ans = -5.6586

Ссылки

[1] Себер, Г. А. Ф. Многомерные наблюдения. Hoboken, NJ: John Wiley & Sons, Inc., 1984.

См. также

| |

Представлено до R2006a