统计学─从数据到结论第十一章聚类分析分类物以类聚、人以群分;但根据什么分类呢?如要想把中国的县分类,就有多种方法可以按照自然条件来分,比如考虑降水、土地、日照、湿度等,也可考虑收入、教育水准、医疗条件、基础设施等指标;既可以用某一项来分类,也可以同时考虑多项指标来分类。聚类分析对一个数据,既可以对变量(指标)进行分类(相当于对数据中的列分类),也可以对观测值(事件,样品)来分类(相当于对数据中的行分类)。当然,不一定事先假定有多少类,完全可以按照数据本身的规律来分类。本章要介绍的分类的方法称为聚类分析(clusteranalysis)。对变量的聚类称为R型聚类,而对观测值聚类称为Q型聚类。它们在数学上是无区别的。饮料数据(drink.txt)16种饮料的热量、咖啡因、钠及价格四种变量11.1如何度量距离远近?如果想要对100个学生进行分类,而仅知道他们的数学成绩,则只好按照数学成绩分类;这些成绩在直线上形成100个点。这样就可以把接近的点放到一类。如果还知道他们的物理成绩,这样数学和物理成绩就形成二维平面上的100个点,也可以按照距离远近来分类。11.1如何度量距离远近?三维或者更高维的情况也是类似;只不过三维以上的图形无法直观地画出来而已。在饮料数据中,每种饮料都有四个变量值。这就是四维空间点的问题了。两个距离概念按照远近程度来聚类需要明确两个概念:一个是点和点之间的距离,一个是类和类之间的距离。点间距离有很多定义方式。最简单的是歐氏距离。当然还有一些和距离相反但起同样作用的概念,比如相似性等,两点越相似度越大,就相当于距离越短。两个距离概念由一个点组成的类是最基本的类;如果每一类都由一个点组成,那么点间的距离就是类间距离。但是如果某一类包含不止一个点,那么就要确定类间距离,类间距离是基于点间距离定义的:比如两类之间最近点之间的距离可以作为这两类之间的距离,也可以用两类中最远点之间的距离或各类的中心之间的距离来作为类间距离。两个距离概念在计算时,各种点间距离和类间距离的选择是通过统计软件的选项实现的。不同的选择的结果会不同,但一般不会差太多。向量x=(x1,…,xp)与y=(y1,…,yp)之间的距离或相似系数:2()iiixy欧氏距离:Euclidean平方欧氏距离:SquaredEuclidean2()iiixy夹角余弦(相似系数1):cosine22(1)cosiiixyxyiiiixyCxyPearsoncorrelation(相似系数2):Chebychev:Maxi|xi-yi|Block(绝对距离):Si|xi-yi|Minkowski:1()qqiiixy当变量的测量值相差悬殊时,要先进行标准化.如R为极差,s为标准差,则标准化的数据为每个观测值减去均值后再除以R或s.当观测值大于0时,有人采用Lance和Williams的距离||1iiiiixypxy22()()(2)()()iiixyxyiiiixxyyCrxxyy类Gp与类Gq之间的距离Dpq(d(xi,xj)表示点xi∈Gp和xj∈Gq之间的距离)min(,)pqijDdxx最短距离法:最长距离法:重心法:离差平方和:(Wald)类平均法:(中间距离,可变平均法,可变法等可参考各书).在用欧氏距离时,有统一的递推公式12121212()'(),()'(),()'()ipjqkpqipipjqjqxGxGkipqxGGDxxxxDxxxxDxxxxDDDDmax(,)pqijDdxxmin(,)pqpqDdxx121(,)ipjqpqijxGxGDdxxnn有了上面的点间距离和类间距离的概念,就可以介绍聚类的方法了。这里介绍两个简单的方法。11.2事先要确定分多少类:k-均值聚类前面说过,聚类可以走着瞧,不一定事先确定有多少类;但是这里的k-均值聚类(k-meanscluster,也叫快速聚类,quickcluster)却要求你先说好要分多少类。看起来有些主观,是吧!假定你说分3类,这个方法还进一步要求你事先确定3个点为“聚类种子”(SPSS软件自动为你选种子);也就是说,把这3个点作为三类中每一类的基石。11.2事先要确定分多少类:k-均值聚类然后,根据和这三个点的距离远近,把所有点分成三类。再把这三类的中心(均值)作为新的基石或种子(原来“种子”就没用了),再重新按照距离分类。如此叠代下去,直到达到停止叠代的要求(比如,各类最后变化不大了,或者叠代次数太多了)。显然,前面的聚类种子的选择并不必太认真,它们很可能最后还会分到同一类中呢。下面用饮料例的数据来做k-均值聚类。•假定要把这16种饮料分成3类。利用SPSS,只叠代了三次就达到目标了(计算机选的种子还可以)。这样就可以得到最后的三类的中心以及每类有多少点FinalClusterCenters203.1033.71107.341.654.163.4913.0510.068.763.152.692.94CALORIECAFFEINESODIUMPRICE123ClusterNumberofCasesineachCluster2.0007.0007.00016.000.000123ClusterValidMissing根据需要,可以输出哪些点分在一起。结果是:第一类为饮料1、10;第二类为饮料2、4、8、11、12、13、14;第三类为剩下的饮料3、5、6、7、9、15、16。SPSS实现(聚类分析)K-均值聚类以数据drink.sav为例,在SPSS中选择Analyze-Classify-K-MenasCluster,然后把calorie(热量)、caffeine(咖啡因)、sodium(钠)、price(价格)选入Variables,在NumberofClusters处选择3(想要分的类数),如果想要知道哪种饮料分到哪类,则选Save,再选ClusterMembership等。注意k-均值聚类只能做Q型聚类,如要做R型聚类,需要把数据阵进行转置。11.2事先不用确定分多少类:分层聚类另一种聚类称为分层聚类或系统聚类(hierarchicalcluster)。开始时,有多少点就是多少类。它第一步先把最近的两类(点)合并成一类,然后再把剩下的最近的两类合并成一类;这样下去,每次都少一类,直到最后只有一大类为止。越是后来合并的类,距离就越远。•对于饮料聚类。SPSS输出为AgglomerationSchedule51513.13000741325.9700032436.4850286969.1300010110102.6300015811150.330008516198.375101128319.77836121214322.540001236458.7950413571006.86370132121435.0768914351755.654101114236287.1751213151219406.6845140Stage123456789101112131415Cluster1Cluster2ClusterCombinedCoefficientsCluster1Cluster2StageClusterFirstAppearsNextStageVerticalIcicleXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNumberofclusters12345678910111213141571615596314121181342101Case“冰柱图”(icicle)例:5个样品距离阵令Dk为系统聚类法种第k次合并时的距离,如{Dk}为单调的,则称具有单调性.前面只有重心和中间距离法不具有单调性.0070()160938085740ijDd步骤:最短距离法最长距离法阶段bk(第k阶段类的集合)DkDkD(0)(1)(2)(3)(4)(5)00D(1)(1,3)(2)(4)(5)11D(2)(1,3)(2,4)(5)33D(3)(1,3)(2,4,5)45D(4)(1,3,2,4,5)69注:最短和最长距离法结果一样(一般不一定一样)聚类要注意的问题聚类结果主要受所选择的变量影响。如果去掉一些变量,或者增加一些变量,结果会很不同。相比之下,聚类方法的选择则不那么重要了。因此,聚类之前一定要目标明确。聚类要注意的问题另外就分成多少类来说,也要有道理。只要你高兴,从分层聚类的计算机结果可以得到任何可能数量的类。但是,聚类的目的是要使各类之间的距离尽可能地远,而类中点的距离尽可能的近,并且分类结果还要有令人信服的解释。这一点就不是数学可以解决的了。SPSS实现(聚类分析)分层聚类对drink.sav数据在SPSS中选择Analyze-Classify-HierarchicalCluster,然后把calorie(热量)、caffeine(咖啡因)、sodium(钠)、price(价格)选入Variables,在Cluster选Cases(这是Q型聚类:对观测值聚类),如果要对变量聚类(R型聚类)则选Variables,为了画出树状图,选Plots,再点Dendrogram等。附录Lance和Williams给出(对欧氏距离)统一递推公式:D2(k,r)=apD2(k,p)+aqD2(k,q)+bD2(p,q)+g|D2(k,p)-D2(k,q)|前面方法的递推公式可选择参数而得:方法ai(i=p,q)bg最短距离½0-1/2最长距离½01/2重心ni/nr-apaq0类平均ni/nr00离差平方和(ni+nk)/(nr+nk)-nk/(nr+nk)0中间距离1/2-1/40可变法(1-b)/2b(1)0可变平均(1-b)ni/nrb(1)0返回