music signal分享 http://blog.sciencenet.cn/u/ttschina

博文

[转载]差异矩阵与SPSS层次聚类

已有 3342 次阅读 2010-5-8 12:25 |个人分类:生活点滴|系统分类:科研笔记|文章来源:转载

 

背景知识: 聚类分析中有代表性的数据结构有两种,一种是数据矩阵(data matrix),用p个属性来表现n个对象,是nXp的矩阵;另一种是差异矩阵(dissimilarity matrix),存储n个对象两两之间的相似度,是nXn的矩阵。

前几天有个学生问我是否能用差异矩阵作为输入,选择spss中的Analyze->Classify->Hierarchical cluster来聚类。我的第一反应是不能,早已习惯了横轴是属性纵轴是对象的输入形式。“可它能算出结果,并且很多文献上都是那样操作的”,那学生这样告诉我。

能算出结果这一点不需要讨论,做数据分析的人都知道,蚯蚓数量与GDP之间存在相关性。上期刊网上搜索了一下,确实有很多核心期刊论文在分析时把差异矩阵(或相似矩阵)直接输入spss进行层次聚类,并且把聚类结果分析得头头是道。

这样做究竟对不对呢?

先来看一下spss中Hierarchical cluster操作。以表1中的数据输入为例,其计算步骤包括数据变换、对象之间的距离计算和层次聚类,计算结果就是把属性类似的对象归为一类。

表1:数据矩阵

对象 属性一 属性二 属性三
A X11 X12 X13
B X21 X22 X23
C X31 X32 X33
D X41 X42 X43

假如把差异矩阵(如表2,是一对称矩阵,表中数值表示两个对象的相异度)作为spss层次聚类的输入,由于程序是固定的,自然它依然会像对待数据矩阵那样进行数据变换、距离计算......那么,“距离的距离”是什么?结果如何?

表2 差异矩阵

  A B C D
A 0 DAB DAC DAD
B DBA 0 DBC DBD
C DCA DCB 0 DCD
D DDA DDB DDC 0

 把表3中的实际数据输入spss(参数选项默认,下同),结果见图1。很明显,聚类结果与期望是一样的:对象A、B、D比较相似,C与其他对象距离较远。这是否证明可以把差异矩阵作为spss层次聚类的输入呢?如果是,那其聚类结果特征又是什么?

表3:差异矩阵A

  A B C D
A 0 0.1 0.8 0.1
B 0.1 0 0.8 0.1
C 0.8 0.8 0 0.8
D 0.1 0.1 0.8 0

图1 差异矩阵A的spss聚类结果

  

要回答这些问题,回头看表2中的数据。跟spss程序一样,把表中的列看成属性变量,那么对象A的“属性向量”就是(DAA,DAB,DAC,DAD),即把对象A、B、C、D看成空间中的4个点,对象A与它们的距离分布。同样,对象B的“属性向量”(DBA,DBB,DBC,DBD)也是其与这4个参照点的距离分布。因此,此时对象A与对象B之间的“距离”已经不是原来的DAB,而是向量(DAA,DAB,DAC,DAD)与(DBA,DBB,DBC,DBD)的差异,即与4个参照点的距离分布差异。

这样就很容易图1中计算结果的“正确性”了。以图2为例,对象A、B、D不仅距离较近,其距离分布(DAA,DAB,DAC,DAC)、(DBA,DBB,DBC,DBD)、(DCA,DCB,DCC,DCD)跟对象D的距离分布(DDA,DDB,DDC,DDD)相比自然也更为相似,所以被归成一类。同一类中的对象,在与所有对象的空间距离分布上更为类似,这在直观判断上是理所当然的。

图2 对象分布示例

但这是否说明可以将差异矩阵作为spss输入进行层次聚类呢?答案是否定的。以表4中的数据输入spss,结果见图3。很显然,这结果是不对的,因为表4中距离最近的是对象A和D,它们应该首先归为一类,而不应该是图3中的对象A和B。其错误的原因就是把“距离的距离”作为聚类条件,实质上是对原有距离的一种加权平均。在类间距离比较大的情况下将差异矩阵输入spss,有可能得到与数据矩阵输入相同的结果;但当类间距离不那么明显时,结果就很难预料。所以在选择spss进行层次聚类时,还是别把差异矩阵作为输入为好。

表4 差异矩阵B

  A B C D
A 0 0.4 0.4 0.3
B 0.4 0 0.4 0.4
C 0.4 0.4 0 0.8
D 0.3 0.4 0.8 0

图3 差异矩阵B的spss聚类结果 

如果手头的数据就是差异矩阵,那么选择什么工具来完成聚类呢?解决方法有:(1)自己写程序(嘿嘿,好像是废话);(2)用SAS软件(据说能接受差异矩阵输入,尚未尝试,欢迎有心人告诉我);(3)用matlab中的linkage函数(这个试过,结果正确,就是结果图形有点难看)。

本文引用地址: http://www.sciencenet.cn/m/user_content.aspx?id=313758


http://blog.sciencenet.cn/blog-436588-321413.html

上一篇:[转载]人工智能、模式识别、神经网络实验室网站
下一篇:[转载]怎样做一个好报告

0

发表评论 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-11-22 11:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部