流形学习(Manifold Learning)是机器学习中一大类算法的统称,而MDS就是其中非常经典的一种方法。多维标度法(Multidimensional Scaling)是一种在低维空间展示“距离”数据结构的多元数据分析技术,简称MDS。
多维标度法解决的问题是:当n个对象(object)中各对对象之间的相似性(或距离)给定时,确定这些对象在低维空间中的表示,并使其尽可能与原先的相似性(或距离)“大体匹配”,使得由降维所引起的任何变形达到最小。多维空间中排列的每一个点代表一个对象,因此点间的距离与对象间的相似性高度相关。也就是说,两个相似的对象由多维空间中两个距离相近的点表示,而两个不相似的对象则由多维空间两个距离较远的点表示。多维空间通常为二维或三维的欧氏空间,但也可以是非欧氏三维以上空间。
多维标度法内容丰富、方法较多。按相似性(距离)数据测量尺度的不同MDS可分为:度量MDS和非度量MDS。当利用原始相似性(距离)的实际数值为间隔尺度和比率尺度时称为度量MDS(metric MDS),本文将以最常用的Classic MDS为例来演示MDS的技术与应用。
首先我们提出这样一个问题,下表是美国十个城市之间的飞行距离,我们如何在平面坐标上据此标出这10城市之间的相对位置,使之尽可能接近表中的距离数据呢?
首先我们在R中把csv格式存储的数据文件读入,如下所示:> data.csv = read.csv("/Users/fzuo/Desktop/data.csv", header = T, row.names = 1)
> data.csv
ATL ORD DEN HOU LAX MIA JFK SFO SEA IAD
ATL 0 587 1212 701 1936 604 748 2139 2182 543
ORD 587 0 920 940 1745 1188 713 1858 1737 597
DEN 1212 920 0 879 831 1726 1631 949 1021 1494
HOU 701 940 879 0 1374 968 1420 1645 1891 1220
LAX 1936 1745 831 1374 0 2339 2451 347 959 2300
MIA 604 1188 1726 968 2339 0 1092 2594 2734 923
JFK 748 713 1631 1420 2451 1092 0 2571 2408 205
SFO 2139 1858 949 1645 347 2594 2571 0 678 2442
SEA 2182 1737 1021 1891 959 2734 2408 678 0 2329
IAD 543 597