《数据仓库与数据挖掘》实验二聚类分实验报告37

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二、聚类分析实验报告
一、实验目的
通过计算机编程实现并验证谱系聚类法的模式分类能力,了解和掌握最小距离归类原则在模式识别中的重要作用与地位。

二、实验内容
1)用Matlab 实现谱系聚类算法,并对给定的样本集进行分类;
2)通过改变实验参数,观察和分析影响谱系聚类算法的分类结果与收敛速度的因素;
三、实验原理、方法和手段
人类认识世界往往首先将被认识的对象进行分类,聚类分析是研究分类问题的多元数据分析方法,是数值分类学中的一支。

多元数据形成数据矩阵,见下表1。

在数据矩阵中,共有n 个样品 x 1,x 2,…,x n (列向),p 个指标(行向)。

聚类分析有两种类型:按样品聚类或按变量(指标)聚类。

距离或相似系数代表样品或变量之间的相似程度。

按相似程度的大小,将样品(或变量)逐一归类,关系密切的类聚到一个小的分类单位,然后逐步扩大,使得关系疏远的聚合到一个大的分类单位,直到所有的样品(或变量)都聚集完毕,形成一个表示亲疏关系的谱系图,依次按照某些要求对样品(或变量)进行分类。

⑴ 分类统计量----距离与相似系数
① 样品间的相似性度量----距离
用样品点之间的距离来衡量各样品之间的相似性程度(或靠近程度)。

设(,)i j d x x 是样品 ,i j x x 之间的距离,一般要求它满足下列条件:
1)(,)0,(,)0;2)(,)(,);
3)(,)(,)(,).
i j i j i j i j j i i j i k k j d x x d x x x x d x x d x x d x x d x x d x x ≥=⇔==≤+且
在聚类分析中,有些距离不满足3),我们在广义的角度上仍称它为距离。

欧氏距离
1
2
21(,)()p
i j ik jk k d x x x x =⎡⎤
=-⎢⎥⎣⎦

⏹ 绝对距离
1
(,)||p
i j ik jk k d x x x x ==-∑
⏹ Minkowski 距离
1
1(,)()p
m
m i j ik jk k d x x x x =⎡⎤
=-⎢⎥⎣⎦

⏹ Chebyshev 距离
1(,)max ||i j ik jk k p
d x x x x ≤≤=-
⏹ 方差加权距离
1
2
2
2
1()(,)p
ik jk i j k k x x d x x s =⎡⎤
-=⎢⎥⎢⎥⎣⎦
∑ 其中 2
211
11,().1n n ik k ik k i i x x s x x n n ====--∑∑ ⏹ 马氏距离
11
2
(,)()()T i j i j i j d x x x x S x x -⎡⎤=--⎣⎦
其中 S 是由样品12,,...,,...,j n x x x x 算得的协方差矩阵:
11
11,()()1n n T i i i i i x x S x x x x n n ====---∑∑ 样品聚类通常称为Q 型聚类,其出发点是距离矩阵。

② 变量间的相似性度量----相似系数
当对p 个指标变量进行聚类时,用相似系数来衡量变量之间的相似程度(或关联程度)。

一般地,若 c αβ表示变量,αβx x 之间的相似系数,应满足:
1)||11;
2)1(0);3).
c c c x cx c c c αβαααβαβαββα≤==±⇔=≠=且 c αβ的绝对值越接近于1,说明变量 ,αβx x 的关联越大。

相似系数中最常用的是相关系数与夹角余弦。

⏹ 相关系数
变量,αβx x 之间的相关系数定义为:
()()
,n
i
i
x x x x s r ααββαβ--=
=

事实上,r αβ是变量,αβx x 的观测值
1212(,,...,)(,,...,)T T n n x x x x x x αααβββ与
之间的相关系数。

⏹ 夹角余弦
变量,αβx x 的观测值 1212(,,...,)(,,...,)T T n n x x x x x x αααβββ与,其夹角余弦定义为:
n
i
i
x x c αβ
αβ=

变量聚类通常称为 R 型聚类。

在 R 型聚类中,相似系数矩阵 C 是出发点,相似系数矩阵可以是相关矩阵,也可以是夹角余弦矩阵。

⑵ 谱系聚类法
① 类间距离定义
为简单起见,以i ,j 分别表示样品,i j x x ,以d ij 简记i ,j 之间的距离(,)i j d x x 。

G p ,G q 分别表示两个类,设它们分别含有n p ,n q 个样品。

若类G p 中有样品12,,...,p n x x x ,则其均值
1
1p
n p i
i p
x x
n ==

称为类 G p 的重心。

类G p 与G q 之间的距离记为 D pq ,有多种多样定义方式。

⏹ 最短距离
,min p q
pq ij i G j G D d ∈∈=
⏹ 最长距离
,max p q
pq ij i G j G D d ∈∈=
⏹ 类平均距离
1p q
pq ij
i G j G p q
D d
n n ∈∈=
∑∑
⏹ 重心距离
(,)pq p q D d x x =
⏹ 离差平方和距离
2()()p q T pq
p q p q p q
n n D x x x x n n =
--+
② 类间距离的递推公式
按照谱系聚类法的思想,先将样品聚合成小类,在逐步扩大为大类。

设类 G r 由类G p 、G q 合并所得,则G r 包含n r =n p +n q 个样品。

问题:由G p ,G q 与其它类G k (k≠p,q)的距离计算G r 与G k (k≠p,q )的距离,即建立类间距离的递推公式。

⏹ 最短距离
min{,}rk pk qk D D D =
⏹ 最长距离
max{,}rk pk qk D D D =
⏹ 类平均距离
p q rk pk qk r
r
n n D D D n n =
+
⏹ 重心距离
2
222
p q
p q rk
pk
qk
pq r r r r
n n n n D D D D n n n n =+-⋅
⏹ 离差平方和距离
2222
p k q k k
rk
pk
qk pq
r k
r k
r k n n n n n D D D D n n n n n n ++=
+
-
+++ ③ 谱系聚类法的步骤
谱系聚类法的步骤如下:
Step1 n 个样品开始时作为 n 个类,计算两两之间的距离,构成一个对称距离矩阵:
121212(0)120...0......0n n n n d d d d D d d ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
此时,D pq =d pq ;
Step2 选择 D (0)中的非对角线上的最小元素,设这个最小元素是 D pq 。

此时,G p ={x p },G q ={x q }。

将G p ,G q 合并成一个新类G r ={G p ,G q }。

在 D (0)中消去G p 和G q 所对应的行与列,并加入有新类G r 与剩下的其它未聚合的类间的距离所组成的一行和一列,得到一个新的距离矩阵D (1),它是n-1阶方阵;
Step3 从 D (1)出发重复 Step2 的作法得 D (2),再由D (2)出发重复上述步骤,直到n 个样品聚为1个大类为止;
注意: 在合并过程中要记下合并样品的编号及两类合并时的水平(即距离)并绘制聚类谱系图。

④ 谱系聚类法的统计量
用谱系聚类法聚类时,聚多少类合适,这是一个实际的问题。

一个较好的聚类应该在类内阁样品尽可能相似的前提下,使得类的个数尽可能少。

这里需要考虑谱系距离用到的统计量,利用它们,可以在一定程度上判别聚多少类为合适。

⏹ R2统计量
设谱系得第 G 层共有G 个类,定义
1
1
()(),n
G
T
i i G k i k T x x x x P S ===--=∑∑
其中 11()(),,k
n T
k i k
i k i k i G i S x x x x x x x n ∈==--=∑∑为G k 的重心,S k 越小,说明G k
中各样品越相似。

定义 R 2 统计量如下:
21/G R P T =-
R 2总是随着分类数目的减少而减小,可以从R 2值的变化看n 个样品分成几类最合适。

比如,分为5类以前各类的R 2减小较缓慢;假定分为5类时,R 2=0.85,而下一次合并,
即分为4类时R 2减小较快,如R 2=0.35,则认为分为5类较合适。

⏹ 半偏相关统计量
这一统计量与离差平方和距离有关。

设类 G p ,G q 的离差平方和分别是: ()(),()(),p
q
T T p i p i p q i q i q i G i G S x x x x S x x x x ∈∈=--=--∑∑
将 G p ,G q 合并成G r 后的离差平方和为
()(),r
T r i r i r i G S x x x x ∈=--∑
合并后的离差平方和增量为
2
()()p q
p q
T pq r p q p q p q p q r
r
n n n n W S S S x x x x x x n n ++=--=
--=
-
定义半偏相关统计量为:
/pq SPRSQ W T =
SPRSQ 是上一步R 2值与该步R 2值的差值,当SPRSQ 值越大时,说明上一次合并效果越好。

⏹ 伪F 统计量 伪F 统计量 PSF 是
()/(1)
/()
G G T P G PSF P n G --=
- PSF 值越大表示这些观测可显著地分为 G 个类。

⏹ 伪 t2 统计量
设S p ,S q ,W pq 的含义如前所述,定义伪 t 2 统计量为
2()/(2)pq
p q p q W PST S S n n =
++- PST2大,说明合并G p ,G q 为G r 后,使得离差平方和的增量W pq 相对于原G p ,G q 的类内离差平方和大。

这表明合并的两个类G p ,G q 是很分开的,也就是上一次聚类效果较好。

四、Matlab 中相关函数介绍
⏹ pdist 函数
调用格式:Y=pdist(X,’metric’)
说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。


X :一个m×n 的矩阵,它是由m 个对象组成的数据集,每个对象的大小为
n 。

metric’取值如下:
‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离; ‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离; ‘minkowski’:明可夫斯基距离;‘cosine’: ‘correlation’: ‘hamming’:
‘jaccard’: ‘chebychev’:Chebychev 距离。

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

⏹ linkage 函数
调用格式:Z=linkage(Y,’method’)
说明:用‘method’参数指定的算法计算系统聚类树。

Y:pdist函数返回的距离向量;
method:可取值如下:
‘single’:最短距离法(默认);‘complete’:最长距离法;
‘average’:未加权平均距离法;‘weighted’:加权平均法;
‘centroid’:质心距离法;‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
返回:Z为一个包含聚类树信息的(m-1)×3的矩阵。

⏹dendrogram函数
调用格式:[H,T,…]=dendrogram(Z,p,…)
说明:生成只有顶部p个节点的冰柱图(谱系图)。

⏹cophenet函数
调用格式:c=cophenetic(Z,Y)
说明:利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。

⏹cluster 函数
调用格式:T=cluster(Z,…)
说明:根据linkage函数的输出Z 创建分类。

⏹clusterdata函数
调用格式:T=clusterdata(X,…)
说明:根据数据创建分类。

T=clusterdata(X,cutoff)与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
五、实例编程实现
为了研究世界各国森林、草原资源的分布规律,共抽取了21个国家的数据,每个国家4项指标,原始数据见下表1。

使用该原始数据对国别进行聚类分析。

表1 抽样数据表
要求:
①利用clusterdata函数对样本数据进行一次聚类;
②分步聚类:
(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;
(2)用linkage函数定义变量之间的连接;
(3)用cophenetic函数评价聚类信息;
(4)用cluster函数创建聚类。

③比较分析两种方法的优缺点。

六:实验结果
1、利用clusterdata函数对样本数据进行一次聚类,其程序为:
X=[11978 12.5 93.5 31908;
28446 30.4 202.0 23754;
2501 6702 2408 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;
4850 24.6 32.6 7450;
57500 67.6 238.0 15900];
T=clusterdata(X,0.9);%进行一次聚类
%利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离;
2、分步聚类
程序为:
%Step1 Ñ°ÕÒ±äÁ¿Ö®¼äµÄÏàËÆÐÔ
X2=zscore(X); %±ê×¼»¯Êý¾Ý
Y2=pdist(X2,'seuclidean'); %¼ÆËã¾àÀë
%Step2 ¶¨Òå±äÁ¿Ö®¼äµÄÁ¬½Ó
Z2=linkage(Y2,'weighted');
%Step3 ÆÀ¼Û¾ÛÀàÐÅÏ¢
C2=cophenet(Z2,Y2); %0.94698
%Step4 ´´½¨¾ÛÀ࣬²¢×÷³öÆ×ϵͼ
T=cluster(Z2,6);
H=dendrogram(Z2);
聚类的结果如下图所示:。

相关文档
最新文档