1/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析普通高等院校计算机课程规划教材MATLAB数据分析方法李柏年吴礼斌主编张孔生丁华参编2/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析第六章聚类分析“人以类聚,物以群分”。对事物进行分类,是人们认识事物的出发点,也是人们认识世界的一种重要方法。因此,分类学已成为人们认识世界的一门基础学科。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种多元统计方法,所谓类,通俗地说,就是指相似元素的集合。本章主要介绍谱系聚类、K均值聚类、模糊C均值聚类和模糊减法聚类及其MATLAB实现.3/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析第2章数据描述性分析数据描述性分析是从样本数据出发,概括分析数据的集中位置、分散程度、相互关联关系等,分析数据分布的正态或偏态特征.描述性分析是进行数据进一步分析的基础.对不同类型量纲的数据有时还要进行变换,然后再作出合理分析.本章主要介绍样本数据的基本统计量、数据的可视化、数据分布检验及数据变换等内容.2.1基本统计量与数据可视化2.1.1样本数据的基本统计量描述数据基本特征主要为集中位置和分散程度。设从所研究的对象(即总体)X中观测得到n个观测值4/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析6.1.1聚类的思想在社会经济领域中存在着大量分类问题,比如对我国30个省市自治区独立核算工业企业经济效益进行分析,一般不是逐个省市自治区去分析,而较好地做法是选取能反映企业经济效益的代表性指标,如百元固定资产实现利税、资金利税率、产值利税率、百元销售收入实现利润、全员劳动生产率等等,根据这些指标对30个省市自治区进行分类,然后根据分类结果对企业经济效益进行综合评价,就易于得出科学的分析。又比如若对某些大城市的物价指数进行考察,而物价指数很多,有农用生产物价指数、服务项目价指数、食品消费物价指数、建材零售价格指数等等。6.1距离聚类5/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析由于要考察的物价指数很多,通常先对这些物价指数进行分类。总之,需要分类的问题很多,因此聚类分析这个有用的数学工具越来越受到人们的重视,它在许多领域中都得到了广泛的应用。聚类问题的一般提法是:设有个样品的元观测数据组成一个数据矩阵npnnppxxxxxxxxxX212222111211nnp6/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析其中每一行表示一个样品,每一列表示一个指标,表示第个样品关于第项指标的观测值,要根据观测值矩阵X对样品或指标进行分类。一种分类的思想是:在样品之间定义距离,在指标之间定义相似系数.样品距离表明样品之间的相似度,指标之间的相似系数刻画指标之间的相似度.将样品(或变量)按相似度的大小逐一归类,关系密切的聚集到较小的一类,关系疏远的聚集到较大的一类,直到所有的样品(或变量)都聚集完毕。上述思想正是聚类分析的基本思想。ijxij7/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析值得注意的是:第4章介绍的判别分析和聚类分析是两种不同目的的分类方法,它们所起的作用是不同的。判别分析方法假定组(或类)已事先分好,判别新样品应归属哪一组,对组的事先划分有时也可以通过聚类分析得到。聚类分析方法是按样品(或变量)的数据特征,把相似的样品(或变量)倾向于分在同一类中,把不相似的样品(或变量)倾向于分在不同类中。8/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析6.1.2向量的距离设有n个样品的p元观测数据12(,,,),1,2,,.Tiiiipxxxxin这时,每个样品可看成元空间的一个点,也即一个维向量,两个向量之间的距离记为,满足如下条件:pp9/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析(1)(非负性)且当且仅当(2)(对称性)(3)(三角不等式)在聚类分析中最常用的是欧氏距离。ijxx(,)0,ijdxx(,)0ijdxx),(),(ijjixxdxxd),(),(),(jkkijixxdxxdxxd10/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析21/21(,)[()]pijikjkkdxxxx1(,)||pijikjkkdxxxxmpkmjkikjixxxxd/11]||[),(1.欧氏距离2.绝对距离3.明氏距离4.切氏距离(6.1.1)(6.1.2)(6.1.4)||max),(1jkikpkjixxxxd(6.1.3)其中m(m0)为常数。11/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析2/1122]/)([),(pkkjkikjisxxxxd)()(),(1jiTjijixxxxxxd5.方差加权距离6.马氏距离其中为样品的协方差矩阵.(6.1.5)(6.1.6).1,)(111122njjkknjkjkkxnXXxns其中12/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析在MATLAB中,计算距离的命令是pdist.调用格式Y=pdist(X,distance)输入的X是一个矩阵,行为个体,列为指标,distance是距离的类型。若缺省distance,则输出的Y是一个行向量,向量的长度为(N-1)*N/2,其中N是样本的容量,Y的元素分别为个体(1,2),(1,3),...,(1,N),(2,3),...(2,N),.....(N-1,N)之间的欧氏距离。可选项distance有:'euclidean'欧氏距离;'cityblock'绝对距离;'minkowski'明氏距离(m=2);'chebychev'切氏距离;'seuclidean'方差加权距离;'mahalanobis'马氏距离。13/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析省(市)工薪收入(元/人)经营净收入(元/人)财产性收入(元/人)转移性收入(元/人)北京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.1.12008年我国5省、区、市城镇居民人均年家庭收入如下表为了研究上述5个省、区、市的城镇居民收入差异,需要利用统计资料对其进行分类,指标变量有4个,计算各省、区、市之间的前6种距离14/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析解:x=[18738.96778.36452.757707.8721791.111399.14369.126199.779302.38959.43293.923603.728354.63638.7665.332610.619422.22938.15141.751976.49];d1=pdist(x);%此时计算出各行之间的欧氏距离,为了得到距离矩阵,键入命令:D=squareform(d1);%注意此时d1必须是一个行向量,结果为实对称矩阵15/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析D=1.0e+004*00.34621.02931.15751.09440.346201.27631.39321.30801.02931.276300.14280.16391.15751.39320.142800.12801.09441.30800.16390.12800矩阵D中的第3行第2列为12763,表示上海与山西的欧氏距离为12763,其余类推.16/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析若想得到下三角阵,则有命令:S=tril(squareform(d1))S=1.0e+004*000000.346200001.02931.27630001.15751.39320.1428001.09441.30800.16390.1280017/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析欧氏距离与量纲有关,因此,有时需要对数据进行预处理,如标准化等,在Matlab中的命令是:zscore(x).d2=pdist(x,'cityblock');%计算绝对距离D2=squareform(d2)D2=1.0e+004*00.52651.38811.60091.55190.526501.56001.80901.72811.38811.560000.24900.19211.60091.80900.249000.20781.55191.72810.19210.2078018/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析d3=pdist(x,‘minkowski’,3);%计算明氏距离,d3为1行10列的行向量d4=pdist(x,'chebychev')%计算切氏距离.d5=pdist(x,'seuclidean')%计算方差加权距离.d6=pdist(x,'mahalanobis')%计算马氏距离19/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析欧氏距离与量纲有关,因此,有时需要对数据进行预处理,如标准化等,在MATLAB中的命令是zscore,调用格式Z=zscore(X)输入X表示N行p列的原始观测矩阵,行为个体,列为指标。输出Z为X的标准化矩阵,即Z=(X–ones(N,1)*mean(X))./(ones(N,1)*std(X)),其中mean(X)为行向量,表示各个指标的均值估计,std(X)表示指标的标准差估计。./表示对应元素相除,ones(N,1)表示元素全为1的行向量,向量的长度为N。20/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析聚类分析方法不仅可以对样品进行分类,而且可以对变量进行分类,在对变量进行分类时,常常采用相似系数来度量变量之间的相似性。对个指标变量进行聚类时,用相似系数来衡量变量之间的相似程度(关联度),若用表示变量之间的相似系数,则应满足:pC,||1C(1)且1C(2)当且仅当1C,0kk(3)CC21/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析相似系数中最常用的是相关系数与夹角余弦.例6.1.2.计算例6.1.1中各指标之间的相关系数与夹角余弦解:x=[…];%与例6.1.1数据相同R=corrcoef(x);%指标之间的相关系数R=1.00000.61830.81380.89310.61831.00000.42870.29270.81380.42871.00000.92350.89310.29270.92351.000022/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析x1=normc(x);%将x的各列化为单位向量J=x1‘*x1%计算夹角余弦J=1.00000.95360.96090.97970.95361.00000.90260.89900.96090.90261.00000.98330.97970.89900.98331.000023/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析6.1.3类间距离与递推公式前面,我们介绍了两个向量之间的距离,下面我们介绍两个类别之间的距离:ijdjixx,qpGG,qpnn,,minpqpqijiGjGDd设表示两个样品之间的距离,分别表示两个类别,各自含有(1)最短距离即用两类中样品之间的距离最短者作为两类间距离.个样品.(6.1.9)24/24MATLAB数据分析方法(机械工业出版社)第6章聚类分析(2)最长距离,maxpqpqijiGjGDd即用两类中样品