Presentation is loading. Please wait.

Presentation is loading. Please wait.

聚类分析( cluster analysis)

Similar presentations


Presentation on theme: "聚类分析( cluster analysis)"— Presentation transcript:

1 聚类分析( cluster analysis)
§3.1 样品(变量)相近性度量 §3.2 系统(谱系)聚类法及MATLAB实现 §3.3 快速聚类法 数学系, 天津理工大学 理学院 张庆月 2016

2 3.1 样品(变量)间相近性度量 3.1.1 聚类分析的基本思想 在生产实际中经常遇到给产品等级进行分类的问题,如一等品、二等品等,在生物学中,要根据生物的特征进行分类;在考古时要对古生物化石进行科学分类;在球类比赛中经常要对各球队进行分组如何确定种子队,这些问题就是聚类分析问题。随着科学技术的发展,我们利用已知数据首先提取数据特征,然后借助计算机依据这些特征进行分类,聚类的依据在于各类别之间的接近程度如何计量,通常采取距离与相似系数进行衡量。

3 聚类分析是根据“物以类聚”的道理,对样品或指标进行分类的一种多元统计分析方法,它们讨论的对象是大量的样品,要求能合理地按各自的特性来进行合理的分类。
聚类原则是同一类中的个体有较大的相似性,不同类中的个体差异很大。

4 例1.为了研究辽宁、浙江、河南、甘肃、青海5省1991年城镇居民生活消费规律,需要利用调查资料对五个省进行分类,指标变量共8个,意义如下:x1:人均粮食支出,x2:人均副食支出;x3:人均烟酒茶支出,x4:人均其他副食支出,x5:人均衣着商品支出,x6:人均日用品支出,x7:人均燃料支出,x8人均非商品支出 表 年五省城镇居民生活月均消费(元/人) X1 X2 X3 X4 X5 X6 X7 X8 辽宁 7.9 39.77 8.49 12.94 19.27 11.05 2.04 13.29 浙江 7.68 50.37 11.35 13.3 19.25 14.59 2.75 14.87 河南 9.42 27.93 8.2 8.14 16.17 1.55 9.76 甘肃 9.16 27.98 9.01 9.32 15.99 9.1 1.82 青海 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81

5 图1 最短距离聚类图

6 聚类分析又称群分析,它是研究对样品或指标进行分类的一种多元统计方法.
所谓的“类”,通俗地说就是相似元素的集合.聚类分析是按照观测样品(或变量)取值的相似程度,对观测样品(或变量)进行分类,使在同一类内的观测样品(或变量)是相似的,不同类间的观测(或变量)是不相似的.

7 聚类分析有两种:一种是对样品的分类,称为Q型,另一种是对变量(指标)的分类,称为R型。
⒈不但可以了解个别变量之间的亲疏程度,而且可以了解各个变量组合之间的亲疏程度。 ⒉根据变量的分类结果以及它们之间的关系,可以选择主要变量进行Q型聚类分析或回归分析。(R2为选择标准) Q型聚类分析的主要作用: ⒈可以综合利用多个变量的信息对样本进行分析。 ⒉分类结果直观,聚类谱系图清楚地表现数值分类结果。 ⒊聚类分析所得到的结果比传统分类方法更细致、全面、合理。 在课堂上主要讨论Q型聚类分析, Q型聚类常用的统计量是距离.

8 设有n个样品的p元观测数据组成一个数据矩阵
其中每一行表示一个样品,每一列表示一个指标,xij表示第i个样品关于第j项指标的观测值,聚类分析的基本思想就是在样品之间定义距离,在指标之间定义相似系数,样品之间距离表明样品之间的相似度,指标之间的相似系数刻画指标之间的相似度。将样品(或变量)按相似度的大小逐一归类,关系密切的聚集到较小的一类,关系疏远的聚集到较大的一类,聚类分析通常有:系统聚类、快速聚类,我们主要介绍系统聚类的方法与MATLAB实现

9 3.1.2 样品间的相似度量—距离 一.常用距离的定义 设有n个样品的p元观测数据: 这时,每个样品可看成p元空间的一个点,每两个点之间的距离记为 满足条件:

10 1.欧氏距离 pdist(x) 2.绝对距离 pdist(x,’cityblock’) 3.明氏距离 pdist(x,’minkowski’,r) 4.切氏距离 max(abs(xi-xj)) 5.方差加权距离 将原数据标准化以后的欧氏距离 6.马氏距离 pdist(x,’mahal’)

11 7.兰氏距离 8.杰氏距离(Jffreys & Matusita)

12 例1.为了研究辽宁、浙江、河南、甘肃、青海5省1991年城镇居民生活消费规律,需要利用调查资料对五个省进行分类,指标变量共8个,意义如下:x1:人均粮食支出,x2:人均副食支出;x3:人均烟酒茶支出,x4:人均其他副食支出,x5:人均衣着商品支出,x6:人均日用品支出,x7:人均燃料支出,x8人均非商品支出 表 年五省城镇居民生活月均消费(元/人) X1 X2 X3 X4 X5 X6 X7 X8 辽宁 7.9 39.77 8.49 12.94 19.27 11.05 2.04 13.29 浙江 7.68 50.37 11.35 13.3 19.25 14.59 2.75 14.87 河南 9.42 27.93 8.2 8.14 16.17 1.55 9.76 甘肃 9.16 27.98 9.01 9.32 15.99 9.1 1.82 青海 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81

13 d1=pdist(x);% 此时计算出各行之间的欧氏距离,
计算各省之间的欧氏、绝对、明氏距离 解:x=[ ]; d1=pdist(x);% 此时计算出各行之间的欧氏距离, 为了得到距离矩阵,我们键入命令: D= squareform(d1), % 注意此时d1必须是一个行向量,结果是实对称矩阵 若想得到书中的三角阵,则有命令: S = tril(squareform(d1))

14 d2=pdist(a,'cityblock'); S2 = tril(squareform(d2))
d2=pdist(a,'cityblock'); S2 = tril(squareform(d2)) S2 = d3=pdist(a,'minkowski',3); S3 = tril(squareform(d3))

15 3.1.3 变量间的相似度量——相似系数 当对p个指标变量进行聚类时,用相似系数来衡量变量之间的相似程度(关联度),若用 表示变量之间的相似系数,则应满足: 相似系数中最常用的是相关系数与夹角余弦。

16 ① 夹角余弦 两变量的夹角余弦定义为:

17 ② 相关系数 两变量的相关系数定义为:

18 例2.计算例1中各指标之间的相关系数与夹角余弦
解:a=[ ]; R=corrcoef(a);% 指标之间的相关系数 a1=normc(a); % 将a的各列化为单位向量 J=a1’*a1 % 计算a中各列之间的夹角余弦 J =

19 3.2 系统聚类法 系统聚类法是目前应用较为广泛的一种聚类法。谱系聚类是根据生物分类学的思想对研究对象进行分类的方法。在生物分类学中,分类的单位是:门、纲、目、科、属、种。其中种是分类的基本单位,分类单位越小,它所包含的生物就越少,生物之间的共同特征就越多。利用这种思想,系统(谱系)聚类首先将各样品自成一类,然后把最相似(距离最近或相似系数最大)的样品聚为小类,再将已聚合的小类按各类之间的相似性(用类间距离度量)进行再聚合,随着相似性的减弱,最后将一切子类都聚为一大类,从而得到一个按相似性大小聚结起来的一个谱系图。

20 系统聚类法的基本思想 设有n个样品,每个样品测得p项指标. 首先定义样品间的距离(或相似系数)和类与类之间的距离.
系统聚类方法的基本思想是: 一开始将n个样品各自自成一类,这时类间的距离与样品间的距离是等价的;然后将距离最近的两类合并,并计算新类与其他类的类间距离,再按最小距离并类.这样每次缩小一类,直到所有的样品都成一类为止.这个并类过程可以用谱系聚类图形象地表达出来.

21 系统聚类法的聚类原则决定于样品间的距离(或相似系数)及类间距离的定义,类间距离的不同定义就产生了不同的系统聚类分析方法.
系统聚类分析的方法 系统聚类法的聚类原则决定于样品间的距离(或相似系数)及类间距离的定义,类间距离的不同定义就产生了不同的系统聚类分析方法. 几个记号: 用dij表示样品Xi和Xj之间的距离, 当样品间的亲疏关系采用相似系数Cij 时, 令 dij=1-|Cij| (或 d2ij=1-C2ij); 用Dij表示类Gi和Gj间的距离.

22 类间距离 最短距离法(single linkage) 最长距离法(complete linkage)
中间距离法(median method) 可变距离法(flexible median) 重心法(centroid) 类平均法(average) 可变类平均法(flexible average) Ward最小方差法(Ward’s minimum variance)

23 类间距离 前面,我们介绍了两个向量之间的距离,下面我们介绍两个类别之间的距离: 设dij表示两个样品xi,xj之间的距离,Gp,Gq分别表示两 个类别,各自含有np,nq个样品. (1)最短距离 即用两类中样品之间的距离最短者作为两类间距离 (2)最长距离 即用两类中样品之间的距离最长者作为两类间距离

24 最短距离 x21• x12• x22• x11• 最长距离 x11• x21•

25 (3)类平均距离 即用两类中所有两两样品之间距离的平均作为两类间距离 (4)重心距离 其中 分别是Gp,Gq的重心,这是用两类的重心 之间的欧氏距离作为两类间的距离。 (5)离差平方和距离(ward) 显然,离差平方和距离与重心距离的平方成正比。

26 重心距离

27 类间距离的递推公式 设有两类Gp,Gq合并成新的一类Gr,包含了nr=np+nq个样品,如何计算Gr与其他类别Gk之间的距离,这就需要建立类间距离的递推公式。 (1)最短距离 (2)最长距离 (3)类平均距离 (4)重心距离

28 证明: (1) 代入(1) 将上式中加上再减去 与 ,合并同类项得

29 上式第二行合并同类项,得 (5)离差平方和距离

30 3.2.3 系统聚类法的步骤 谱系聚类的步骤如下: 1. 选择样本间距离的定义及类间距离的定义;
系统聚类法的步骤 谱系聚类的步骤如下: 1. 选择样本间距离的定义及类间距离的定义; 2. 计算n个样本两两之间的距离,得到距离矩阵 3. 构造个类,每类只含有一个样本; 4. 合并符合类间距离定义要求的两类为一个新类; 5. 计算新类与当前各类的距离。若类的个数为1,则转到步骤6,否则回到步骤4; 6.画出聚类图; 7.决定类的个数和类。

31 系统聚类法的基本步骤 当临界值d=2.01 应分为两类 当临界值d=1.51 应分为三类 当临界值d=1.01 应分为四类

32 (1)n个样品开始作为n个类,计算两两之间的距离或相似系数,得到实对称矩阵
(2)从D0的非主对角线上找最小(距离)或最大元素(相似系数),设该元素是dpq,则将Gp,Gq合并成一个新类Gr=(Gp,Gq),在D0中去掉Gp,Gq所在的两行、两列,并加上新类与其余各类之间的距离(或相似系数),得到n-1阶矩阵D1。

33 (3)从D1出发重复步骤(2)的做法得到D2,再由D2出发重复上述步骤,直到所有样品聚为一个大类为止。
(4)在合并过程中要记下合并样品的编号及两类合并时的水平,并绘制聚类谱系图。

34 例1.为了研究辽宁、浙江、河南、甘肃、青海5省1991年城镇居民生活消费规律,需要利用调查资料对五个省进行分类,指标变量共8个,意义如下:x1:人均粮食支出,x2:人均副食支出;x3:人均烟酒茶支出,x4:人均其他副食支出,x5:人均衣着商品支出,x6:人均日用品支出,x7:人均燃料支出,x8人均非商品支出 表 年五省城镇居民生活月均消费(元/人) X1 X2 X3 X4 X5 X6 X7 X8 辽宁 7.9 39.77 8.49 12.94 19.27 11.05 2.04 13.29 浙江 7.68 50.37 11.35 13.3 19.25 14.59 2.75 14.87 河南 9.42 27.93 8.2 8.14 16.17 1.55 9.76 甘肃 9.16 27.98 9.01 9.32 15.99 9.1 1.82 青海 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81

35 例3. 从例1算得的样品间的欧氏距离矩阵出发,用下列方法进行谱系聚类。
(1)最短距离,(2)最长距离 解:我们用1,2,3,4,5分别表示辽宁、浙江、河南、甘肃和青海,将距离矩阵记为D0

36 (1)最短距离法:将各省看成一类,即Gi={i} i=1,…,5,从D0可以看出各类中距离最短的是d43=2. 20,因此将G3,G4在2
(1)最短距离法:将各省看成一类,即Gi={i} i=1,…,5,从D0可以看出各类中距离最短的是d43=2.20,因此将G3,G4在2.20水平上合成一个新类G6={3,4},计算G6和G1,G2,G5之间的最短距离 ,得

37 将计算结果作为第一列,从D0中去掉第3、4行与3、4列,剩余元素作为其余各列得到D1
从D1可以看出G6与G5的距离最小,因此在2.21的水平上将G6与G5合成一类G7,即G7={3,4,5}计算G7与G1,G2之间的最短距离,得

38 将计算结果作为第一列,从D1中划掉{3,4}与{5}所在的行与列,剩余元素作为其他列得
从D2可以看出G1,G2最接近,在11.67的水平上合并成一类G8,至此只剩下G7,G8两类,他们之间的距离为:12.8,故在此水平上将合成一类,包含了全部的五个省份。 最后,我们作出谱系聚类图:

39 图1 最短距离聚类图 最长距离聚类方法,同学练习

40 系统聚类分析用到的函数: 函 数 功 能 pdist 计算观测量两两之间的距离 squareform
函 数 功 能 pdist 计算观测量两两之间的距离 squareform 将距离矩阵从上三角形式转换为方形形式,或从方形形式转换为上三角形式 linkage 创建系统聚类树 dendrogram 输出冰柱图 cophenet 计算Cophenetic相关系数 cluster 根据linkage函数的输出创建分类 clusterdata 根据数据创建分类 inconsistent 计算聚类树的不连续系数

41 Matlab实现聚类: 3.2.4 谱系聚类的MATLAB实现: Matlab提供了两种方法进行聚类分析。
一种是利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法; 另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用 linkage函数定义变量之间的连接;(3)用 cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。

42 (1)输入数据矩阵X,注意行与列的实际意义;
谱系聚类的MATLAB实现 (1)输入数据矩阵X,注意行与列的实际意义; X*=zscore(X);  %标准化数据 (2)计算各样品之间的距离(行) 调用格式:Y=pdist(X,’metric’)

43 说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。’
X:一个n×m的矩阵,它是由n个对象组成的数据集,每个对象的大小为m。 ‘euclidean’:欧氏距离(默认); ‘seuclidean’:标准化欧氏距离; ‘mahalanobis’:马氏距离; ‘cityblock’:绝对值距离; ‘minkowski,r’:明可夫斯基距离; ‘cosine’: ‘correlation’:             ‘hamming’: ‘jaccard’:                ‘chebychev’:Chebychev距离。

44 注意:以上命令输出的结果是一个行向量,如果要得到距离矩阵,可以用命令:
D= squareform(d), 若得到三角阵,可以用命令: D= tril(squareform(d1))

45 (3) 选择不同的类间距离进行聚类 调用格式:Z=linkage(Y,’method’)
    Y:pdist函数返回的距离向量;

46 method:可取值如下:   ‘single’:最短距离法(默认);   ‘complete’:最长距离法; ‘average’:未加权平均距离法;   ‘weighted’:加权平均法; ‘centroid’: 质心距离法;    ‘median’:加权质心距离法; ‘ward’:内平方距离法(最小方差算法) 返回:Z为一个包含聚类树信息的(n-1)×3的矩阵,每一行表示在某水平上合并为一类的序号.

47 H=dendrogram(z,p) % 注意若样本少于30,可以省去p,否则必须填写.
(4)作出谱系聚类图 调用格式:[H,T,…]=dendrogram(Z,p,…) 说明:生成只有顶部p个节点的冰柱图(谱系图)。 H=dendrogram(z,p) % 注意若样本少于30,可以省去p,否则必须填写.

48 T=cluster(z,k) % 注意k是分类数目,z是(3)中的结果
(5)根据分类数目,输出聚类结果 调用格式:T=cluster(Z,…) 说明:根据linkage函数的输出Z 创建分类。 T=cluster(z,k) % 注意k是分类数目,z是(3)中的结果 Find(T==k0) % 找出属于第k0类的样品编号

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

50 (7)  clusterdata函数 调用格式:T=clusterdata(X,…) 说明:根据数据创建分类。 T=clusterdata(X,cutoff)与下面的一组命令等价: Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff);

51 例1.为了研究辽宁、浙江、河南、甘肃、青海5省1991年城镇居民生活消费规律,需要利用调查资料对五个省进行分类,指标变量共8个,意义如下:x1:人均粮食支出,x2:人均副食支出;x3:人均烟酒茶支出,x4:人均其他副食支出,x5:人均衣着商品支出,x6:人均日用品支出,x7:人均燃料支出,x8人均非商品支出 表 年五省城镇居民生活月均消费(元/人) X1 X2 X3 X4 X5 X6 X7 X8 辽宁 7.9 39.77 8.49 12.94 19.27 11.05 2.04 13.29 浙江 7.68 50.37 11.35 13.3 19.25 14.59 2.75 14.87 河南 9.42 27.93 8.2 8.14 16.17 1.55 9.76 甘肃 9.16 27.98 9.01 9.32 15.99 9.1 1.82 青海 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81

52 欧氏距离:d1=pdist(x); %x中每行之间距离
]; 欧氏距离:d1=pdist(x); %x中每行之间距离 % 五种类间距离聚类 z1=linkage(d1); z2=linkage(d1,'complete'); z3=linkage(d1,'average'); z4=linkage(d1,'centroid'); z5=linkage(d1,'ward');

53 其中z1输出结果为: z1 = % 在2.2033的水平,G3,G4合成一类为G6 % 在2.2159的水平,G6,G5合成一类为G7 % 在 的水平,G1,G2合成一类为G8 % 在 的水平,G7,G8合成一类

54 作谱系聚类图:H= dendrogram(z1)
图1.最短距离聚类图 T 1 2 3 % 输出分类结果 结果表明:若分为三类,则辽宁是一类,浙江是一类,河南、青海和甘肃是另一类。 T=cluster(z1,3)

55 其中,z 是用某种类间距离linkage后的结果,
以上是样品之间是欧氏距离,类间距离是最短距离聚类的结果,实际上,对样品之间的每一种距离,可以由五种不同的类间距离进行聚类。那么哪一种最好呢?为此我们可以计算复合相关系数,若该系数越接近于1则该聚类越理想。在MATLAB中计算复合相关系数的命令如下: R=cophenet(z,d) 其中,z 是用某种类间距离linkage后的结果, d是样品之间的某种距离, 想了解利用欧氏距离聚类,那种类间距离最好,可以计算五个复合相关系数:

56 R=[cophenet(z1,d1),cophenet(z2,d1),
结果为: 由于 最大,故认为若样品之间采用欧氏距离,则类间距离以中间距离最好,如果我们要找到最理想的分类方法,可以对每一种样品之间的距离,都计算上述的复合相关系数,这样就可以找到最理想的样品距离与对应的类间距离。

57 类的个数的确定: 由适当的阈值确定; 根据数据点的散布直观地确定类的个数; 根据统计量确定分类个数; 根据谱系图确定分类个数的准则:
各类重心间的距离必须很大; 类中保包含的元素不要太多; 类的个数必须符合实际应用; 如果采用几种不同的聚类方法处理,则在各种聚类图中应该发现相同的类。

58 3.3 快速聚类法 快速聚类法又称为动态聚类法,该方法首先将样品进行粗糙分类,然后依据样品间的距离按一定规则进行调整,直至不能调整为止.该方法适用于样品数量较大的数据集的聚类分析,但是需要事先给定聚类数目,此数目对最终聚类结果有很大影响,实际应用时要选择多个数目进行分类,然后找出合理的分类结果. 3.3.1 快速聚类的步骤 1. 选择聚点 聚点是一批有代表性的样品,他的选择决定了初始分类,并对最终分类有很大影响,选择聚点之前要先确定聚类数k.

59 为了粗略地分一下类(以后简称为初始分类),有时首先选一批"凝聚点",然后让样品向最近的凝聚点聚集,这样由凝聚点聚集形成的类,就得到初始分类
为了粗略地分一下类(以后简称为初始分类),有时首先选一批"凝聚点",然后让样品向最近的凝聚点聚集,这样由凝聚点聚集形成的类,就得到初始分类.动态聚类法的聚类过程可用以下框图表示: 分类是否合理? 选凝聚点 初始分类 修改分类

60 (1) 任取两个凝聚点 (2) 初始分类 (4) 新的分类 (3) 新的凝聚点

61 通常,有以下确定聚点的方法: ① 经验确定:对样品非常熟悉,根据经验确定k个样品作为聚点. (比如确定种子队) ② 将n个样品随机地分为k类,然后以每一类的均值向量作为聚点. ③ 最小最大原则:若n个样品分为k类,先选择所有样品中距离最大的两个样品xi1, xi2为两个初始聚点,即d(xi1,xi2)=max(dij),然后选择第3个聚点xi3,使得该点到上述两点距离最小是所有其它点到上述两点距离最小中最大者,即min{d(xi3,xir),r=1,2}=max{min[d(xj,xr),r=1,2]} ④ 按照同样的原则选取xi4,依次下去,直至选出k个聚点xi1,xi2,…,xik

62 2. 快速聚类步骤 首先假定向量之间距离为欧氏距离 ① 确定k个初始聚点的集合为: 按照以下准则实现初始聚类 这样,将样品分成不相交的k类,该原则为每个样品以最靠近的初始聚点归类,得到初始分类: ② 从G(0)出发,计算新的聚点集合L(1),即以Gi(0)的重心(均值)作为新的聚点集合 依次计算下去…

63 ③ 设在第m步得到分类 以上递推计算过程中, ,不一定是样品,也未必是Gi(m)重心,当m逐渐增大,分类趋于稳定,此时xi(m) xi(m+1), Gi(m)  Gi(m+1) ,算法即可结束.实际计算若从某步开始,连续两次分类一样,则分类完成.

64 MATLAB软件中实现K-均值聚类的命令是kmeans, 其调用格式
IDX = kmeans( (X, K) 功能是将原始数据矩阵X聚成K类,使得样本到类重心距离和 最小,使用欧氏平方距离。其中输入X为原始观测数据,行为 个体,列为指标。输出IDX为N行1列的列向量,包含每个样品 属于哪一类的信息,类似于Cluster的输出结果。


Download ppt "聚类分析( cluster analysis)"

Similar presentations


Ads by Google