Multidimensional Scaling MDS 多维标度原理及R实现

多维标度(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。

    • 各对比较

      让消费者选出对各对对象之间更喜欢的一个

      • 从比较数据中提取信息,相比直接排序有更多的信息

数据处理

  1. 客观数据

    对于N个对象,有M=N(N-1)/2对能够比较相互之间的不同或是距离,记为s_{ik},i,k=1,\cdots,N,i<k

    相互之间的不同重新排序:

    s_{i1k1}>s_{i2k2}>\cdots>s_{iMkM} ,其中s_{i1k1}为M对中最大的距离

    需要找到p个维度及相应的值,使得对于第i个对象:

    x=(x_{i1},\cdots,x_{ip})且与之前计算的距离相似d_{ik}=\sqrt {(x_{i1}-x_{k1})^2+ \cdots +(x_{ip}-x_{kp})^2 } \sim s_{ik}

  2. 度量MDS:目的:解出X

  • s_{ik}为距离

  • 假设x_{i}=(x_{i1},\cdots,x_{ip})^T

  • s_{ik}^2=(x_i-x_k)^T(x_i-x_k)=x_i^Tx_i+x_k^Tx_k-2x_i^Tx_k

  • 使j维度整体中心为原点,即\sum_{i=1}^nx_{ij}=0

  • X=[x_1,\cdots ,x_n]^T,B=X^TX,b_{ik}=x_i^Tx_k=-\frac{1}{2}(s_{ik}^2-x_i^Tx_i-x_k^Tx_k)

  • s来表示Bb_{ik}=-\frac{1}{2}s_{ik}^2+\frac {1}{2}\sum_{j=1}^{n}\frac{s_{jk}^2}{n}+\frac{1}{2} \sum_{j=1}^{n} \frac{s_{ij}^2}{n} -\frac{1}{2} \sum_{j=1}^{n} \sum_{l=1}^{n} \frac{s_{jl}^2}{n^2}

  • 对角化BB=U\Lambda U^T,则 X=U\Lambda^{1/2}

  • 维度选取

    B=U\Lambda U^T,B=\lambda _1 u_1u_1^T+\cdots+\lambda_p u_pu_p^T+\lambda_{p+1}u_{p+1}u_{p+1}^T+\cdots+\lambda_{n-1}u_{n-1}u_{n-1}^T

    如果\lambda_{p+1},\cdots,\lambda_{n-1}较小,则可以用p维,此时

    B \approx\lambda _1 u_1u_1^T+\cdots+\lambda_p u_pu_p^T

e.g: 三个对象的距离矩阵

A B C
A 0 3 3
B 3 0 1
C 3 1 0

b_{11}=-\frac{1}{2}s_{11}^2+\frac{1}{2} \frac{s_{11}^2+s_{21}^2+s_{31}^2}{3} +\frac{1}{2} \frac{s_{11}^2+s_{12}^2+s_{13}^2}{3}-\frac{1}{2}\frac{s_{11}^2+\cdots +s_{33}^2}{9}=3.89

A B C
A 3.89 -1.94 -1.94
B -1.94 1.22 0.72
C -1/94 0.72 1.22

对角化:
\Lambda =\left [\matrix { 5.83 & 0 &0 \\ \nonumber 0 & 0.5 & 0 \\ \nonumber 0 & 0 & 0 \nonumber } \right]and \ \ U=\left [\matrix { 0.816 & 0 &0.577 \\ \nonumber -0.408 & 0.707 & 0.577 \\ \nonumber -0.408 & -0.707 & 0.577 \nonumber } \right]
由于特征值只有2个大于0,因此选取维度为2:
X=\left[\matrix{0.816&0\\ \nonumber -0.418&0.797\\ \nonumber -0.408 & -0.707}\right] \left[\matrix{5.83&0\\ \nonumber 0&0.5 \nonumber }\right]^{1/2}

X1 X2
A 1.97 0
B -0.99 0.5
C -0.99 -0.5

绘图如下:

3.非度量MDS

  • s_{ik}为排序而非距离度量

  • 一个好的转换,使得 d_{i1k1}>d_{i2k2}>\cdots>d_{iMkM}序列顺序保持

    s_{imkm}-s_{inkn}\neq d_{imkm}-d_{inkn},s_{imkm}/s_{inkn}\neq d_{imkm}/d_{inkn}

  • Kruskal提出以应力STRESS测量偏离完美匹配的程度

    Stress=\left [ \frac {\sum_{i<k} \left(d_{ik}-\hat {d_{ik}}\right)^2}{\sum_{i<k} d_{ik}^2 } \right ]^{1/2}

    • \hat {d_{ik}}s_{ik}保持序列顺序的单调变换,d_{ik}待确定
      • 序数标量 ordinal:用最小平方单调转换
      • 区隔标量 interval:保持相似度之间不同 f(d)=a+bd
      • 比率标量 ratio:保持相似度之间的比率 f(d)=cd
  • 维度数通过最小化Stress来决定

  • 拟合优度

    Stress 拟合优度
    20\% Poor
    10\% Fair
    5\% Good
    2.5\% Excellent
    0\% Perfect

结果解读

  • 客观数据:分类对象
  • 主观数据:得出人们对对象的评判标准

Individual Differences Scaling “个别差异欧氏距离”模型(加权)

相似度数据由不同的个体提供

INDSCAL假设

  • 人们对于一个属性的理解相同,但对其的重要度感知不同

数据处理

  • j个个体,j=1,\cdots,n

  • 对于所有个体,第i个对象的认识为(x_{i1},\cdots,x_{ip})

  • 对于维度t,第j个个体的重要性认识(权重)为:\omega_{jt},t=1,\cdots,p

    • 空间距离:

      d_{ik,j}^2=\sum_{t=1}^{p}\omega_{jt}(x_{it}-x_{kt})^2 第i个对象与第k个对象的差异

MDS处理偏好数据

  • 理想向量定义了一个受访者的对象集合中的有序偏好关系。
  • 许多理想向量在同一大方向上的受访者代表了具有类似偏好的潜在市场群体。

e.g:15名受访者对6个对象的偏好进行排名, 根据MDS的二维解决方案绘制在二维平面中
根据受访者的偏好,对这些对象分为4组:
D和E是竞争对手,A和B是竞争对手,C和F没有竞争者
15名受访者的理想向量根据MDS估算
根据受访者的偏好,对市场进行细分

MDPREF model

  • 用户的偏好通过向量表达

  • 用户对特定对象的偏好通过对象向向量投影获得

  • 用户偏好的大小与投影的方向与大小有关

    e.g

  • 假设是度量MDS,s_{ij}代表用户j对对象i的偏好,y_j为用户偏好代表向量,x_i为对象所在位置的向量,则:
    s_{ij}=x_i^Ty_j
  • 矩阵形式:S=XY^T,m个用户,n个对象,p个维度,Y:mxp 用户的理想向量,X:nxp对象所在位置,S:nxm用户偏好矩阵

  • 目前我们获得了用户偏好矩阵,需要反解出用户理想向量和对象坐标

    SVD: S=U\Lambda V^T(非方阵需要奇异值分解),其中U\Lambda ^2SS^T的特征向量与特征值,VS^TS的特征向量

  • Y=V\Lambda是用户的理想向量,X=U是对象相应坐标

  • 如果使用的是标准化后的数据,则Y=(n-1)^{-1/2}V\Lambda,X=(n-1)^{1/2}U,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

    S=U\Lambda V^T
    \Lambda=\left [ \matrix{2.319\\ \nonumber 1.809\\ 0.5922}\right] V=\left [ \matrix{0.725&0.0434&-0.687\\ \nonumber 0.587&-0.5596&0.5846\\ 0.359&0.828&0.4314}\right] U=\left [ \matrix{-0.417&0.7485&-0.1277\\ \nonumber -0.182&-0.546&-0.647\\ -0.255&-0.348&0.751\\ 0.8535&0.1449&0.024}\right]

Y=(n-1)^{-1/2}V\Lambda=\left[\matrix{0.971&0.045&-0.235\\ 0.786&-0.584&0.200\\ 0.481&0.864&0.148}\right]X=(n-1)^{1/2}U=\left[\matrix{-0.721&1.296&-0.221\\ \nonumber -0.315&-0.945&-1.121\\ -0.442&-0.6021&1.301\\ 1.478&0.251&0.041}\right]

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 f(p_{ij}s are linear transformations of the p_{ij}s. 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)) 


image-20211031102929635.png

四个消费者对不同维度的权重

结果解读

  • 维度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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341