文章目录

写在前面

最近忙于作业一直没有更新,后续会慢慢补上。这次写一下前一阶段学习的多维标度 (Multi-Dimensional Scaling, MDS) 分析的古典解部分,包括欧式型距离矩阵判定定理的证明以及利用R语言进行MDS的古典解实现。

MDS概念与基本思想

MDS是以空间分布的形式表现对象之间相似性亲疏关系的一种多元数据分析方法,其基本思想是将高维坐标中的点投影到低维空间中,保持点彼此之间的相似性尽可能不变。其结果主要是偏好图(又称多维标度图)等。

一些基本概念与定义

距离阵

一个多维标度法MDS古典解的证明与R语言实现_2d_02矩阵多维标度法MDS古典解的证明与R语言实现_参考文献_03,若满足 多维标度法MDS古典解的证明与R语言实现_r语言_04, 多维标度法MDS古典解的证明与R语言实现_r语言_05, 多维标度法MDS古典解的证明与R语言实现_参考文献_06, 多维标度法MDS古典解的证明与R语言实现_r语言_07,则称 多维标度法MDS古典解的证明与R语言实现_参考文献_08距离阵

欧式型距离阵

一个距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_03称为欧式型的,若存在某个正整数多维标度法MDS古典解的证明与R语言实现_r语言_10多维标度法MDS古典解的证明与R语言实现_r语言_10维空间多维标度法MDS古典解的证明与R语言实现_r语言_12中的多维标度法MDS古典解的证明与R语言实现_2d_13个点 多维标度法MDS古典解的证明与R语言实现_r语言_14, 使得
多维标度法MDS古典解的证明与R语言实现_2d_15

欧式型距离阵判定定理

一个多维标度法MDS古典解的证明与R语言实现_2d_02的距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_17是欧式型的充要条件是:多维标度法MDS古典解的证明与R语言实现_r语言_18.

证明 ★ \bigstar ★

必要性

设距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_17是欧式型的,则由欧式型距离阵的定义可知,存在多维标度法MDS古典解的证明与R语言实现_2d_20,使得
多维标度法MDS古典解的证明与R语言实现_参考文献_21
多维标度法MDS古典解的证明与R语言实现_r语言_22可得:
多维标度法MDS古典解的证明与R语言实现_r语言_23
上式中,多维标度法MDS古典解的证明与R语言实现_r语言_24。并注意到

多维标度法MDS古典解的证明与R语言实现_2d_25

其中,
多维标度法MDS古典解的证明与R语言实现_参考文献_26

将上述各式代入 多维标度法MDS古典解的证明与R语言实现_r语言_27

多维标度法MDS古典解的证明与R语言实现_r语言_28

再由多维标度法MDS古典解的证明与R语言实现_2d_29式可分别求得多维标度法MDS古典解的证明与R语言实现_参考文献_30,将其代入式多维标度法MDS古典解的证明与R语言实现_2d_31,得到
多维标度法MDS古典解的证明与R语言实现_参考文献_32

其中多维标度法MDS古典解的证明与R语言实现_r语言_33,即对矩阵B的每个元素,有
多维标度法MDS古典解的证明与R语言实现_2d_34

将上式写成矩阵形式,并注意到
多维标度法MDS古典解的证明与R语言实现_2d_35

多维标度法MDS古典解的证明与R语言实现_r语言_36

多维标度法MDS古典解的证明与R语言实现_参考文献_37

其中多维标度法MDS古典解的证明与R语言实现_r语言_38.

于是得到多维标度法MDS古典解的证明与R语言实现_参考文献_39,用任一多维标度法MDS古典解的证明与R语言实现_2d_13维列向量多维标度法MDS古典解的证明与R语言实现_参考文献_41构造二次型可知,
多维标度法MDS古典解的证明与R语言实现_参考文献_42
所以多维标度法MDS古典解的证明与R语言实现_参考文献_43为半正定阵,必要性得证,下证充分性。

充分性

多维标度法MDS古典解的证明与R语言实现_2d_44多维标度法MDS古典解的证明与R语言实现_参考文献_43的正特征根,多维标度法MDS古典解的证明与R语言实现_r语言_46为对应的特征向量。

由已知条件,多维标度法MDS古典解的证明与R语言实现_r语言_18,根据施密特正交化方法得

多维标度法MDS古典解的证明与R语言实现_参考文献_48

其中多维标度法MDS古典解的证明与R语言实现_r语言_49多维标度法MDS古典解的证明与R语言实现_参考文献_43多维标度法MDS古典解的证明与R语言实现_r语言_10个正特征根多维标度法MDS古典解的证明与R语言实现_参考文献_52多维标度法MDS古典解的证明与R语言实现_r语言_10个列为对应的多维标度法MDS古典解的证明与R语言实现_r语言_10个标准正交化的特征向量。

多维标度法MDS古典解的证明与R语言实现_参考文献_55,为一多维标度法MDS古典解的证明与R语言实现_r语言_56阶矩阵。将多维标度法MDS古典解的证明与R语言实现_2d_57写成多维标度法MDS古典解的证明与R语言实现_参考文献_58,于是有
多维标度法MDS古典解的证明与R语言实现_参考文献_59
多维标度法MDS古典解的证明与R语言实现_2d_60。由此得到多维标度法MDS古典解的证明与R语言实现_r语言_61多维标度法MDS古典解的证明与R语言实现_2d_62两点的距离平方
多维标度法MDS古典解的证明与R语言实现_参考文献_63
根据上述推导可知:存在正整数多维标度法MDS古典解的证明与R语言实现_r语言_10和一个多维标度法MDS古典解的证明与R语言实现_r语言_56阶矩阵多维标度法MDS古典解的证明与R语言实现_r语言_66,使得多维标度法MDS古典解的证明与R语言实现_2d_57多维标度法MDS古典解的证明与R语言实现_参考文献_17的构造点,所以多维标度法MDS古典解的证明与R语言实现_参考文献_17为欧式型。

MDS古典解计算步骤

  1. 由距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_70 构造矩阵多维标度法MDS古典解的证明与R语言实现_2d_71;
  2. 令矩阵多维标度法MDS古典解的证明与R语言实现_r语言_72, 其中多维标度法MDS古典解的证明与R语言实现_r语言_73;
  3. 求矩阵多维标度法MDS古典解的证明与R语言实现_r语言_74的特征根多维标度法MDS古典解的证明与R语言实现_参考文献_75, 若无负特征根,表明多维标度法MDS古典解的证明与R语言实现_参考文献_76, 从而距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_77是欧式型的; 若有负特征根,距离阵多维标度法MDS古典解的证明与R语言实现_参考文献_77一定不是欧式型的。此时令
    多维标度法MDS古典解的证明与R语言实现_r语言_79
    上面两个量相当于主成分分析(PCA)中的累积贡献率;
  4. 多维标度法MDS古典解的证明与R语言实现_r语言_80, 则多维标度法MDS古典解的证明与R语言实现_2d_81的行向量多维标度法MDS古典解的证明与R语言实现_r语言_82即为待求的古典解。

R语言实现

方法一:使用内置的cmdscale()函数

直接输入距离阵即可进行求解

方法二:使用自定义函数

根据定义及计算步骤编写自定义函数

# 输入距离阵D
calc_mds <- function(D) {
dim <- nrow(D)
A <- -1/2*D^2
onen <- matrix(rep(1, dim), nrow=dim)
H <- diag(dim) - 1/dim * onen %*% t(onen)
B <- t(H) %*% A %*% H
val <- eigen(B, symmetric=F)$values
vec <- eigen(B, symmetric=F)$vectors
if (all(val>=0)) {
MDS <- vec[,1:2] %*% diag(sqrt(val[1:2]));
data.frame(points = round(MDS, 3))
}
else
print("距离阵非欧式型!")

}

MDS <- calc_mds(D)
plot(MDS)

参考文献

[1] 王斌会. 多元统计分析及R语言建模(第四版). 暨南大学出版社. 2016.