多維尺度變換(Multidimensional scaling)
阿新 • • 發佈:2018-12-20
多維尺度變換是一種視覺化樣本相似度的方法,也是一種降維方法。
它有好幾種類型,根據樣本是否可以計量,可分為度量型多維尺度變換(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('公里')
五個城市間地圖上的位置(下圖上顯示的不是實際公里數,我為了能直觀表示,在幾個城市間來回拉的線):