exponenta event banner

cmdscale

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

Синтаксис

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

Описание

Y = cmdscale(D) принимает nоколо-n матрица расстояний Dи возвращает nоколо-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. Если p возможно вложение размеров, то Y будет иметь размер nоколо-p и e будет иметь размер p-по-1. Если только q размерное вложение с q < p возможно, то Y будет иметь размер nоколо-q и e будет иметь размер p-по-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 пространству. Выполните линейное преобразование точек таким образом, чтобы их преобразованные значения были близки к 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] Себер, Г. А. Ф. Многомерные наблюдения. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 1984.

См. также

| |

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