多维标度法(Multidimensional Scaling),是一种维数缩减方法,把高维的数据点映射到一个低维的流形上;同时也是一种可视化方法,实践中通常利用2D或3D的MDS 结果观察(投影后)点的分布和聚集来研究数据的性质。
简单的说,MDS要处理的问题是:由n个指标(变量)反应的实体(entity),仅知它们之间的某种距离(相异度)或相似度,如何在较低维的流形中推测实体间的原始距离,以反映这n个实体的真实结构关系。MDS起源于心理测量,具有广泛的应用,比如:
- 心理学:研究不同类别的心理刺激(如人格特质,性别角色)或物理刺激(如面孔,声音,颜色,味道)的认知的潜在结构,并绘制这些刺激的“感知图”(perceptual map)
- 市场研究:研究消费者的产品选择和产品偏好,可以识别产品间的联系。社交网络:识别大型网络的集群。
- 以及地理学,生态学,天文学,分子生物学,计算化学,图形学甚至流行音乐研究等等。
MDS不是一个单独的方法,而是有相似思想的不同算法的集合。常用的MDS为距离标度(distance scaling),可以分为度量标度(包括经典标度和最小二乘标度等)和非度量标度。MDS方法和自组织映射(SOM)有着相似的目标。MDS的思想方法在随机森林中也起着重要的作用,同时启发了非线性流形学习。
library(ggplot2)
library(HSAUR2)
voles.mds <- cmdscale(watervoles, k=nrow(watervoles)-1, eig=T)
x = voles.mds$points[,1]
y = voles.mds$points[,2]
p <- ggplot(data.frame(x,y), aes(x,y,label=colnames(watervoles)))
p + geom_point(shape=16, size=3, colour="red") + geom_text(hjust=-0.1, vjust=0.5, alpha=0.5)