找回密码
 注册
查看: 12427|回复: 0

Matlab聚类分析完美全集,带详细例子

[复制链接]
发表于 2010-6-6 13:22:24 | 显示全部楼层 |阅读模式
聚类分析
人类认识世界往往首先将被认识的对象进行分类,聚类分析是研究分类问题的多元数据分析方法,是数值分类学中的一支。
多元数据形成数据矩阵,见下表1。在数据矩阵中,共有n个样品 x1,x2,…,xn(列向),p个指标(行向)。聚类分析有两种类型:按样品聚类或按变量(指标)聚类。
表1
数据矩阵
样品
指标
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image002.gif
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image004.gif
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image006.gif
聚类分析的基本思想是在样品之间定义距离,在变量之间定义相似系数,距离或相似系数代表样品或变量之间的相似程度。按相似程度的大小,将样品(或变量)逐一归类,关系密切的类聚到一个小的分类单位,然后逐步扩大,使得关系疏远的聚合到一个大的分类单位,直到所有的样品(或变量)都聚集完毕,形成一个表示亲疏关系的谱系图,依次按照某些要求对样品(或变量)进行分类。
一、分类统计量----距离与相似系数
1.样品间的相似性度量----距离
用样品点之间的距离来衡量各样品之间的相似性程度(或靠近程度)。设file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image008.gif是样品 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image010.gif之间的距离,一般要求它满足下列条件:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image012.gif
在聚类分析中,有些距离不满足3),我们在广义的角度上仍称它为距离。
1.1  欧氏距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image014.gif
1.2
绝对距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image016.gif
1.3
Minkowski
距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image018.gif
1.4
Chebyshev
距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image020.gif
1.5 方差加权距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image022.gif
其中 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image024.gif
1.6
马氏距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image026.gif


其中 S 是由样品file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image002.gif算得的协方差矩阵:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image028.gif
样品聚类通常称为Q型聚类,其出发点是距离矩阵。
2.变量间的相似性度量----相似系数
当对p个指标变量进行聚类时,用相似系数来衡量变量之间的相似程度(或关联程度)。一般地,若 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image030.gif表示变量file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image032.gif之间的相似系数,应满足:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image034.gif
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image030.gif的绝对值越接近于1,说明变量 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image032.gif的关联越大。
相似系数中最常用的是相关系数与夹角余弦。
2.1
相关系数
变量file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image032.gif之间的相关系数定义为:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image036.gif
事实上,file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image038.gif是变量file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image032.gif的观测值
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image040.gif
之间的相关系数。
2.2
夹角余弦
变量file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image032.gif的观测值 file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image040.gif,其夹角余弦定义为:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image042.gif
变量聚类通常称为 R 型聚类。在 R 型聚类中,相似系数矩阵 C 是出发点,相似系数矩阵可以是相关矩阵,也可以是夹角余弦矩阵。
二、谱系聚类法
这里所介绍的是样品的谱系聚类法。
1.类间距离定义
为简单起见,以i,j分别表示样品file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image044.gif,以dij简记i,j之间的距离file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image008.gif。Gp,Gq分别表示两个类,设它们分别含有np,nq个样品。若类Gp中有样品file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image047.gif,则其均值
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image049.gif
称为类 Gp 的重心。类Gp与Gq之间的距离记为 Dpq,有多种多样定义方式。
1.1 最短距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image051.gif
1.2 最长距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image053.gif
1.3 类平均距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image055.gif
1.4
重心距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image057.gif
1.5
离差平方和距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image059.gif
2.类间距离的递推公式
按照谱系聚类法的思想,先将样品聚合成小类,在逐步扩大为大类。设类 Gr由类Gp、Gq合并所得,则Gr包含nr=np+nq个样品。
问题:由Gp,Gq与其它类Gk(k≠p,q)的距离计算Gr与Gk(k≠p,q)的距离,即建立类间距离的递推公式。
2.1
最短距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image061.gif
2.2
最长距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image063.gif
2.3
类平均距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image065.gif
2.4
重心距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image067.gif
2.5
离差平方和距离
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image069.gif
3.谱系聚类法的步骤
谱系聚类法的步骤如下:
Step1
n
个样品开始时作为 n 个类,计算两两之间的距离,构成一个对称距离矩阵:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image071.gif
此时,Dpq=dpq;
Step2
选择 D(0)中的非对角线上的最小元素,设这个最小元素是 Dpq。此时,Gp={xp},Gq={xq}。将Gp,Gq合并成一个新类
Gr={Gp,Gq}。在 D(0)中消去Gp和Gq所对应的行与列,并加入有新类Gr与剩下的其它未聚合的类间的距离所组成的一行和一列,得到一个新的距离矩阵D(1),它是n-1阶方阵;
Step3
从 D(1)出发重复 Step2 的作法得 D(2),再由D(2)出发重复上述步骤,直到n个样品聚为1个大类为止;
注意
在合并过程中要记下合并样品的编号及两类合并时的水平(即距离)并绘制聚类谱系图。
4.谱系聚类法的统计量
用谱系聚类法聚类时,聚多少类合适,这是一个实际的问题。一个较好的聚类应该在类内阁样品尽可能相似的前提下,使得类的个数尽可能少。这里需要考虑谱系距离用到的统计量,利用它们,可以在一定程度上判别聚多少类为合适。
4.1 R2统计量
设谱系得第 G 层共有G个类,定义
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image073.gif
其中
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image075.gif为Gk的重心,Sk越小,说明Gk中各样品越相似。
定义 R2 统计量如下:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image077.gif
R2总是随着分类数目的减少而减小,可以从R2值的变化看n个样品分成几类最合适。比如,分为5类以前各类的R2减小较缓慢;假定分为5类时,R2=0.85,而下一次合并,即分为4类时R2减小较快,如R2=0.35,则认为分为5类较合适。
4.2
半偏相关统计量
这一统计量与离差平方和距离有关。设类 Gp,Gq的离差平方和分别是
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image079.gif
将 Gp,Gq合并成Gr后的离差平方和为
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image081.gif
合并后的离差平方和增量为
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image083.gif
定义半偏相关统计量为:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image085.gif
SPRSQ是上一步R2值与该步R2值的差值,当SPRSQ值越大时,说明上一次合并效果越好。
4.3 伪F统计量
伪F统计量 PSF是
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image087.gif
PSF值越大表示这些观测可显著地分为 G 个类。
4.4 伪 t2 统计量
设Sp,Sq,Wpq的含义如前所述,定义伪 t2 统计量为
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image089.gif
PST2大,说明合并Gp,Gq为Gr后,使得离差平方和的增量Wpq相对于原Gp,Gq的类内离差平方和大。这表明合并的两个类Gp,Gq是很分开的,也就是上一次聚类效果较好。
三、快速聚类法
参见:范金城,梅长林. 数据分析(P228-241).北京:科学出版社。
聚类分析课堂例题
为了研究世界各国森林、草原资源的分布规律,共抽取了21个国家的数据,每个国家4项指标,原始数据见下表1。使用该原始数据对国别进行聚类分析。
表1 抽样数据表
国别
森林面积(万公顷)
森林覆盖率(%)
林木蓄积量(亿立方米)
草原面积(万公顷)
中国
11978
12.5
93.5
31908
美国
28446
30.4
202.0
23754
日本
2501
67.2
24.8
58
德国
1028
28.4
14.0
599
英国
210
8.6
1.5
1147
法国
1458
26.7
16.0
1288
意大利
635
21.1
3.6
514
加拿大
32613
32.7
192.8
2385
澳大利亚
10700
13.9
10.5
45190
前苏联
92000
41.1
841.5
37370
捷克
458
35.8
8.9
168
波兰
868
27.8
11.4
405
匈牙利
161
17.4
2.5
129
南斯拉夫
929
36.3
11.4
640
罗马尼亚
634
26.7
11.3
447
保加利亚
385
34.7
2.5
200
印度
6748
20.5
29.0
1200
印尼
2180
84.0
33.7
1200
尼日利亚
1490
16.1
0.8
2090
墨西哥
4850
24.6
32.6
7450
巴西
57500
67.6
238.0
15900

Matlab

Matlab提供了两种方法进行聚类分析。
一种是利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法;
另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用 linkage函数定义变量之间的连接;(3)用 cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。
1.Matlab中相关函数介绍
1.1
pdist
函数
调用格式:Y=pdist(X,’metric’)
说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。’
X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。
metric’取值如下:
‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离;
‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离;
‘minkowski’:明可夫斯基距离;‘cosine’:
‘correlation’
‘hamming’:
‘jaccard’

‘chebychev’:Chebychev距离。
1.2
squareform
函数

调用格式:Z=squareform(Y,..)

说明:
强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。
1.3
linkage
函数
调用格式:Z=linkage(Y,’method’)

明:用‘method’参数指定的算法计算系统聚类树。

Y
:pdist函数返回的距离向量;

method
:可取值如下:

‘single’
:最短距离法(默认);
‘complete’:最长距离法;
‘average’:未加权平均距离法;
‘weighted’:加权平均法;
‘centroid’: 质心距离法;
‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
返回:Z为一个包含聚类树信息的(m-1)×3的矩阵。
1.4
dendrogram
函数
调用格式:[H,T,…]=dendrogram(Z,p,…)
说明:生成只有顶部p个节点的冰柱图(谱系图)。
1.5
cophenet
函数
调用格式:c=cophenetic(Z,Y)
说明:利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。
1.6
cluster
函数
调用格式:T=cluster(Z,…)
说明:根据linkage函数的输出Z 创建分类。
1.7
clusterdata
函数
调用格式:T=clusterdata(X,…)
说明:根据数据创建分类。
T=clusterdata(X,cutoff)与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
2. Matlab程序
2.1 一次聚类法
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9)
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image091.gif
谱系图
分类结果:
2.2
分步聚类
Step1
寻找变量之间的相似性
用pdist函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用zscore函数进行标准化。
X2=zscore(X);
%
标准化数据
Y2=pdist(X2);
%
计算距离
Step2   定义变量之间的连接
Z2=linkage(Y2);
Step3
评价聚类信息

C2=cophenet(Z2,Y2);
//0.94698
Step4 创建聚类,并作出谱系图

T=cluster(Z2,6);

H=dendrogram(Z2);
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/07/clip_image093.gif
谱系图
分类结果:{加拿大},{中国,美国,澳大利亚},{日本,印尼},{巴西},{前苏联}
剩余的为一类。,
2 2 4 3 3 3 3 1 2 6 3 3 3 3 3 3 3 4 3 3 5
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 23:58 , Processed in 0.042825 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表