1第六章聚类分析Clusteringanalysis2谱系聚类的有效性1模糊聚类的有效性26.4聚类的有效性样品之间和两个总体(类)之间究竟采用何种距离为好?先假定样品之间的距离已定,例如选取欧氏距离.对于类间五种不同距离,哪种距离使得聚类效果最好?聚类树的cophenet距离与生成该聚类树的原始距离之间的线性相关系数定义为聚类树的cophenet相关,它度量了个体间的不相似性,若该系数越接近于1,则聚类效果越好.6.4.1谱系聚类的有效性1.cophenet相关系数会用4npnnppnxxxxxxxxx21222211121121xxxXd分量依次为样品(2,1),(3,1),…,(n,1),(3,2),…,(n,2),…,(n,n-1)的距离,即用距离命令d=pdist(X)得到的距离向量。Tnnddd),,(/)(2121d---样本间距离行向量---样本观测矩阵5Tnnzzz),,(/)(2121z分量依次为样品(2,1),(3,1),…,(n,1),(3,2),…,(n,2),…,(n,n-1)初次并为一个类中时的距离,称为cophenetic距离(和聚类树产生的距离相关)。---cophenetic距离向量6cophenet相关系数21122112211/)(/)(/)()()())((nnkknnkknnkkkddzzddzzR2/)1(12/)1(1,nnkknnkkddzz注意:cophenet相关系数R反应了聚类效果好坏,R越接近1,聚类效果越好。可通过R对比各种不同的距离计算方法和不同的系统聚类方法的聚类效果。---平均值7MATLAB计算cophenet相关系数命令:d=pdist(X,distance)%计算样品距离向量dz=linkage(d,method)%计算类间距离R=cophenet(z,d)%求Z和d的cophenet相关系数[R,copd]=cophenet(z,d)输入d是样品之间的某种距离,z是用某种类间距离linkage后的结果.输出R为cophene相关系数,copd为cophene距离向量.判断:R越接近于1,聚类效果越好。省(市)工薪收入(元/人)经营净收入(元/人)财产性收入(元/人)转移性收入(元/人)北京18738.96778.36452.757707.87上海21791.111399.14369.126199.77安徽9302.38959.43293.923603.72陕西8354.63638.7665.332610.61新疆9422.22938.15141.751976.49表6.15省(区、市)城镇居民人均家庭收入例6.4.12008年我国5省、区、市城镇居民人均年家庭收入如下表为了研究上述5个省、区、市的城镇居民收入差异,进行谱系聚类时,选用哪种类间距离好?解:以样品间的距离为欧氏距离为例,考虑类间的五种不同距离:最短距离:z1=linkage(d)最长距离:z2=linkage(d,'complete')类平均距离:z3=linkage(d,'average')重心距离:z4=linkage(d,'centroid')离差平方和:z5=linkage(d,'ward')其中d=pdist(x),x为原始矩阵.程序:x=[18738.96778.36452.757707.8721791.111399.14369.126199.779302.38959.43293.923603.728354.63638.7665.332610.619422.22938.15141.751976.49];d=pdist(x);%计算出各行之间的欧氏距离z1=linkage(d)%最短距离法系统聚类z2=linkage(d,'complete')%最长距离z3=linkage(d,'average')%类平均距离z4=linkage(d,'centroid')%重心距离z5=linkage(d,'ward')%离差平方和R=[cophenet(z1,d),cophenet(z2,d),cophenet(z3,d),cophenet(z4,d),cophenet(z5,d)]%计算cophenet相关系数输出结果:R=0.98090.98110.9812最大0.9812最大0.9803由于最大值为0.9812,所以类间距离为类平均距离和重心距离效果最好.说明:如果要找到最理想的分类方法,可对每一种样品之间的距离,都计算上述的复合相关系数,这样就可找到最理想的样品距离与对应的类间距离.2R21kkkBPRTT2.样品之间距离与类间距离搭配评价准则(自学):(1)统计量:2kR表明k个类的类间偏差平方总和kB和在总离差平方和T中占比例,比例越大说明k个类能够分开。2kR可用于评价合并为类时聚类效果,2kR越大,效果越好。当样品类数k由n到1类变化时,2kR由1变到0,可从2kR变化来确定分为几个类合适。越大,聚类效果越好ktnitTttktxxxxnB11)()(ktnitiTtitT11)()()()(xxxx样本总离差平方和分解:kkBPT--总离差平方和--类内偏差差平方和--类间偏差差平方和第t类样品总离差平方和第t类样品距离总类重心总离差平方和第t类样品重心到总类重心加权离差平方和ktnittiTttiktP11)()()()()()(xxxxPk小,Bk大,分类效果好总离差平方和ktnitiTtitT11)()()()(xxxx)(2px)(1px)(3px)(1qx)(2qxx)(qx)(px)(2px)(1px)(3px)(1qx)(2qx类内偏差平方和ktnittiTttiktP11)()()()()()(xxxx)(px)(qx)(2px)(1px)(3px)(1qx)(2qx类内偏差平方和ktnitTttktxxxxnB11)()()(qx)(pxqpniqTqnipTpkB1))1)))()(2)()(3xxxxxxxx((((样本总离差平方和分解:ktnitiTtiixxxxT11)()(kkktnitTttkttktnitTttktnittiTttiktnitttiTtttiBPxxxxnWxxxxnxxxxxxxxxxxxiiii111111111)()()()()()()()(21R20R2Rn2R当样品各自为一类时,而当所有的样品为同一类时,,因此如何恰当地使用该准则,要具体问题具体分析.随着的减少而减少,可以从确定分为几类比较合适.由于取值的变化来例6.4.2试利用2R统计量确定Irisdata的分类数.解:loadfisheririsx=meas;[n,p]=size(x);n1=n-1;formatlongc=zeros(n1-1,1);forj=2:n1d=pdist(x);z1=linkage(d,'complete');c=cluster(z1,j);%分类数jk=1;ifk=jb=find(c==k);l=length(b)-1;ifb0a=x(b,:);c(j)=sum(l*var(a))+c(j);endendendR=1-c/sum(n1*var(x));输出结果为:optimaln=8分8类效果好k=1;ifk=jb=find(c==k);l=length(b)-1;ifb0a=x(b,:);c(j)=sum(l*var(a))+c(j);endendendR=1-c/sum(n1*var(x));optimaln=find(R==max(R))()(1)()1kkkkTPkBnkFPnkPk(2)伪F统计量伪F统计量用于评价分为k类的效果.伪F统计量的值越大表示这n个样品可显著地分为k类。2t22()(2)KLKLKLBtWWnn,KLWWkL2()KLMKLB=KGLGLG(3)伪统计量其中分别表示第类和第类的离差平方和,表示合并类和为新类后类内离差平方和的增值.(4)不一致系数注意:不一致系数可用来确定最终分类个数;在并类过程中,如果某一次分类对应的不一致系数较上次有大幅度增加,说明该次并类效果不好;在使类的个数尽量少的前提下,参照不一致系数的变化,确定最终分类个数。不一致系数:)2,()1,()3,()4,(kYkYkZkY次合并标准差前次合并平均距离前合并距离第kkk24x=[18738.96778.36452.757707.8721791.111399.14369.126199.779302.38959.43293.923603.728354.63638.7665.332610.619422.22938.15141.751976.49];d=pdist(x);%计算出各行之间的欧氏距离z1=linkage(d)%类间距离为最短距离Y=inconsistent(z1)%计算聚类树矩阵z1每次并类得到的链接的不一致系数z1=系统聚类树矩阵1.0e+04*0.00040.00050.12800.00030.00060.14280.00010.00020.34620.00070.00081.0293254531210002000300040005000600070008000900010000H=dendrogram(z1)H=为树形图中线条句柄值向量,可控制线条属性。173.0011175.0011176.0011177.0011Y=不一致系数1.0e+03*1.279600.001001.35390.10500.00200.00073.461600.001005.06104.64390.00300.0011第4次不一致系数0.0011较第3次0提升较大,故第3次1和2号样品聚类,并类好;第2次并类效果不如第1次,好于第4次;最后选项第3次聚合结果,453一类,12类.模糊C均值聚类需要预先给定分类数,如何确定最优的分类数,是聚类有效性所研究的内容.至今为止,仍然没有一个最优的标准,只能是在相应的准则下最优.对于二维数据,可根据其平面图像大致看出分为几类合适,对于高维数据,此方法就失效了,因此,有必要给出一些判别准则,比较有名的判别准则有:6.4.2模糊聚类的有效性(自学不要求)PE111Vln()cnijijijn,ikkipcV(1)Bezdek准则其中表示第个数据点到第类中心的隶属度,且的最小值点对应最佳聚类数.2211XB2||||Vmin||||cnijjiijjiijxvnvv21minXBcnV*c(2)XieandBeni(XB)准则,对应的即为最优聚类数.22FS1111V||||||||cncnmmijjiijiijijxvvv1njjvx,ijjiFSV(3)Kuyama&Sugeno其中表示第个数据点到第类中心的隶属度,的最小值点对应最佳聚类数.2221111k2||||||||Vmin||||cncijjijcijiikikxvvvvvijjiXPV(4)Kwon其中表示第个数据点到第类中心的隶属度,的最小值点即为最佳聚类数.例6.4.3对经典的Iris数据和葡萄酒数据,分别应用上述准则,确定最佳聚类数.解:利用Matlab软件我们可以求得相应的最佳聚类数。m准则函数花蕾聚类数葡萄酒聚类数1.5VPE22VXB22VFS57VK222VPE22VXB22VFS511VK222.1VPE22VXB22VFS56VK222.5VPE22VXB22VFS54VK22表6.3两类经典数据FCM的最佳聚类数6.5