聚类分析又称群分析,它是研究(样品或指标)分类问题的一种多元统计方法,也是数据挖掘技术的基本方法。所谓类,通俗地说,就是指相似元素的集合。聚类分析起源于分类学,在考古的分类学中,人们主要依靠经验和专业知识来实现分类。随着生产技术和科学的发展,人类的认识不断加深,分类越来越细,要求也越来越高,有时光凭经验和专业知识是不能进行确切分类的,往往需要定性和定量分析结合起来去分类,于是数学工具逐渐被引进分类学中,形成了数值分类学。后来随着多元分析的引进,聚类分析又逐渐从数值分类学中分离出来而形成一个相对独立的分支。
聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。这里介绍常用的系统聚类法。
正如样本之间的距离可以有不同的定义方法一样(欧氏距离、曼哈顿距离、马氏距离等),类与类之间的距离也有各种定义。例如可以定义类与类之间的距离为两类之间最近样本的距离,或者定义为两类之间最远样本的距离,也可以定义为两类重心之间的距离等等。类与类之间用不同的方法定义距离,就产生了不同的系统聚类方法。常用的八种系统聚类方法,即最短距离法、最长距离法、中间距离法、重心法、类平均法、可变类平均法、可变法、离差平方和法。系统聚类分析尽管方法很多,但归类的步骤基本上是一样的,所不同的仅是类与类之间的距离有不同的定义方法,从而得到不同的计算距离的公式。
一、系统聚类分析涉及的基本问题
现有10名学生六门课程成绩样本表(附表I)如下:
1、样本间距离及距离矩阵
以欧氏距离为例,样本\(S_1\)和\(S_3\)之间的距离\(D_{13}\)的距离为,
样本\(S_i\)和\(S_j\)之间的距离\(D_{ij}\)的距离构成的矩阵表(附表II)为,
2、按样本间距离矩阵最小距离聚类
样本间距离矩阵为对称矩阵,即\(D_{ij}=D_{ji}\),并且对角线距离为0,即\(D_{ii}=0\)。所以,样本间距离矩阵最小距离只在下三角矩阵中寻找即可。表中\(D_{26}=18.60\)为最小距离,说明样本\(S_2\)和\(S_6\)相似性最大,可以首先归为同一类。把样本\(S_2\)和\(S_6\)做为新类,计算新类和其它类距离,然后在降维距离矩阵中选择最小距离、再归类,直至把所有样本归为一类。
3、类与类之间的距离
我们可以把每个样本看成一个类,也可以把具有某种共同特征的几个样本分为一类,如按距离最小将样本\(S_2\)和\(S_6\)归为一类。当按某种距离公式(如欧氏距离)计算出两两样本间距离矩阵后,在距离矩阵基础上,多个样本和一个样本、或多个样本和多个样本之间的距离称为类与类之间的距离。
如果把样本\(S_2\)和\(S_6\)分为一类、即\(C_1\{S_2,S_6\}\),再把样本\(S_7\)、\(S_8\)和\(S_9\)分为一类、即\(C_2\{S_7,S_8,S_9\}\)。\(C_1\)和\(C_2\)之间的距离称为类间距离。
二、系统聚类方法
为了分析问题简便,将5名学生3门课程成绩样本(附表III)进行系统聚类分析。样本数据为,
样本\(S_i\)和\(S_j\)之间的距离\(D_{ij}\)的距离构成的矩阵表(附表IV)为,
1、最短距离法
根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_1\)。在矩阵表中将\(C_1\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_1\)和其它样本或类之间的最短距离,得矩阵表如下,
表中类\(C_1\)和样本\(S_1\)之间的最短距离为,\(min\{D_{12},D_{14}\}=min\{56.21,57.25\}=56.21\),\(C_1\)和其它样本之间的最短距离同理。
现在距离矩阵中\(C_1\)和\(S_5\)最小距离为46.30,将两样本聚类为\(C_2(2,4,5)\),在矩阵表中将\(C_2\)设置为第1行第1列,划去\(C_1\)、\(S_5\)对应行列,并计算\(C_2\)和其它样本或类之间的最短距离,得矩阵表如下,
表中\(C_2(2,4,5)\)和\(S_1\)最短距离为,\(min\{D_{12},D_{14},D_{15}\}=min\{56.21.57.25,53.85\}=53.85\)。
按最小距离49.17将\(C_2(2,4,5)\)、\(S_3\)聚类为\(C_3(2,3,4,5)\),
表中\(C_3(2,3,4,5)\)和\(S_1\)最短距离为,\(min\{D_{12},D_{13},D_{14},D_{15}\}=min\{56.21,78.88,57.25,53.85\}=53.85\)。
最后,\(C_3(2,3,4,5)\)和\(S_1\)聚为一类。
上述并类过程可用下图表达,
2、最长距离法
最长距离和最短距离方法的唯一区别是取类间各样本距离集合的最大值。例如,类\(C_1(S_2,S_6)\)和\(C_2(S_8,S_9,S_{10})\)之间的距离矩阵为,
距离矩阵中最大距离为52.79,最小距离为42.13。运用最短距离法取最短距离42.13,而用最长距离法则取最大距离52.79。
根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_1\)。在矩阵表中将\(C_1\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_1\)和其它样本或类之间的最长距离,得矩阵表如下,
类\(C_1\)和样本\(S_1\)之间的最长距离为,\(max\{D_{12},D_{14}\}=max\{56.21,57.25\}=57.25\),\(C_1\)。其它样本之间的最长距离同理。
按最小距离53.85将\(S_1\)、\(S_5\)聚类为\(C_2(1,5)\),
类\(C_2\)和类\(C_1\)之间的最长距离为,\(max\{D_{12},D_{14},D_{52},D_{54}\}=max\{56.21,57.25,56.83,46.30\}=57.25\)。\(C_2\)和\(S_3\)最长距离为,\(max\{D_{31},D_{35}\}=max\{78.88,80.61\}=80.61\)。
按最小距离57.25将\(C_1\)、\(C_2\)聚类为\(C_3(1,2,4,5)\),
3、中间距离法
类间中间距离采用“二和一”方式逐渐包含不同数量样本的类合为一类(这里为类\(G_r\))。如果在某一步将类\(G_p\)与类\(G_q\)合并为\(G_r\),任一类\(G_k\)和\(G_r\)的中间距离公式为:
例如,设\(\beta=-\frac{1}{4}\),样本\(S_2\)和\(S_6\)为一类\(C_r\),和样本\(S_7\)的中间距离为,
当\(\beta=-\frac{1}{4}\)时,由初等几何知\(D_{kr}\)就是上面三角形的中线。由于中间距离公式中的量都是距离的平方,为了计算方便,可将距离矩阵(附表IV)各距离换算为平方。转换后距离矩阵如下,
按距离最小(最小距离平方为1983.81)将样本\(S_2\)和\(S_4\)归为一类\(C_r\)。在矩阵表中将\(C_r\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_r\)和其它样本或类之间的中间距离,得矩阵表如下,
表中,按中间距离公式,
按最小距离平方2190.72将\(C_r(2,4)\)、\(S_5\)聚类为\(C_s(2,4,5)\),
按最小距离平方2263.54将\(C_s(2,4,5)\)、\(S_1\)聚类为\(C_t(1,2,4,5)\),
4、重心法
根据(附表I)数据,利用重心法计算类\(C_1\{S_2,S_6\}\)和\(C_2\{S_8,S_9,S_{10}\}\)之间的距离,只需计算出各个类的重心坐标,然后计算重心坐标的欧氏距离或其它距离。
样本\(S_2(74,69,66,94,81,55)\)和\(S_6(72,80,70,88,86,43)\)的重心为,
样本\(S_8(77,49,69,50,89,55)\)、\(S_9(65,89,50,70,99,85)\)和\(S_{10}(78,41,55,89,71,28)\)的重心为,
两个重心之间的欧氏距离为,
根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_r\)。在矩阵表中将\(C_r\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_r\)和其它样本或类之间的重心距离,得矩阵表如下,
表中,类\(C_r\)的重心坐标为,
类\(C_r\)重心和样本\(S_1\)之间的欧氏距离为,
和其它样本之间的重心距离同理。
按最小距离10.14将\(C_r(2,4)\)、\(S_1\)聚类为\(C_s(1,2,4)\),
表中,类\(C_s\)的重心坐标为,
类\(C_s\)和样本\(S_3\)、\(S_5\)之间重心的欧氏距离为,
按最小距离33.94将\(C_s(1,2,4)\)、\(S_5\)聚类为\(C_t(1,2,4,5)\),
如果最初样品之间的距离采用欧氏距离,重心法聚类到某一步,类\(G_p\)和\(G_q\)分别有样本\(n_{_p}\)和\(n_{_q}\)个,将\(G_p\)和\(G_q\)合并为\(G_r\),则\(G_r\)内样本个数为\(n_{_r}=n_{_p}+n_{_q}\),某一类\(n_{_k}\)与新类\(G_r\)的距离为,
5、类平均法
当聚类到某一步时,类\(G_p\)和\(G_q\)分别有样本\(n_{_p}\)和\(n_{_q}\)个,将\(G_p\)和\(G_q\)合并为\(G_r\),则\(G_r\)内样本个数为\(n_{_r}=n_{_p}+n_{_q}\),某一类\(n_{_k}\)与新类\(G_r\)的类平均距离公式为,
根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_r\)。在矩阵表中将\(C_r\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_r\)和其它样本或类之间的类平均距离,得矩阵表如下,
表中,由类平均距离公式,
按最小距离51.83将\(C_r(2,4)\)、\(S_5\)聚类为\(C_s(2,4,5)\),
表中,
按最小距离55.79将\(C_s(2,4,5)\)、\(S_1\)聚类为\(C_t(1,2,4,5)\),
6、可变类平均法
由于类平均法公式中没有反映\(G_p\)和\(G_q\)之间距离\(D_{pq}\)的影响,所以给出可变类平均法。此法定义两类之间的距离同上,只是将任一类\(G_k\)与新类\(G_r\)的距离改为如下形式:
其中\(\beta\)是可变的且\(\beta<1\)。
这里设\(\beta=-\frac{1}{4}\),根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_r\)。在矩阵表中将\(C_r\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_r\)和其它样本或类之间的类平均距离,得矩阵表如下,
按最小距离53.50将\(C_r(2,4)\)、\(S_5\)聚类为\(C_s(2,4,5)\),
按最小距离58.58将\(C_s(2,4,5)\)、\(S_1\)聚类为\(C_t(1,2,4,5)\),
7、可变法
如果在某一步将类\(G_p\)与类\(G_q\)合并为\(G_r\),任一类\(G_k\)和\(G_r\)的中间距离公式为:
其中\(\beta\)是可变的且\(\beta<1\)。显然在可变类平均法中取\(\frac{n_{_p}}{n_{_r}}=\frac{n_{_q}}{n_{_r}}=\frac{1}{2}\),即为上式。可变类平均法与可变法的分类效果与的选择关系极大,如果接近1,一般分类效果不好.在实际应用中\(\beta\)常取负值。下面的计算取\(\beta=-\frac{1}{4}\)。
根据距离矩阵(附表IV),按距离最小(最小距离44.54)将样本\(S_2\)和\(S_4\)归为一类\(C_r\)。在矩阵表中将\(C_r\)设置为第1行第1列,划去\(S_2\)、\(S_4\)对应行列,并计算\(C_r\)和其它样本或类之间的可变距离,得矩阵表如下,
按最小距离57.46将\(C_s(2,4,5)\)、\(S_1\)聚类为\(C_t(1,2,4,5)\),
8、离差平方和法
这个方法是Ward提出来的,故又称为Ward法。
设将n个样品分成k类:\(G_1,G_2,\dots,Gk\),用\(X_i^{(t)}\)表示\(G_t\)中的第i个样品(注意\(X_i^{(t)}\)是p维向量),\(n_{_t}\)表示\(G_t\)中的样品个数,\(\overline{X}^{(t)}\)是\(G_t\)的重心,则\(G_t\)中样品的离差平方和为:
例如,如果把样本\(S_2(74,69,66)\)和\(S_4(65,38,85)\)归为一类\(G_r\),其重心坐标为
\(G_r\)的离差平方和为,
根据(附表III),交叉样本离差平方和矩阵表为,
按最小离差平方和67将\(S_1\)、\(S_2\)聚类为\(C_r(1,2)\),
在离差平方和矩阵基础上,当聚类到某一步时,类\(G_p\)和\(G_q\)分别有样本\(n_{_p}\)和\(n_{_q}\)个,将\(G_p\)和\(G_q\)合并为\(G_r\),则\(G_r\)内样本个数为\(n_{_r}=n_{_p}+n_{_q}\),某一类\(n_{_k}\)与新类\(G_r\)的离差平方和距离公式为,
按最小距离703将\(G_r\)、\(S_4\)聚类为\(C_s(1,2,4)\),
按最小距离1063.12将\(G_s\)、\(S_5\)聚类为\(C_t(1,2,4,5)\),
三、系统聚类分析代码及样例
##函数-系统聚类webTJ.Datamining.setCluster(arrs,drrs,type,k);##参数【arrs,drrs,type,k】【样本数组,距离矩阵,距离或相似性类型,聚类组数】注:聚类类型type取1、2、3、4、5、6、7,分别为R语言的最短距离法(single)、最长距离法(complete)、中间距离法(median)、相似法(mcquitty)、类平均法(average)、重心法(centroid)、离差平方和法(ward);聚类组数k为期望将样本分为几组
代码样例
webTJ.clear();varoTxt="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";varoArrs=webTJ.getArrs(oTxt,"|",",");oArrs=webTJ.Array.getQuantify(oArrs);varoDrrs=webTJ.Datamining.getOSDiss(oArrs);webTJ.Datamining.setCluster(oArrs,oDrrs,1,3);四、案例分析
1、人口文化程度聚类分析
为了更深入了解我国人口的文化程度状况,现利用1990年全国人口普查数据对全国30个省、直辖市、自治区进行聚类分析。分析选用了三个指标:(1)大学以上文化程度的人口占全部人口的比例(DXBZ);(2)初中文化程度的人口占全部人口的比例(CZBZ);(3)文盲半文盲人口占全部人口的比例(WMBZ)、分别用来反映较高、中等、较低文化程度人口的状况,原始数据如下表:
数据处理过程如下,
I、将表格中数据部分转换为格式字符串(列由“,”分割、行由“|”分割)
9.3,30.55,8.7|4.67,29.38,8.92|0.96,24.69,15.21|1.38,29.24,11.3|1.48,25.47,15.39|2.6,32.32,8.81|2.15,26.31,10.49|2.14,28.46,10.87|6.53,31.59,11.04|1.47,26.43,17.23|1.17,23.74,17.46|0.88,19.97,24.43|1.23,16.87,15.63|0.99,18.84,16.22|0.98,25.18,16.87|0.85,26.55,16.15|1.57,23.16,15.79|1.14,22.57,12.1|1.34,23.04,10.45|0.79,19.14,10.61|1.24,22.53,13.97|0.96,21.65,16.24|0.78,14.65,24.27|0.81,13.85,25.44|0.57,3.85,44.43|1.67,24.36,17.62|1.1,16.85,27.93|1.49,17.76,27.7|1.61,20.27,22.06|1.85,20.66,12.75步骤:
a.用鼠标全选网页表格或WORD表格中的数据;b.复制、粘贴(选择只保留文本粘贴)所选数据到EXCEL文档中;c.删除标题行、省份和序号列;c.复制、粘贴数据到空白WORD文档中;d.在WORD文档中将数据列空格替换为列分隔符,如逗号“,”(复制数据列之间空格-打开文字替换菜单-粘贴空格到查找内容文本框中-在替换为文本框中输入列分隔符-点击全部替换)e.在WORD文档中将数据回车换行符替换为行分隔符,如符号“|”(打开文字替换菜单-在查找内容文本框中输入“^p”-在替换为文本框中输入行分隔符-点击全部替换)
II、代码
varoTxt="9.3,30.55,8.7|4.67,29.38,8.92|0.96,24.69,15.21|1.38,29.24,11.3|1.48,25.47,15.39|2.6,32.32,8.81|2.15,26.31,10.49|2.14,28.46,10.87|6.53,31.59,11.04|1.47,26.43,17.23|1.17,23.74,17.46|0.88,19.97,24.43|1.23,16.87,15.63|0.99,18.84,16.22|0.98,25.18,16.87|0.85,26.55,16.15|1.57,23.16,15.79|1.14,22.57,12.1|1.34,23.04,10.45|0.79,19.14,10.61|1.24,22.53,13.97|0.96,21.65,16.24|0.78,14.65,24.27|0.81,13.85,25.44|0.57,3.85,44.43|1.67,24.36,17.62|1.1,16.85,27.93|1.49,17.76,27.7|1.61,20.27,22.06|1.85,20.66,12.75";varoArrs=webTJ.getArrs(oTxt,"|",",");oArrs=webTJ.Array.getQuantify(oArrs);oArrs=webTJ.Datamining.getYZarrs(oArrs,1);//数据标准varoDrrs=webTJ.Datamining.getOSDiss(oArrs);//欧氏距离矩阵webTJ.Datamining.setCluster(oArrs,oDrrs,2,5);//最长距离法(complete)、聚为5类代码解释:
a.格式字符串导入数组并量化
varoArrs=webTJ.getArrs(oTxt,"|",",");oArrs=webTJ.Array.getQuantify(oArrs);b.数据标准化
c.计算距离矩阵
d.聚类分析
webTJ.Datamining.setCluster(oArrs,oDrrs,1,3);e.结果提取
可以将结果排序的聚类样本表复制、粘贴到EXCEL。
2、根据信息基础设施的发展状况,对世界20个国家和地区进行分类
这里选取了发达国家、新兴工业化国家、拉美国家、亚洲发展中国家、转型国家等不同类型的20个国家作Q型聚类分析。描述信息基础设施的变量主要有六个: