多维尺度变换是一种可视化样本相似度的方法,也是一种降维方法。
它有好几种类型,根据样本是否可以计量,可分为度量型多维尺度变换(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('公里')
五个城市间地图上的位置(下图上显示的不是实际公里数,我为了能直观表示,在几个城市间来回拉的线):
参考内容:
1、Multidimensional scaling - Wikipedia
https://en.wikipedia.org/wiki/Multidimensional_scaling
2、MDS(多维尺度法)的原理及MATLAB实现 - Miracle.Zhao的博客 - CSDN博客
https://blog.csdn.net/zhaomengszu/article/details/59560015
3、多维尺度变换(multidimensional scaling, MDS) - mingjinliu的博客 - CSDN博客
https://blog.csdn.net/mingjinliu/article/details/70194660