ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:111.53KB ,
资源ID:6190426      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6190426.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(聚类分析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

聚类分析.docx

1、聚类分析聚类分析在实际工作中,我们经常遇到分类问题.若事先已经建立类别,则使用判别分析,若事先没有建立类别,则使用聚类分析.聚类分析主要是研究在事先没有分类的情况下,如何将样本归类的方法.聚类分析的内容包含十分广泛,有系统聚类法、动态聚类法、分裂法、最优分割法、模糊聚类法、图论聚类法、聚类预报等多种方法. 聚类分析指将物理或抽象对象的集合分组成为由类似的对象组成的多个类的分析过程。它是一种重要的人类行为。聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物学和经济学。在不同的应用领域,很多聚类技术都得到了发展,这些技术方法被用作描述数据,衡量不同

2、数据源间的相似性,以及把数据源分类到不同的簇中。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。9.1 聚类分析基本知识介绍在MATLAB软件包中,主要使用的是系统聚类法.系统聚类法是聚类分析中应用最为广泛的一种方法.它的基本原理是:首先将一定数量的样品(或指标)各自看成一类,然后根据样品(或指标)的亲疏程度,将亲疏程度最高的两类合并,然后重复进行,直到所有的样品都合成一类。衡量亲疏程度的指标有两类:距离、相似系数.一

3、、常用距离1)欧氏距离假设有两个维样本和,则它们的欧氏距离为3)马氏距离假设共有个指标,第个指标共测得个数据(要求):, 于是,我们得到阶的数据矩阵,每一行是一个样本数据.阶数据矩阵的阶协方差矩阵记做。两个维样本和的马氏距离如下:马氏距离考虑了各个指标量纲的标准化,是对其它几种距离的改进.马氏距离不仅排除了量纲的影响,而且合理考虑了指标的相关性.4)布洛克距离两个维样本和的布洛克距离如下:5)闵可夫斯基距离两个维样本和的闵可夫斯基距离如下:注:时是布洛克距离;时是欧氏距离.6)余弦距离这是受相似性几何原理启发而产生的一种标准,在识别图像和文字时,常用夹角余弦为标准.7)相似距离二、MATLAB

4、中常用的计算距离的函数假设我们有阶数据矩阵,每一行是一个样本数据. 在MATLAB中计算样本点之间距离的内部函数为y=pdist(x) 计算样本点之间的欧氏距离y=pdist(x,seuclid) 计算样本点之间的标准化欧氏距离y=pdist(x,mahal) 计算样本点之间的马氏距离y=pdist(x,cityblock) 计算样本点之间的布洛克距离y=pdist(x,minkowski) 计算样本点之间的闵可夫斯基距离y=pdist(x,minkowski,p) 计算样本点之间的参数为p的闵可夫斯基距离y=pdist(x,cosine) 计算样本点之间的余弦距离y=pdist(x,corr

5、elation) 计算样本点之间的相似距离另外,内部函数yy=squareform(y)表示将样本点之间的距离用矩阵的形式输出.三、常用的聚类方法常用的聚类方法主要有以下几种:最短距离法、最长距离法、中间距离法、重心法、平方和递增法等等.四、创建系统聚类树假设已经得到样本点之间的距离y,可以用linkage函数创建系统聚类树,格式为z=linkage(y).其中:z为一个包含聚类树信息的(m-1) 3的矩阵.例如:z=2.000 5.000 0.23.000 4.000 1.28则z的第一行表示第2、第5样本点连接为一个类,它们距离为0.2;则z的第二行表示第3、第4样本点连接为一个类,它们距

6、离为1.28.在MATLAB中创建系统聚类树的函数为z=linkage(y) 表示用最短距离法创建系统聚类树z=linkage(y,complete) 表示用最长距离法创建系统聚类树z=linkage(y,average) 表示用平均距离法创建系统聚类树z=linkage(y,centroid) 表示用重心距离法创建系统聚类树z=linkage(y,ward) 表示用平方和递增法创建系统聚类树9.2 聚类分析示例层次聚类法(Hierarchical Clustering)的计算步骤:计算n个样本两两间的距离dij,记D构造n个类,每个类只包含一个样本;合并距离最近的两类为一新类;计算新类与当前

7、各类的距离;若类的个数等于1,转到5);否则回3);画聚类图;决定类的个数和类;例1 在MATLAB中写一个名为opt_linkage_1的M文件:x=3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1; %每行一个样本y=pdist(x,mahal); 每两个样本的马氏距离, 1-21-7 2-3 2-4.yy=squareform(y) %,样本点之间的距离用矩阵的形式输出z=linkage(y,centroid); %用重心距离法创建系统聚类树h=dendrogram(z) % Plot dendrogram graphs 画树状图存盘后按F5键执行,得到

8、结果如下: yy = 0 2.3879 2.1983 1.6946 2.1684 2.2284 0.8895 2.3879 0 2.6097 2.0616 0.2378 0.6255 2.3778 2.1983 2.6097 0 0.6353 2.5522 2.0153 2.9890 1.6946 2.0616 0.6353 0 1.9750 1.5106 2.4172 2.1684 0.2378 2.5522 1.9750 0 0.6666 2.1400 2.2284 0.6255 2.0153 1.5106 0.6666 0 2.45170.8895 2.3778 2.9890 2.417

9、2 2.1400 2.4517 0z = 2.0000 5.0000 0.2378 6.0000 8.0000 0.6353 3.0000 4.0000 0.6353 1.0000 7.0000 0.8895 9.0000 10.0000 2.1063 11.0000 12.0000 2.0117按重心距离法得到的系统聚类树为其中:h=dendrogram(z)表示输出聚类树形图的冰状图.一、根据系统聚类树创建聚类假设已经求出系统聚类树z,我们根据z来创建聚类,使用cluster函数. (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征对象之间差异的距离,例

10、如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。这在MATLAB中可以通过Y=pdist(X)实现,例如 X=randn(6,2)X =-0.4326 1.1892-1.6656 -0.03760.1253 0.32730.2877 0.1746-1.1465 -0.18671.1909 0.7258 plot(X(:,1),X(:,2),bo) %给个图,将来对照聚类结果 Y=pdist(X)Y =Columns 1 through 141.7394 1.0267 1.2442 1.5501 1.6883 1.8277 1.9648 0.54012.9568 0.2228 1.37

11、17 1.1377 1.4790 1.0581Column 152.5092例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X的第1点与2-6点、第2点与3-6点,.这样的距离。那么对于M个点的数据集X,pdist之后的Y将是具有M*(M-1)/2个元素的行向量。Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是个对角元素为0的对称阵。 squareform(Y)ans

12、=0 1.7394 1.0267 1.2442 1.5501 1.68831.7394 0 1.8277 1.9648 0.5401 2.95681.0267 1.8277 0 0.2228 1.3717 1.13771.2442 1.9648 0.2228 0 1.4790 1.05811.5501 0.5401 1.3717 1.4790 0 2.50921.6883 2.9568 1.1377 1.0581 2.5092 0这里需要注意的是,pdist可以使用多种参数,指定不同的距离算法。help pdist。另外,当数据规模很大时,可以想象pdist产生的Y占用内存将是很吓人的,比如X

13、有10k个数据点,那么X占10k*8*2Bytes=160K,这看起来不算啥,但是pdist后的Y会10k*10k/2*8Bytes=400M。怕了把,所以,废话说在前面,用MATLAB的层次聚类来处理大规模数据,大概是很不合适的。(2) 确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。 Z=linkage(Y)Z =3.0000 4.0000 0.22282.0000 5.0000 0.54011.0000 7.0000 1.02676.0000 9.0000 1.05818.0000 10.0000 1.3717对于M个元素的X,前面说了Y是1行M*(

14、M-1)/2的行向量,Z则是(M-1)*3的矩阵。Z数组的前两列是索引下标列,最后一列是距离列。例如上例中表示在产生聚类树的计算过程中,第3和第4点先聚成一类,他们之间的距离是0.2228,以此类推。要注意的是,为了标记每一个节点,需要给新产生的聚类也安排一个标识,MATLAB中会将新产生的聚类依次用M+1,M+2,.依次来标识。比如第3和第4点聚成的类以后就用7来标识,第2和第5点聚成的类用8来标识,依次类推。通过linkage函数计算之后,实际上二叉树式的聚类已经完成了。Z这个数据数组不太好看,可以用dendrogram(Z)来可视化聚类树。可以看到,产生的聚类树的每一层都是一个倒置的U型

15、(或者说是个n型,),纵轴高度代表了当前聚类中两个子节点之间的距离。横轴上标记出了各个数据点索引下标。稍微注意以下的是,dendrogram默认最多画30个最底层节点,当然可是设置参数改变这个限制,比如dendrogram(Z,0)就会把所有数据点索引下标都标出来,但对于成千上万的数据集合,这样的结果必然是图形下方非常拥挤。看你的应用目的了,随你玩(3)初步的聚类树画完后,还要做很多后期工作的,包括这样的聚类是不是可靠,是不是代表了实际的对象分化模式,对于具体的应用,应该怎样认识这个完全版的聚类树,产生具有较少分叉的可供决策参考的分类结果呢?这都是需要考虑的。MATLAB中提供了cluster

16、, clusterdata, cophenet, inconsistent等相关函数。cluster用于剪裁完全版的聚类树,产生具有一定cutoff的可用于参考的树。clusterdata可以认为是pdist,linkage,cluster的综合,当然更简易一点。cophenet和inconsistent用来计算某些系数,前者用于检验一定算法下产生的二叉聚类树和实际情况的相符程度(就是检测二叉聚类树中各元素间的距离和pdist计算产生的实际的距离之间有多大的相关性),inconsistent则是量化某个层次的聚类上的节点间的差异性(可用于作为cluster的剪裁标准)。例2 在MATLAB中写

17、一个名为opt_cluster_1的M文件:x=3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1;y=pdist(x,mahal);yy=squareform(y)z=linkage(y,centroid)h=dendrogram(z)t=cluster(z,3)其中:“t=cluster(z,3)”表示分成3个聚类,需要分成几个由人工选择.存盘后按F5键执行,得到结果如下:t = 3 1 2 2 1 1 3即第1、第7样本点为第3类,第2、第5、第6样本点为第1类,第3、第4样本点为第2类.例设某地区有八个观测点的数据,样本距离矩阵如表1所示,根据最短距离法

18、聚类分析。%最短距离法系统聚类分析X=7.90 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.20 8.14 16.17 9.42 1.55 9.76; 9.16 27.98 9.01 9.32 15.99 9.10 1.82 11.35; 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81;BX=zscore(X); % 标准化数据矩阵Y=pdist(X) % 用欧氏距离计算两两之间的距离D=squa

19、reform(Y) % 欧氏距离矩阵Z = linkage(Y) % 最短距离法T = cluster(Z,3) 等价于 T=clusterdata(X,3) find(T=3) % 第3类集合中的元素H,T=dendrogram(Z) % 画聚类图聚类谱系图如图1所示:图1 聚类谱系图二、根据原始数据创建分类在MATLAB软件包中,内部函数clusterdata对原始数据创建分类,格式有两种:1)clusterdata(x,a),其中0a1是整数,表示将原始数据x分为b类.例3 在MATLAB中写一个名为opt_clusterdata_1的M文件:x=3 1.7;1 1;2 3; 2 2.5

20、; 1.2 1; 1.1 1.5; 3 1;t= clusterdata(x,0.5)z= clusterdata(x,3)存盘后按F5键执行,得到结果如下:t = 4 3 2 2 3 1 4z = 2 3 1 1 3 3 2其中:t的结果表示距离小于0.5的样本点归结为一类,这样,共有四类,第1类:样本点6;第2类:样本点3、4;第3类:样本点2、5;第4类:样本点1、7.而z的结果表示首先约定将原始数据x分为3类,然后计算,结果如下:第1类:样本点3、4;第2类:样本点1、7;第3类:样本点2、5、6.利用内部函数clusterdata对原始数据创建分类,其缺点是不能更改距离的计算法.比较

21、好的方法是分步聚类法.三、分步聚类法假设有样本数据矩阵x,第一步 对于不同的距离,利用pdist函数计算样本点之间的距离:y1=pdist(x)y2=pdist(x,seuclid)y3=pdist(x,mahal)y4=pdist(x,cityblock)第二步 计算系统聚类树以及相关信息:z1=linkage(y1)z2=linkage(y2)z3=linkage(y3)z4=linkage(y4)第三步 利用cophenet函数计算聚类树信息与原始数据的距离之间的相关性,这个值越大越好:%cophenet Cophenetic correlation coefficient 同表象相关系

22、数,同型相关系数,共性分类相关系数CPCCt1=cophenet(z1,y1)t2=cophenet(z2,y2)t3=cophenet(z3,y3)t4=cophenet(z4,y4)注:z在前,y在后,顺序不能颠倒.第四步 选择具有最大的cophenet值的距离进行分类.利用函数clusterdata(x,a)对数据x进行分类,其中0a1,表示在系统聚类树中距离小于a的样本点归结为一类.例4 在MATLAB中写一个名为opt_cluster_2的M文件:x=3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1;y1=pdist(x);y2=pdist(x,se

23、uclid);y3=pdist(x,mahal);y4=pdist(x,cityblock);z1=linkage(y1);z2=linkage(y2);z3=linkage(y3);z4=linkage(y4);t1=cophenet(z1,y1)t2=cophenet(z2,y2)t3=cophenet(z3,y3)t4=cophenet(z4,y4)存盘后按F5键执行,得到结果如下:t1 = 0.9291t2 = 0.9238t3 = 0.9191t4 = 0.9242结果中t1=0.9291最大,可见此例利用欧式距离最合适.于是,在MATLAB中另写一个名为opt_cluster_3的

24、M文件:x=3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1;y1=pdist(x);z1=linkage(y1)存盘后按F5键执行,得到结果如下:z1 = 2.0000 5.0000 0.2000 3.0000 4.0000 0.5000 6.0000 8.0000 0.5099 1.0000 7.0000 0.7000 9.0000 11.0000 1.2806 10.0000 12.0000 1.3454矩阵z1的第1行表示样本点2、5为一类,在系统聚类树上的距离为0.2,其它类推.考察矩阵z1的第3列,系统聚类树上的6个距离,可以选择0.5作为聚类分界

25、值.在MATLAB中另写一个名为opt_cluster_4的M文件:x=3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1;y1=pdist(x);z1=linkage(y1)b1=cluster(z1,0.5)存盘后按F5键执行,得到结果如下:b1 = 4 3 2 2 3 1 4结果表示将原始数据x分为4类,第1类:样本点6;第2类:样本点3、4;第3类:样本点2、5;第4类:样本点1、7.主要应用商业聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同的客户群的特征。聚类分析是细分市场的有效工具,同时也可用于研究消费者行为,寻找新的潜在市场、选择实验的市

26、场,并作为多元分析的预处理。生物聚类分析被用来动植物分类和对基因进行分类,获取对种群固有结构的认识地理聚类能够帮助在地球中被观察的数据库商趋于的相似性保险行业聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组因特网聚类分析被用来在网上进行文档归类来修复信息电子商务聚类分析在电子商务中网站建设数据挖掘中也是很重要的一个方面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以更好的帮助电子商务的用户了解自己的客户,向客户提供更合适的服务。例5 下表是1999年中国省、自治区的城市规模结构特征的一些数据,可通过聚类分析将这

27、些省、自治区进行分类,具体过程如下:省、自治区首位城市规模(万人)城市首位度四城市指数基尼系数城市规模中位值(万人)京津冀699.701.437 10.936 40.780 410.880山西179.461.898 21.000 60.587 011.780内蒙古111.131.418 00.677 20.515 817.775辽宁389.601.918 20.854 10.576 226.320吉林211.341.788 01.079 80.456 919.705黑龙江259.002.305 90.341 70.507 623.480苏沪923.193.735 02.057 20.620 8

28、22.160浙江139.291.871 20.885 80.453 612.670安徽102.781.233 30.532 60.379 827.375福建108.501.729 10.932 50.468 711.120江西129.203.245 41.193 50.451 917.080山东173.351.001 80.429 60.450 321.215河南151.541.492 70.677 50.473 813.940湖北434.467.132 82.441 30.528 219.190湖南139.292.350 10.836 00.489 014.250广东336.543.540

29、71.386 30.402 022.195广西96.121.228 80.638 20.500 014.340海南45.432.191 50.864 80.413 68.730川渝365.011.680 11.148 60.572 018.615云南146.006.633 32.378 50.535 912.250贵州136.222.827 91.291 80.598 410.470西藏11.794.151 41.179 80.611 87.315陕西244.045.119 41.968 20.628 717.800甘肃145.494.751 51.936 60.580 611.650青海61.368.269 50.859 80.809 87.420宁夏47.601.507 80.958 70.484 39.730新疆128.673.853 51.621 60.490 114.470x=load(data.txt);y1=pdi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1