MATLAB中的多维标度变换

    数据可视化的最重要的目标之一就是获得一些点的远近的直观感觉。通常,我们通过画散点图来做这样的事情。对于某些分析而言,可能不能得到这些数据的点的形式,只是能得到它们之间的相似或不相似。当然就没有点可画。
    即使数据是点的形式而不是距离,这些数据对于散点图可能也是无用的。对于某些类型的数据,测量两个点靠近程度的方室可能不是欧几里得距离。尽管散点图对于比较欧氏距离是方便的,但对于比较其它类型的点间距离或更为一般的相异度量,比如棋盘距离,就不是很有用。还有对于变量个数比较大的情况更是如此,除非可以用较小的维度表示。因此某种维度消减通常是必需的。
    多维标度变换(multidimensional scaling,MDS)就是处理这类问题的一套方法。MDS并不需要原始数据,仅需要提供成对距离或相异度量构成的矩阵。

例1 随机产生四维空间中的10个点,得到它们之间的欧式距离矩阵,然后借助这个距离矩阵分别在2维,3维和4维空间重构10个点,保证尽可能它们之间的距离接近原始给定的距离。
 X = [ normrnd(0,1,10,3), normrnd(0,.1,10,1) ];
D = pdist(X,'euclidean');
[Y,eigvals] = cmdscale(D);
[eigvals eigvals/max(abs(eigvals))]
maxerr4 = max(abs(D - pdist(Y))) % 精确重构
% 在3维空间中较好的重构
maxerr3 = max(abs(D - pdist(Y(:,1:3))))
% 在2维空间中较差的重构
maxerr2 = max(abs(D - pdist(Y(:,1:2))))

ans =

   16.6355    1.0000
   13.6867    0.8227
    5.4325    0.3266
    0.0106    0.0006
    0.0000    0.0000
    0.0000    0.0000
   -0.0000   -0.0000
   -0.0000   -0.0000
   -0.0000   -0.0000
   -0.0000   -0.0000

maxerr4 =

  4.4409e-015

maxerr3 =

    0.0114

maxerr2 =

    2.2709

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值