您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 统计方法6-聚类分析
统计方法6聚类分析第一节基本概念1.分类问题直观解释:聚类分析就是用某种准则将靠近的点集归为一类对样本(观测值)进行聚类,也可以对指标(变量)进行聚类。2.距离样品之间的距离设p维空间内的点),...,,(pxxxX21及),...,(pyyyY21定义两点之间的距离(1)欧氏距离21212/))((piiixyyxd(2)马氏距离)(yxyxdxy2其中是数据矩阵的协方差阵。马氏距离的优点是考虑了空间内的概率分布,在正态总体的情况下,有比较好的效果。距离的定义比较灵活,只要满足条件都可以作为聚类时的距离。变量之间的距离变量之间的距离要考虑到变量之间的相互关系。常用的距离如夹角余弦,相关系数等类和类之间的距离在聚类过程中,要涉及到类和类之间的合并,因此也要考虑类间的距离。如类间最短距离设ijd是样本i和样本j之间的距离,pqD是类pG和类qG之间的距离定义类间的最短距离为pqD=ijqjpid,min类似的可以定义类间的最长距离,平均距离等。第二节系统聚类法系统聚类方法是非常容易在计算机上实现的一种聚类方法,其聚类步骤为:1)将空间各点各自视为一类,计算每类间的距离矩阵,将距离最小者归为一类。2)对与新的类重新计算类与类间的距离矩阵,再将距离最小者归为一类。3)这一过程一直进行下去,直到所有的点归为一类为止。例8.2.1:设抽六个样,每个样本只有一个变量,即:1,2,5,7,9,10。定义距离为:两点的绝对值。试用最小距离法对它们进行系统聚类。1)计算得距离矩阵D(0),为013589024780256034010654321654321GGGGGGGGGGGG2)D(0)的最小距离时是1,对应元素D12=D56=1,则将G1,G2并成G7;G5;G6并成G8。3)计算G7,G8与其他类道距离,得D(1)024702503084378437GGGGGGGG4)的D(1)的最小距离是2,把843GGG,,合并为类9G,5)把G7和G9合并为G10,聚类距离为3。此时已将全部样本合并为一类,聚类结束。可以按照聚类的距离,通过谱系图把聚类的过程表示出来。最后,选择合适的阈值,确定聚类的个数。如取阈值为2.5,则分为2类,G7和G9第三节动态聚类法(k均值法)k-均值法是一种划分方法。函数kmeans把数据划分为k个互不相交的类,然后对每个观测返回类的标号。对于大量的数据k-均值法比系统聚类法更合适。Kmeans把数据集中的每一个数据视为占有空间中某个位置的对象。K-均值法寻找划分使得每一类内部的数据足够近而类之间的数据足够远。函数提供了5种距离的测量。步骤Step1:选择k个样品作为初始凝聚点,或者将样品分为k个初始类,然后将其重心(均值)作为初始凝聚点Step2:将每个样品归入离其凝聚点最近的类(通常采用欧氏距离)。Step3:重新计算每个类的重心(均值);Step4:重复Step2,直到各类重心不再变化,类不再变化为止。动态聚类的结果严重依赖初始凝聚点的选取。经验表明,聚类过程的绝大多数重要变化均发生在第一次再分类中。第四节MATLAB统计工具箱中的聚类分析A系统聚类法1.点点距离的计算命令pdistY=pdist(X)Y=pdist(X,'metric')Y=pdist(X,distfun)Y=pdist(X,'minkowski',p)这里:X:为数据矩阵metric:各种距离方法‘euclidean’:欧几里得距离Euclideandistance(default)‘seuclidean’:标准欧几里得距离.‘mahalanobis’:马氏距离‘cityblock’:绝对值距离‘minkowski’:明可夫斯基距离‘cosine’:cosine角度距离(对变量聚类)‘correlation’:相关系数距离.(对变量聚类)‘hamming’:Hamming距离(符号变量求距离)‘jaccard’:Jaccard系数距离(符号变量求距离)‘chebychev’:切比雪夫距离2.类类距离的计算命令linkage,基本语法为;Z=linkage(Y)Z=linkage(Y,'method')这里:Y:为pdist输出的结果,即点点的距离矩阵。‘method’:为计算类类间距离的方法。它们有:‘single':最短距离法(系统内定)‘complete’:最长距离法。‘average’:平均距离法。‘weighted’:加权平均距离法。‘centroid’:中心距离法。‘median’:加权重心法。3)聚类命令cluster,语法为:T=cluster(Z,'cutoff',c)T=cluster(Z,'maxclust',n)这里:Z:为linkage输出的层次数据。‘cutoff’:按某个值进行切割,值c取(0,1)之间的值。‘maxclust’:按最大聚类数聚类,n为指定的聚类数。4)作聚类图命令dendrogram,其语法为:H=dendrogram(Z)H=dendrogram(Z,p)[H,T]=dendrogram(...)[H,T,perm]=dendrogram(...)[...]=dendrogram(...,'colorthreshold',t)[...]=dendrogram(...,'orientation','orient')[...]=dendrogram(...,'labels',S)这里:Z:为linkage输出的层次数据。p:原始结点个数的设置,p=0显示全部点。系统内定显示30个点。‘colorthreshold’:颜色设置,其值t0。‘orientation’:聚类图的位置,内定是从上到下。可选值为:‘top‘:从上到下(default)‘bottom’:从下到上‘left’:从左到右‘right’:从右到左‘labels’:标号例16个地区('北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南)农民支出情况调查,指标为食品,衣着,燃料,住房,生活用品,文化生活服务.x=[190.3343.779.7360.5449.019.04;135.236.410.4744.1636.493.94;95.2122.839.322.4422.812.8;104.7825.116.49.8918.173.25;128.4127.638.9412.5823.993.27;145.6832.8317.7927.2939.093.47;159.3733.3818.3711.8125.295.22;116.2229.5713.2413.7621.756.04;221.1138.6412.53115.6550.825.89;144.9829.1211.6742.627.35.74;169.9232.7512.7247.1234.355;153.1123.0915.6223.5418.186.39;144.9221.2616.9619.5221.756.73;140.5421.517.6419.1915.974.94;115.8430.2612.233.6133.773.85;101.1823.268.4620.220.54.3];zx=zscore(x);y=pdist(zx);z=linkage(y,'average')z=12.000013.00000.66563.000016.00000.99314.000018.00001.071114.000017.00001.203210.000011.00001.26705.000019.00001.27562.000015.00001.283321.000023.00001.70886.00007.00001.82458.000020.00001.879924.000025.00002.330226.000027.00002.647622.000028.00002.96641.00009.00003.178829.000030.00005.2728s={'北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南'}dendrogram(z,'orientation','right','labels',s)0.511.522.533.544.555.5安徽福建江西黑龙江天津山东江苏浙江辽宁吉林河北河南山西内蒙古北京上海T=cluster(z,5)T=4233322152211123find(T==1)ans=8121314find(T==2)ans=267101115find(T==3)ans=34516find(T==4)ans=1find(T==5)ans=9或者:T=clusterdata(zx,'distance','euclid','linkage','average','maxclust',5)T=4233322152211123它与前面的cluster(z,5)相等BK均值法函数kmeans把数据划分为k个互不相交的类,然后对每个观测返回类的标号。Kmeans把数据集中的每一个数据视为占有空间中某个位置的对象。K-均值法寻找划分使得每一类内部的数据足够近而类之间的数据足够远。函数提供了5种距离的测量。IDX=kmeans(X,k)将n个点分为k类,返回的idx为每个点的类标号。[IDX,C]=kmeans(X,k)返回的c为每个类的中心。[IDX,C,sumd]=kmeans(X,k)Sumd返回类内的距离。[IDX,C,sumd,D]=kmeans(X,k)返回的D是一个矩阵,里边的元素ijd是第i个元素到第j类的距离。[...]=kmeans(...,param1,val1,param2,val2,...)param1…为参数名,val1…为参数值。这些参数用来控制迭代算法。继续上例,采用K均值法分类的结果为:IDX=kmeans(x,4)%分为4类IDX=1344233213333324分类的结果为:IDX=kmeans(x,5)%分为5类IDX=1522355345155532分类的结果为:轮廓图可以利用轮廓图作为评价分类结果的一种标准。Silhouette函数可以用来根据cluster,clusterdata,kmeans的聚类结果绘制轮廓图。从图上可以看每个点的分类是否合理。轮廓图上第i点的轮廓值定义为S(i)=min(),1...max[,min()]bainab其中,a是第i个点与同类其它点的平均距离。b是向量,其元素表示第i个点与不同类的类内各点的平均距离。S(i)的取值范围[-1,1],此值越大,说明该点的分类越合理。特别当s(i)0是说明该点分类不合理。silhouette(X,clust)s=silhouette(X,clust)%此命令只返回轮廓值,不画轮廓图[s,h]=silhouette(X,clust)[...]=silhouette(X,clust,metric)[...]=silhouette(X,clust,distfun,p1,p2,...)上例分为4类的情况[s,h]=silhouette(x,IDX)s=0.76230.39660.80800.81710.17710.70200.69550.72931.00000.65640.29270.76080.67570.50990.45820.8398上例分为5类的情况[s,h]=silhouette(x,IDX)s=0.76230.05550.80370.65830.48170.47470.53760.05401.00000.49600.29270.62680.45060.19710.19930.8479比较两图,此例使用k均值法分四类
本文标题:统计方法6-聚类分析
链接地址:https://www.777doc.com/doc-5577453 .html