1.1k likes | 1.19k Views
第八章 聚类分析与判别分析. 8.1 聚类分析 8.2 判别分析. 8.1 聚类分析 8.1.1 聚类分析的一般概念 8.1.2 系统聚类法的基本思想和步骤 8.1.3 用 CLUSTER 过程和 TREE 过程进行系统聚类 8.1.4 用 VARCLUS 过程进行变量聚类. 8.1.1 聚类分析的一般概念 设有 n 个样品 ( 多元观测值 ) ,每个样品测得 m 项指标 ( 变量 ) ,得到观测数据 x ij ( i =1,…, n ; j =1,…, m ),如表所示。.
E N D
第八章 聚类分析与判别分析 • 8.1 聚类分析 • 8.2 判别分析
8.1 聚类分析 • 8.1.1 聚类分析的一般概念 • 8.1.2 系统聚类法的基本思想和步骤 • 8.1.3 用CLUSTER过程和TREE过程进行系统聚类 • 8.1.4 用VARCLUS过程进行变量聚类
8.1.1 聚类分析的一般概念 • 设有n个样品(多元观测值),每个样品测得m项指标(变量),得到观测数据xij(i=1,…,n;j=1,…,m),如表所示。
表8-1中数据又称为观测数据阵或简称为数据阵,其数学表示为:表8-1中数据又称为观测数据阵或简称为数据阵,其数学表示为: • 其中列向量Xj = (x1j,x2j,…,xnj)',表示第j项指标(j = 1,2,…,m),行向量X(i) = (xi1,xi2,…,xin)表示第i个样品。
1. 两种聚类分析 • 根据分类对象的不同,聚类分析分为两种: • (1) 样品聚类:样品聚类是对样品(观测)进行的分类处理,又称为Q型分类,相当于对观测数据阵按行分类。 • (2) 变量聚类:变量聚类是对变量(指标)进行的分类处理,又称为R型分类,相当于对观测数据阵按列分类。 • 两种聚类在形式上是对称的,处理方法也是相似的。
2. 聚类分析的方法 • 聚类方法大致可归纳如下: • (1) 系统聚类法(谱系聚类) • 先将l个元素(样品或变量)看成l类,然后将性质最接近(或相似程度最大)的2类合并为一个新类,得到l – 1类,再从中找出最接近的2类加以合并变成了l – 2类,如此下去,最后所有的元素全聚在一类之中。 • (2) 分解法(最优分割法) • 其程序与系统聚类相反。首先所有的元素均在一类,然后按照某种最优准则将它分成2类、3类,如此下去,一直分裂到所需的k类为止。
(3) 动态聚类法(逐步聚类法) • 开始将l个元素粗糙地分成若干类,然后用某种最优准则进行调整,一次又一次地调整,直至不能调整为止。 • (4) 有序样品的聚类 • n个样品按某种因素(时间或年龄或地层深度等)排成次序,要求必须是次序相邻的样品才能聚在一类。 • 其他还有:有重叠聚类、模糊聚类、图论聚类等方法。
3. 聚类统计量 • 聚类分析实质上是寻找一种能客观反映元素之间亲疏关系的统计量,然后根据这种统计量把元素分成若干类。常用的聚类统计量有距离系数和相似系数两类。距离系数一般用于对样品分类,而相似系数一般用于对变量聚类。距离的定义很多,如马氏距离、明考斯基距离、兰氏距离、切比雪夫距离以及常见的欧氏距离: • 等。相似系数有相关系数、夹角余弦、列联系数等。
当然,采用不同的分类方法会得到不同的分类结果,有时即使是同一种聚类方法,因距离的定义方法不同也会得到不同的分类结果。对任何观测数据都没有唯一“正确的”分类方法。实际应用中,常采用不同的分类方法对数据进行分类,可以提出多种分类意见,由实际工作者决定所需要的分类数和分类情况。当然,采用不同的分类方法会得到不同的分类结果,有时即使是同一种聚类方法,因距离的定义方法不同也会得到不同的分类结果。对任何观测数据都没有唯一“正确的”分类方法。实际应用中,常采用不同的分类方法对数据进行分类,可以提出多种分类意见,由实际工作者决定所需要的分类数和分类情况。
8.1.2 系统聚类法的基本思想和步骤 • 下面以样品聚类为例介绍系统聚类法。 • 1. 系统聚类法的基本思想 • 设有n个样品,每个样品测得m项指标(见表8-1)。系统聚类方法的基本思想是:首先定义样品间的距离(或相似系数)和类与类之间的距离。一开始将n个样品各自自成一类,这时类间的距离与样品间的距离是等价的;然后将距离最近的两类合并,并计算新类与其他类的类间距离,再按最小距离准则并类。这样每次减少一类,直到所有的样品都并成一类为止。这个并类过程可以用谱系聚类图形象地表达出来。
2. 系统聚类法的基本步骤 • (1) 数据变换 • 为了便于比较或消除量纲的影响,在作聚类之前常常首先要对数据进行变换。变换的方法有中心化变换、标准化变换、极差标准化变换、极差正规化变换、对数变换等。 • 最常用的标准化变换为: • 其中 , ,j = 1,2,…,m。 • 变换后的数据,每个变量的样本均值为0,标准差为1,而且标准化变换后的数据{ }与变量的量纲无关。
(2) 计算n个样品两两间的距离 • 选择度量样品间距离的定义,计算n个样品两两间的距离,得样品间的距离矩阵D(0)。 • (3) 聚类过程 • 首先n个样品各自构成一类,类的个数k = n:Gi = {X(i)}(i = 1,…,n),此时类间的距离就是样品间的距离(即D(1) = D(0))。 • 令j = 2,…,n,执行如下并类过程: • 1) 合并类间距离最小的两类为一新类(类间距离参见下文“系统聚类分析的方法”)。此时类的总个数k减少1类,即k = n – j + 1;
2) 计算新类与其他类的距离,得新的距离矩阵D(j))。 • 若合并后类的总个数k仍大于1,重复1)和2)步,直到类的总个数为1时止。 • (4) 画谱系聚类图 • 谱系图能明确清晰地描述各个样本点在不同层次上聚合分类的情况。 • (5) 决定分类的个数及各类的成员
3. 系统聚类分析的方法 • 设有原始数据阵,如表8-1所示。G为在某一聚类水平上的类的个数,Ck是当前(水平G)的第k类,nk为Ck中的样品个数,DKL为第G水平的类CK和类CL之间的距离。 • 根据类间距离计算方法的不同,有11种不同的聚类方法: • (1) 类平均法 • 类平均法(Average Linkage)用两类样品两两观测间距离的平均作为类间距离,即 • 类平均法是一种应用较广泛,聚类效果较好的方法。
(2) 重心法 • 重心法(Centroid Method)用两个类重心(均值)之间的(平方)欧氏距离定义类间距离,即 • (3) 最长距离法 • 最长距离法(Complete Method)用两类观测间最远一对观测的距离定义类间距离,即 • (4) 最短距离法 • 最短距离法(Single Linkage) 用两类观测间最近一对观测的距离定义类间距离,即
(5) Ward最小方差法(离差平方和法) • Ward最小方差法(Ward's Mininum-Variance Method)也称Ward离差平方和法。类间距离定义为 • Ward方法并类时总是使得并类导致的类内离差平方和增量最小。 • 其它的聚类方法还有最大似然法(EML)法、可变类平均法(Flexible-Beta Method)、McQuitty相似分析法(McQuitty's Similarity Analysis)、中间距离法(Median Method)、两阶段密度估计法(Two –Stage Density Linkage)等。 • 类平均法和Ward最小方差法使用最广泛。
4. 系统聚类类数的确定 • (1) 由适当的阀值确定 • 选定某种聚类方法,按系统聚类的方法并类后,得到一张谱系聚类图,聚类图(又称谱系图)只反映样品间(或变量间)的亲疏关系,它本身并没有给出分类,需要给定一个临界相似尺度,用以分割谱系图而得到样品(或变量)的分类,如给定临界值(阀值)为d,那么,当样品间或已并类间距离小于d时,认为这些样品和类的关系密切,应该归属一类。
(2) 根据统计量确定分类个数 • 在SAS的CLUSTER过程中,提供一些统计量可以近似检验类个数如何选择更合适,用统计量决定类数的方法来自统计的方差分析思想,下面作一些介绍。 • 1) R2统计量 • 其中PG为分类数为G个类时的总类内离差平方和,T为所有样品或变量的总离差平方和。R2越大,说明分为G个类时每个类内的离差平方和都比较小,也就是分为G个类是合适的。但是,显然分类越多,每个类越小,R2越大,所以我们只能取G使得R2足够大,但G本身比较小,而且R2不再大幅度增加。
2) 半偏R2统计量 • 在把类CK和类CL合并为下一水平的类CM时,定义半偏相关 • 其中BKL=WM – (WK +WL)为合并类引起的类内离差平方和的增量,Wt为类Ct的类内离差平方和。半偏R2用于评价一次合并的效果,其值是上一步R2与该步R2的差值。其值越大,说明上一次合并的效果越好。
3) 伪F统计量 • 伪 • 伪F统计量评价分为G个类的效果。伪F统计量越大,表示分为G个类越合理。通常取伪F统计量较大而类数较小的聚类水平。 • 4) 伪t2统计量 • 伪 • 用此统计量评价合并类CK和类CL的效果,该值大说明合并的两个类CK和CL是很分开的,不应合并这两个类,而应该取合并前的水平。
8.1.3 用CLUSTER过程和TREE过程进行系统聚类 • 1. CLUSTER过程 • 系统聚类CLUSTER过程的一般格式为: • PROC CLUSTER <选项列表>; • VAR <聚类用变量>; • COPY <复制变量>; • ID <变量名>; • RUN;
其中: • 1) PROC CLUSTER语句为调用CLUSTERS过程的开始,其常用选项及功能见表8-2。 • 2) VAR语句指定用来聚类的数值型变量。如果缺省,则使用没有列在其他语句中的所有数值型变量。 • 3) COPY语句把指定的变量复制到OUTTREE = 的数据集中,以备后用。 • 4) ID语句中指定的变量用于区分聚类过程中的输出及OUTTREE数据集中的观测。
2. TREE过程 • TREE过程可以把CLUSTER过程产生的OUTTREE = 数据集作为输入,画出聚类谱系图,并按照用户指定的聚类水平(类数)产生分类结果数据集。一般格式如下: • PROC TREE <选项列表>; • COPY <复制变量>; • ID <变量>; • RUN; • 其中: • 1) PROC TREE语句为调用TREE过程的开始,其常用选项及功能见表8-3。
表8-3 PROC TREE语句的常用选项 • 2) COPY语句把输入数据集中的变量复制到输出数据集。 • 3) ID语句用于指定在输出树状图中的识别对象,ID变量可以是字符或数值变量。如果省略,TREE过程将使用变量_NAME_。
3. 应用实例 • 【例8-1】表8-4是全国沿海10省市农民2004年支出情况的汇总资料,表中涉及生活消费支出情况的八个指标。 • 假定上述数据已经存放在数据集Mylib.nm10。
试利用汇总资料对10个地区进行分类 • (1) 使用CLUSTER过程 • 为了进行系统聚类并产生帮助确定类数的统计量,使用如下代码: • proc cluster data = mylib.nm10 standard method = ward • outtree = otree pseudo; • copy group; • run; • 结果中首先给出数据相关系数矩阵特征值方面的信息。
结果的最后部分为聚类分析的完整过程(Cluster History),如图所示,内容按列划分从左到右依次为: • “NCL”为类别数量,表示新类别形成后类别的总数; • “--Clusters Joined---”为合并的类别,指明这一步合并了哪两个类,有两列。其中OBxxx表示某一个原始样品,而CLxxx表示在某一个聚类水平上产生的类。 • “FREQ”表示这次合并得到的类有多少个样品。 • “SPRSQ”是半偏R2,“RSQ”是R2,“PSF”为伪F统计量,“PST2”为伪t2统计量,“Tie”指示距离最小的候选类对是否有多对,本例全无。
(2) 确定分类个数 • 1) R2统计量(列标题为RSQ)用于评价每次合并成NCL个类时的聚类效果。R2越大说明NCL个类越分开,故聚类的效果好。R2的值总是在0和1之间,而且R2的值总是随着分类个数NCL的减少而变小。通过查看R2值的变化,可以确定n个样品分为几类最为合适。本例中,分为3个类之前(NCL>3)的并类过程中R2的减少是逐渐的,改变不大;当分为3类时的R2 = 0.838,而下一次合并后分为2类时R2下降较多(R2 = 0.721)。这时通过分析R2统计量可得出分为3个类是较合适的。
查看R2变化的大小也可以由合并类时的半偏R2(列标题为SPRSQ)得到。半偏R2的值是上一步R2与该步R2的差值,故某步的半偏R2值越大,说明上一步合并的效果好。本例中半偏R2最大和次大分别为NCL = 1和2,说明根据半偏R2准则分为两个类或三个类是较合适的。 • 2) 伪F统计量(列标题为PSF)用于评价分为NCL个类的聚类效果。伪F值越大表示这些观测样品可显著地分为NCL个类。本例中伪F最大和次大依次为NCL = 2和5(局部),说明根据伪F准则分为两个类、五个类是较合适的。
4) 伪t2统计量用以评价此步合并类的效果。由该统计量的定义知伪t2值大表明上一次合并的两个类是很分开的,也就是上一次聚类的效果是好的。本例中伪t2最大和次大分别为NCL = 1和2,说明根据伪t2准则分为两个类或三个类是较合适的。 • 由此看出:R2准则支持分为两类和三类;伪F统计量支持分为两类和五类;伪t2统计量支持分为两类和三类。综合分析认为,用Ward法10个地区分为两类或三类较合适。
使用如下代码画出谱系图(如图所示): • proc tree data = otree horizontal; • ID Group; • run; • 从图中可见,分为两类的结果为:G1 = {上海,浙江},G2 = {天津,江苏,福建,广东,山东,河北,辽宁,广西}。 • 分为三类的结果为:G1 = {上海,浙江},G2 = {天津,江苏,福建,广东,山东},G3 = {河北,辽宁,广西}。
相仿地,可以使用类平均法、中间距离法、可变类平均法等方法。不同的聚类方法得到的聚类结果或多或少会有些差别,在实际应用中,应综合各种计算结果,提出合适的分类个数。相仿地,可以使用类平均法、中间距离法、可变类平均法等方法。不同的聚类方法得到的聚类结果或多或少会有些差别,在实际应用中,应综合各种计算结果,提出合适的分类个数。
8.1.4 用VARCLUS过程进行变量聚类 • 1. VARCLUS过程 • 常用的VARCLUS语句格式为: • PROC VARCLUS <选项列表>; • VAR <变量列表>; • RUN; • 其中: • 1) PROC VARCLUS语句为调用VARCLUS过程的开始,其常用选项及功能见表8-5。 • 2) VAR语句指定要分类的变量,如省略VAR语句,则使用没有在其他语句中列出的所有数值型变量。
2. VARCLUS过程变量聚类的步骤 • 如果没有为VARCLUS过程提供初始分类的情况,VARCLUS过程开始把所有变量看成一个类,然后它重复以下步骤: • 1) 首先挑选一个将被分裂的类。通常这个被选中的类的类分量所解释的方差百分比最小(选项PRECENT=)或者同第二主成分有关的特征值为最大(选项MAXETGH=)。 • 2) 把选中的类分裂成两个类。首先计算前两个主成分,再进行斜交旋转,并把每个变量分配到旋转分量对应的类里,分配的原则是使变量与这个主成分的相关系数为最大。
3) 变量重新归类。通过多次反复循环,变量被重新分配到这些类里,使得由这些类分量所解释的方差为最大。 • 当每一类满足用户规定的准则时,VARCLUS过程停止。所谓准则,或是每个类分量所解释的方差的百分比,或是每一类的第二个特征值达到预设定的标准为止。如果没有规定准则,则当每个类只有一个特征值大于1时,VARCLUS过程停止。
3. 应用实例 • 【例8-2】为研究人脑老化的严重程度,有人测定了不同年龄的60名正常男性10项有关指标的数据,见表8-6。各变量的含义如下:AGE为年龄、TJ为图片记忆、SG为数字广度记忆、TS为图形顺序记忆、XX为心算位数、XS为心算时间、CK为规定时间内穿孔数、BJ为步距、JJ为步行时双下肢夹角、BS步速。 • 假定上述数据已经保存在逻辑库Mylib.rnlh中,试对这些指标作变量聚类分析。
(1) SAS程序 • 输入如下程序: • OPTIONS PS=500; • /*要求输出的结果中每页包括500行内容,可避免不必要的SAS标题反复出现。*/ • PROC VARCLUS data = Mylib.rnlh; • VAR age tj sg xx xs ts ck bj jj bs; • RUN; • 说明:过程语句中没有任何选择项,默认的聚类方法为主成分聚类法。过程步最终会聚成多少类,将由默认的临界值来决定,即当每个类只有一个特征根大于1时,VARCLUS过程停止。
(2) 结果分析 • 1) 第1步:如图8-4所示。这是用分解法思想进行斜交主成分聚类的第1步,把全部10个变量聚成一类,能解释的方差为4.146566,占总方差10的41.47%,第2特征值为1.4695,并预告这一类将被分裂。
2) 第2步将1类分裂成2类,分别含3个和7个变量,图8-5给出聚类概要。 • 图中表明各类中的Variation Explained(解释方差,即第一特征值)、Proportion Explained(解释方差占本类总方差的百分比)、Second Eigenvalue(类中的第2特征值)等。此时能解释的方差为5.403654,占总方差10的54.04%。
图8-6给出相关系数的平方。 • 其中第3列R-Squared With Own Cluster是指每个变量与所属类分量之间相关系数的平方R2,如:变量BJ在第1类中,它与第1类分量(相当于主成分分析中的第1主成分)之间的R2是0.8166,同理可理解该列中的其他相关系数的含义;
第4列R-squared with Next Closest是指每个变量与相邻类的类分量之间的相关系数的平方R2,如:BJ与第2类分量之间的相关系数平方R2为0.2121,该值越小,说明分类越合理。 • 第5列R-squared with 1-R**2 Ratio是由同一横行的数据求得: • 如:(1 – 0.8166)/(1 – 0.2121) = 0.2327,此值越小,表明分类越合理。从此列可看出,很多比值较大,说明这10个变量分成2类是不太合适的。
图8-7给出从标准化变量预测类分量的标准回归系数。图8-7给出从标准化变量预测类分量的标准回归系数。 • 若设C1、C2分别为第1和第2类分量,则有: • C1 = 0.356608 BJ + 0.377719 JJ – 0.353237 BS • C2 = – 0.281106 AGE + 0.278996 TJ + 0.239620 SG – 0.120883 XX + 0.1567777XS + 165498TS + 0.260054BS
图8-8给出类结构。 • 类结构相当于因子分析中的因子模型,即每个标准化变量可以表示成全部类分量的线性组合。如:AGE = – 0 .574313C1 – 0.806650C2。 • 类内相关(图8-9)就是类分量之间的相关系数阵。 • 这里预告第2类将被分裂。
3) 第3步。 • 首先给出将2类分裂成3类时的聚类概要。3个类分别含3个、4个和3个变量,此时能解释的方差为6.392112,占总方差10的63.92%,如图8-10所示。 • 接着给出各变量与类间的相关系数平方(图8-11)
标准回归系数(上图)以及类分量之间的相关系数阵(下图)。标准回归系数(上图)以及类分量之间的相关系数阵(下图)。 • 此时已达到默认的停止分裂的临界值(即每个类中只有一个特征值大于1),停止分裂。
最后,给出整个聚类过程的汇总信息(图8-14)。最后,给出整个聚类过程的汇总信息(图8-14)。 • ① ② ③ ④ ⑤ ⑥ • 第①列表示分成1类、2类或3类时分别能解释的总方差量; • 第②列表示分成1类、2类或3类时分别能解释的方差占全部10个变量的总方差的百分比; • 第③列表示分成1类、2类或3类时由1个类成分能解释的方差占全部10个变量的总方差的最小百分比 • 第④列为各类中最大的第2特征值;
第⑤列为各类中1个变量与其所在类的类分量的最小相关系数的平方R2;第⑤列为各类中1个变量与其所在类的类分量的最小相关系数的平方R2; • 第⑥列为各类中(1-R2)own/(1-R2)next的最大比值。参见前面输出结果及其解释。 • 说明:如果设定分类的个数,或是设定其他停止分裂的准则,则每次分裂按第2特征值最大选择分裂的类。
(3) 结论 • 结合专业知识发现:第1类中含BJ(步距)、JJ(步行时双下肢夹角)、BS(步速)这三个与走步有关的变量;第2类中含TJ(图片记忆)、XX(心算位数)、AGE(年龄)、CK(穿孔)这4个与视力、记忆和协调能力有关的变量;第3类中含SG(数字广度记忆)、XS(心算时间)、TS(图形顺序记忆)这三个与记忆、计算有关的变量。 • 分类的结果将有助于研究者对影响人脑老化本质的认识,为进一步从事这方面的研究提供了一些线索。 • 说明:对于一批给定的数据,究竟应聚成几类合适,没有统一的规则。可先将数据聚成类,然后结合专业知识和各类能解释总方差的百分比来权衡。
8.2 判别分析 • 8.2.1 判别分析的基本概念 • 8.2.2 SAS中作判别分析的过程 • 8.2.3 分析实例
8.2.1 判别分析的基本概念 • 1. 距离判别法 • 距离判别的基本思想是:样品和哪个总体的距离最近,就判断它属于哪个总体。 • (1) 两总体情况 • 设有两个总体G1和G2,若定义样品x到G1和G2的距离分别为d2(x,G1)和d2(x,G2),则距离判别的判别规则是: • 即未知所属总体的样品x离哪个总体较近,就判x属于哪个总体。