多维标度(multidimensional scaling,缩写:MDS),又译多维尺度,又称相似度结构分析(similarity structure analysis),属于多重变量分析的方法之一。
背景
-
客观维度
对象的客观属性,比如生产出的杯子有两种颜色,杯子的高度
-
主观维度
消费者认为这个杯子看起来很贵
-
问题
1.主观维度和客观维度之间的不同,消费者感知的主观维度与研究者提出来的客观维度可能并不吻合
2.每个人的主观感知不同,评价标准不同
目标
当n 个对象中各对对象之间的相似性(或距离)给定时,确定这些对象在低维(欧式) 空间中的表示(称为感知图, Perceptual Mapping),并使其尽可能与原先的相似性(或距离)“大体匹配”,使得由降维所引起的任何变形达到最小。MDS可应用于直接给出相似度similarity的数据,也可以用于给出等级rank/preference的数据。
方法对比
-
基于属性的方法:因子分析,聚类分析
给定衡量对象的属性,对于每个对象不同属性之间有详细的评价
- 优点:能够将各对象与属性一起展示
- 缺点:相似度局限于列举出来的属性,数据收集麻烦,基于全体样本给出的解,可能不适用于特别的消费者
-
不基于属性的方法:MDS
不给定衡量对象的属性,对各对象之间整体相似度的比较或者偏好
- 优点:不需要给出详细的属性,可以得出单个消费者的感知图
- 缺点:没有客观的标准来决定维度,无法将主观维度和客观维度之间联系起来,没有统计方法来衡量模型的拟合程度或者代表性。
MDS假设
- 有许多特征是互相关联的,而受测者原本并不知道其特征为何。
- 存在着这样一个空间:它的正交轴是欲寻找的特征。
- 这个特征空间满足这个要求:相似的对象能以相对较小的距离描摹出来
所使用的标量类型
- 序数标量 ordinal
- 区隔标量 interval
- 比率标量 ratio
度量MDS
当利用原始相似性(距离)的实际数值为间隔尺度和比率尺度时称为度量MDS(metric MDS)
非度量MDS
当利用原始相似性(距离)的等级顺序(即有序尺度)而非实际数值时称为非度量MDS(nonmetric MDS)
数据收集
-
相似度数据
-
各对对象的直接比较
让消费者给出对各对对象相似度之间的rank/rate,比如10代表相似度最高,对象1与对象2之间的相似度为9。
-
聚类
让消费者将他们认为相似的对象放在一起,比如认为ABC都属于第一类,EF则属于第二类
- 利用对象之间被放在一起的频率作为相似的的衡量
-
打分
让消费者对每个对象不同的属性进行打分,从打分结果评判对象之间的相似度
-
-
偏好数据
-
直接排序
让消费者依照自己的喜好对各对象进行排序,每个对象在消费者心中有唯一rank。
-
各对比较
让消费者选出对各对对象之间更喜欢的一个
- 从比较数据中提取信息,相比直接排序有更多的信息
-
数据处理
-
客观数据
对于N个对象,有M=N(N-1)/2对能够比较相互之间的不同或是距离,记为
相互之间的不同重新排序:
,其中为M对中最大的距离
需要找到p个维度及相应的值,使得对于第i个对象:
且与之前计算的距离相似
度量MDS:目的:解出X
为距离
假设
使j维度整体中心为原点,即
用来表示:
对角化,,则
-
维度选取
,
如果较小,则可以用p维,此时
e.g: 三个对象的距离矩阵
A | B | C | |
---|---|---|---|
A | 0 | 3 | 3 |
B | 3 | 0 | 1 |
C | 3 | 1 | 0 |
A | B | C | |
---|---|---|---|
A | 3.89 | -1.94 | -1.94 |
B | -1.94 | 1.22 | 0.72 |
C | -1/94 | 0.72 | 1.22 |
对角化:
由于特征值只有2个大于0,因此选取维度为2:
X1 | X2 | |
---|---|---|
A | 1.97 | 0 |
B | -0.99 | 0.5 |
C | -0.99 | -0.5 |
绘图如下:
3.非度量MDS
为排序而非距离度量
-
一个好的转换,使得 序列顺序保持
但
-
Kruskal提出以应力STRESS测量偏离完美匹配的程度
-
为保持序列顺序的单调变换,待确定
- 序数标量 ordinal:用最小平方单调转换
- 区隔标量 interval:保持相似度之间不同
- 比率标量 ratio:保持相似度之间的比率
-
为保持序列顺序的单调变换,待确定
维度数通过最小化Stress来决定
-
拟合优度
Stress 拟合优度 20 Poor 10 Fair 5 Good 2.5 Excellent 0 Perfect
结果解读
- 客观数据:分类对象
- 主观数据:得出人们对对象的评判标准
Individual Differences Scaling “个别差异欧氏距离”模型(加权)
相似度数据由不同的个体提供
INDSCAL假设
- 人们对于一个属性的理解相同,但对其的重要度感知不同
数据处理
个个体,
对于所有个体,第个对象的认识为
-
对于维度,第个个体的重要性认识(权重)为:
-
空间距离:
第i个对象与第k个对象的差异
-
MDS处理偏好数据
- 理想向量定义了一个受访者的对象集合中的有序偏好关系。
- 许多理想向量在同一大方向上的受访者代表了具有类似偏好的潜在市场群体。
e.g:15名受访者对6个对象的偏好进行排名, 根据MDS的二维解决方案绘制在二维平面中
根据受访者的偏好,对这些对象分为4组:
D和E是竞争对手,A和B是竞争对手,C和F没有竞争者
15名受访者的理想向量根据MDS估算
根据受访者的偏好,对市场进行细分
MDPREF model
用户的偏好通过向量表达
用户对特定对象的偏好通过对象向向量投影获得
-
用户偏好的大小与投影的方向与大小有关
e.g
- 假设是度量MDS,代表用户对对象的偏好,为用户偏好代表向量,为对象所在位置的向量,则:
矩阵形式:,m个用户,n个对象,p个维度,Y:mxp 用户的理想向量,X:nxp对象所在位置,S:nxm用户偏好矩阵
-
目前我们获得了用户偏好矩阵,需要反解出用户理想向量和对象坐标
SVD: (非方阵需要奇异值分解),其中与为的特征向量与特征值,为的特征向量
是用户的理想向量,是对象相应坐标
-
如果使用的是标准化后的数据,则,,Y是用户理想向量,X是对象相应坐标。
e.g
Object Subject1 Subject2 Subject3 A 5 3 4 B 4 5 3 C 5 4 3 D 2 1 3 标准化后S:
Object Subject1 Sunject2 Subject3 A 0.70711 -0.14639 1.5 B 0.00000 1.02470 -0.5 C 0.70711 0.43916 -0.5 D -1.41421 -1.31747 -0.5
However, in practical research we often have only rank-order information of the dissimilarities (or proximities), so that transformations that preserve the rank-order of the dissimilarities become admissible.
Ratio and interval MDS are linear MDS models, because the are linear transformations of the . This carries certain linear properties of the data into the corresponding distances.
MDS例子及R实现
- 使用的包
- ggplot2
- smacof
- cmdpref
e.g各大城市之间的飞行距离如下表所示,通过MDS来形成城市的感知图
-
数据
距离越大代表两个城市越不接近,smaller value for similarity,larger value for dissimilarity
- 可以考虑用ratio transformation/interval transformation
- 通过stress大小来判断维度
导入包和数据
library(smacof)
library(ggplot2)
airlines<-read.csv("airlines.csv", header = TRUE,row.names=1)
带入mds模型拟合多个维度
#mds() multidimensional scaling
#delta= dissimilarity matrix
#ndim= number of dimensions
#type="ratio" ratio transformation
fit1<-mds(delta=airlines,ndim=1,type="ratio")
fit1
fit2<-mds(delta=airlines,ndim=2,type="ratio")
fit2
fit3<-mds(delta=airlines,ndim=3,type="ratio")
fit3
fit4<-mds(delta=airlines,ndim=4,type="ratio")
fit4
根据应力大小看,两个维度的应力更小
绘制碎石图
#scree plot
stress<-data.frame(dim=1:4,stress=c(fit1$stress,fit2$stress,fit3$stress,fit4$stress))
ggplot(data=stress,aes(x=dim,y=stress))+ geom_line()+geom_point()
选2个维度比选1个维度更好
MDS后各点坐标以及新的距离矩阵
summary(fit2)
plot(fit2,xlim=c(-1.5,1.2),ylim=c(-0.5,0.7),main="",cex=2)
fit2$confdist
#与实际距离比较
#derived distances vs original distances
plot(fit2,plot.type="Shepard")
e.g 11种车的相似矩阵,模型比较interval和ordinal
数据
模型interval和ordinal及对比
library(smacof)
cars<-read.csv("cars.csv", header = TRUE,row.names=1)
car
#type="interval" interval transformation
fit<-mds(cars,ndim=2,type="interval")
summary(fit)
fit
plot(fit,xlim=c(-1.2,1.3),main="",cex=1)
#type="ordinal" ordinal transformation
fit<-mds(cars,ndim=2,type="ordinal")
summary(fit)
fit
plot(fit,xlim=c(-1.2,1.3),main="",cex=1)
结果
interval:
ordinal:
ordinal的应力更小
结果解释
- Ordinal分析产生了更好的拟合(压力-I = 0.038),而不是Interval分析(压力-I = 0.104)。
- 但两个模型得出的空间是非常相似的。
- 维度1似乎是根据汽车制造商的 "豪华程度 "来划分的,林肯大陆(豪华车)被定位在原点的右边。雪佛兰Corvair和福特Falcon(小型和廉价汽车)被定位在左边。
- 维度2似乎是根据汽车制造商的 "运动性 "来进一步分散它们的位置
- 捷豹、水星美洲狮和普利茅斯梭鱼(运动型汽车)在产地的一侧 福特猎鹰和别克军刀(非运动型汽车)在另一侧
e.g 四个人四张表打同样的N对对象使用indscal
数据
15种类型早餐打分 1:most simila 14:least similar
代码实现indscal模型
library(smacof)
library(ggplot2)
load(file="breakfast2.RData")
#list of individual dissimilarity matrix
#element name is individual ID
#rowname is object name
head(breakfast)
#indscal() indscal model
#ndim= number of dimensions
#type="ordinal" ordinal transformation
# "ratio", "interval"
fit<-indscal(breakfast,ndim=2,type="ordinal")
summary(fit)
fit$stress
#configurations of objects
fit$gspace
plot(fit,xlim=c(-1.1,1.1),ylim=c(-0.6,0.6),cex=2,main="")
#fit$cweight weights of subjects
#extract individual weight into data frame
w<-lapply(fit$cweight,diag)
w<-data.frame(do.call(rbind,w))
w
#plot of weight
ggplot(data=w,aes(x=D1,y=D2)) +geom_point()+geom_text(aes(label=rownames(w),vjust=2)) +
coord_cartesian(xlim=c(0,1.5),ylim=c(0,1.5))
四个消费者对不同维度的权重
结果解读
维度1: 甜度
一端是甜甜圈和糕点,另一端是黄油吐司和面包卷。维度2:面包与非面包产品
将吐司和硬面包卷与松饼和蛋糕分开 (或自制与在面包店购买的面包)-
维度权重:
D1 D2
42 0.7981626 1.4270402
71 1.1754631 0.4975415
101 1.1322652 0.6782787
112 0.8985222 1.2790043受试者71和101是2名男性;受试者42和112是2名女性。
女性的相似性区分依赖于(大致相同)两个维度。
男性的相似性区分主要由第一个维度决定(甜度)
eg.不同的人对一列分别打分,代表preference数据,1=least preferred 5=most preferred 与距离的dissimilarity相反 特殊模型 mdspref
数据 格式必须列是人,行是对象
载入包
devtools::install_github("cwkwanstat/cmdpref")
library(cmdpref)
fit<-cmdpref(newspaper,monotone=T)
par(mar=c(4,4,2,2))
plot(fit)
summary(fit)
monotone=T代表是nonmetric scale的方式
结果
数据是偏好数据,结果会得出理想向量和对象位置
MDPREF model
Description
Metric and non-metric MDPREF model
Usage
cmdpref(pref, ndim = 2, monotone = FALSE, tor = 1e-08, maxit = 50)
Arguments
pref |
Preference data matrix. Rows as objects and columns as subjects. Small value for less preferred and large value for more preferred. |
---|---|
ndim |
Number of dimensions. |
monotone |
TRUE for Kruskal monotonic transformation. FALSE for metric scale. default is false |
tor |
tolerance for monotonic transformation. |
maxit |
maximum number of interactions for monotonic transformation. |
只绘制受访者的位置或者只绘制对象的位置
#object plotplot(fit$score)text(fit$score,labels=rownames(fit$score),cex=0.8,pos=1)#subject plotplot(fit$corr)text(fit$corr,labels=rownames(fit$corr),cex=0.8,pos=
结果解释:用于消费者划分和市场划分
- 报纸位于喜欢它的受访者的相同方向而不喜欢的受访者则在相反的(消极)方向。
- 受访者4最喜欢波士顿环球报和纽约时报,但不喜欢《波士顿先驱报》和《纽约每日新闻》。
受访者1和3最喜欢《波士顿先驱报》。受访者2最喜欢《纽约日报》,其次是《波士顿先驱报》。 - 这些报纸的特点可以从两个方面来定义
维度1显示了全球性报纸(《纽约时报》、《波士顿环球报》)和地方性报纸(《波士顿先驱报》、《纽约时报》)之间的区别。
维度2显示了波士顿(《波士顿先驱报》、《波士顿环球报》)和
纽约报纸(《纽约时报》、《纽约每日新闻》) - 报纸之间位置彼此相距甚远,没有激烈的竞争。
参考资料
1.http://cda.psych.uiuc.edu/mds_509_2013/borg_groenen/chapter_nine.pdf
2.HKU STAT 3613 Marketing Engineering Lecture Notes Chap4