1. 程式人生 > >多維尺度變換(Multidimensional scaling)

多維尺度變換(Multidimensional scaling)

多維尺度變換是一種視覺化樣本相似度的方法,也是一種降維方法。

它有好幾種類型,根據樣本是否可以計量,可分為度量型多維尺度變換(metric MDS)和非度量型多維尺度變換(non-metric MDS)。在可計量的多維尺度變換中,依據度量的距離標準是否是歐氏距離,分為經典多維尺度變換(classical MDS)和非經典多維尺度變換(non-classical MDS)。

具體公式推導就不說了,我也並不擅長,只是想記錄一下自己的應用,這裡使用的是Matlab中的經典多維尺度變換。

看到該方法可以通過城市間的距離(相似度矩陣)得出城市間的相對位置,於是乎“玩心大起”,用Google地圖測量了一下我國的六個城市:哈爾濱、西安、昆明、深圳、新疆及拉薩的直線距離(公里),以矩陣的形式輸入,最後得出座標圖。

Matlab程式碼:

clc;
clear all;
close all;

cities = {'哈爾濱', '昆明', '西安', '烏魯木齊', '深圳','拉薩'};
d=[ 0	3147	1957	3049	2821	3553;
3147	0	1210	2518	1169	1273;
1957	1210	0	2110	1397	1742;
3049	2518	2110	0	3379	1610;
2821	1169	1397	3379	0	2413;
3553	1273	1742	1610	2413	0
];
[Y,eigvals] = cmdscale(d);
plot(Y(:,1),Y(:,2),'or')
title('我國六大城市相對位置')
text(Y(:,1)+50,Y(:,2)+10,cities)
xlabel('公里')
ylabel('公里')

在這裡插入圖片描述 五個城市間地圖上的位置(下圖上顯示的不是實際公里數,我為了能直觀表示,在幾個城市間來回拉的線): 在這裡插入圖片描述