多维尺度分析 MDS

1 目的

已知很多样本点之间的相互距离(以欧式距离为例),但是不知道每个样本点的具体坐标,MDS分析就是要求解出每个样本点的原始坐标,然后保证这些样本点的原始坐标尽量符合这个距离矩阵关系。用一个例子说明一下这个问题,已知中国几大城市之间的距离,但是不知道他们的经纬度,现在要求他们之间的相对位置关系。

 北京天津上海重庆呼市乌市拉萨银川南宁哈尔滨
北京01251239302648033003736119223731230
天津12501150195460433303740131623891207
上海1239115001945171739294157209218922342
重庆300619541945018473202245715709933156
呼市4806041717184702825326071626571710
乌市3300333039293202282502668211142794531
拉萨3736374041572457326026680254734314967
银川119213162092157071621112547026732422
南宁237323891892993265742793431267303592
哈尔滨1230120723423156171045314967242235920

 

2 步骤:

(1)从距离矩阵D中,求解出B。

 (公式1)

其中,B的含义如下式:

(公式2)

X代表每个数据的原始坐标,在本例中,X也就代表这些城市的坐标信息。

公式2与公式1是可以相互推导的。

 

接下来的分析就跟PCA有点相似了。我们知道在PCA中,也是首先求出原始数据的协方差矩阵,然后再计算协方差矩阵的前n个特征值对应的特征向量,就是原始样本点的几个重要的方向。

 

(2)计算B的特征值与特征向量,找到前n个值对应的特征向量。用这些特征值特征向量把B对角化

B = F’ A F

其中A是以前n个特征值为对角线元素的对角阵,F是特征向量组成的矩阵。

因此

然后就可以画出来相对位置了。在选择前n个特征值的时候,如果选择1个,那么会得到他们之间的1维关系,如果n = 2,那么会得到他们之间的二维关系。

 

3 实验结果

 

不是很准确,还是反应了一些大概的方位。

在 MATLAB 中实现多维尺度分析MDS)可以通过内置函数 `cmdscale` 来完成,该函数实现了经典多维尺度分析(Classical MDS)。下面是一个完整的代码示例,涵盖从数据生成、距离计算到降维可视化的过程。 ### 1. 数据准备与距离矩阵计算 ```matlab % 生成一个包含随机样本的高维数据集(例如:10个样本,5维) X = randn(10, 5); % 计算欧氏距离矩阵 D = pdist(X); % 计算成对样本之间的欧氏距离 D_full = squareform(D); % 将距离向量转换为方阵形式 ``` ### 2. 使用 cmdscale 进行经典 MDS 分析 ```matlab % 执行经典MDS降维,得到二维嵌入坐标 [Y, eigvals] = cmdscale(D_full); % Y 是降维后的坐标,eigvals 是特征值,用于判断降维后空间的有效性 % 可视化降维后的结果 figure; scatter(Y(:,1), Y(:,2)); title('MDS Result in 2D Space'); xlabel('Coordinate 1'); ylabel('Coordinate 2'); grid on; % 显示前两个维度的解释能力(通过特征值大小判断) explained_variance = eigvals ./ sum(eigvals); bar(explained_variance(1:2)); title('Explained Variance by First Two Dimensions'); xlabel('Dimension'); ylabel('Variance Explained'); ``` ### 3. 自定义 MDS 实现(非经典) 如果希望使用自定义的距离度量方式或执行非度量型 MDS(Non-metric MDS),可以结合 `mdscale` 函数: ```matlab % 使用非度量MDS进行降维 Y_nonmetric = mdscale(D, 2, 'criterion', 'strain'); % 可视化结果 figure; scatter(Y_nonmetric(:,1), Y_nonmetric(:,2)); title('Non-metric MDS Result'); xlabel('Coordinate 1'); ylabel('Coordinate 2'); grid on; ``` ### 4. 结果解释 - **cmdscale** 返回的 `Y` 是每个样本在低维空间中的坐标。 - 特征值 `eigvals` 反映了每一维的“重要性”或信息保留程度。负值表示该维的空间无法被欧几里得嵌入[^3]。 - 非度量 MDS 更适合处理非线性关系,但计算成本相对较高。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大指挥官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值