490 likes | 845 Views
第八章 . 判别和聚类分析. 第八章 判别和聚类分析 . 第一节 判别分析 第二节 聚类分析. 第一节 判别分析. 判别分析 : 根据已掌握的一批分类明确的样品,建立一个判别函数,使得用此判别函数进行判别时错判事例最少,进而能用此判别函数对给定的新样品判别它来自哪个总体。 Bayes 判别分析 ( 基于 Mahalanobis 距离 ) Fisher 线性函数判别方法. 距离判别分析. Mahalanobis 距离 ( 统计距离 ). Euclid Vs Mahalanobis. Euclid: E1=15<E2=23;
E N D
第八章 判别和聚类分析
第八章 判别和聚类分析 • 第一节 判别分析 • 第二节 聚类分析
第一节 判别分析 • 判别分析: 根据已掌握的一批分类明确的样品,建立一个判别函数,使得用此判别函数进行判别时错判事例最少,进而能用此判别函数对给定的新样品判别它来自哪个总体。 • Bayes判别分析(基于Mahalanobis距离) • Fisher线性函数判别方法
距离判别分析 • Mahalanobis距离(统计距离)
Euclid Vs Mahalanobis Euclid: E1=15<E2=23; Mahal: M1=15/5>M2=23/9; 条件概率: P1=0.005<P2=0.015 1 2 Mahalanobis距离更符合条件概率
理论基础: 贝叶斯公式 • 设有k个组 ,每一组的先验概率pi已知,且在x处的组Gi密度fi(x)可以估计。样品属于组Gi的后验概率为(Bayes公式): • 设每组内样品为多维正态分布,那么
Bayes判别 • 后验估计 • 广义平方距离 • 判别准则:(D与d稍有不同) 判x属于Gk, 若p (Gk|x)最大(等价于D2k(x)最小)
协方差相同:线性判别函数 • 设有两个协方差相同的正态总体,且先验概率相等, • 线性判别函数 • 判别准则: 若 ,则D1D2, 判定y属于G1. • 多类线性判别函数 • 判别规则:判给线性判别函数值最大的类。 • 注:这里用pooled covariance 计算
协方差不同:二次判别函数 • Zi(x)=-0.5 D2i(x) • 判别准则: 若Zk(y)最大,则判定y属于Gk. • 当各组方差相等,先验概率相等, 退化为线性判别函数
Fisher判别函数 u-均值, V-方差 • 求a, 使得 • 得到 • 判别函数为: • 样本Fisher判别函数 • 本质上: Fisher判别函数是一个典型相关函数,将原始指标(高维)转化到典型相关指标(低维) 书上有错
证明: 考虑k-二次型 书上证明有错 • 那么判别式0,即 • 当且仅当 达到最大值
应注意的几个问题 • 判别分析方法首先根据已知所属组的样本给出判别函数,并制定判别规则,然后再判断每一个新样品应属于哪一组。 • 从马氏距离的角度来看 统计量是很直观的。这个距离越小,越倾向于接受假设 ;反之,这个距离越大,就越倾向于拒绝 。 • 判别分析中各种误判的后果看作是相同的,而在假设检验中,犯两类错误的后果一般是不同的,通常将犯第一类错误的后果看得更严重些。
SAS判别分析过程 Discrim proc discrim<选项列表> ; class 变量 ; by 变量表 ; freq 变量 ; id 变量 ; priors 概率表 ; testclass 变量 ; testfreq 变量 ; testid 变量 ; var 变量表 ; weight 变量 ; run ;
选项及语句 • method=normal | npar——当指定method= normal时,基于类内服从多元正态分布,并导出线性或二次判别函数;当指定method=npar时,采用非参数方法。 • pool= no| test | yes——pool=test要求对组内协方差阵的齐性的似然比检验进行Bartlett修正,线性判别函数会直接给出,而二次型判别函数需通过建立输出数据集方式获得。 • Outstat=数据集名——指定输出数据集名 • testdata=数据集名——指定欲分类观测的一般SAS数据集 • testout=数据集名——生成一个输出SAS数据集。 • listerr表示要求仅仅输出由后验概率产生错误分类的那些样品点的有关信息 • crosslisterr表示要求以交叉表的形式输出实际类别与分类结果之间一致和不一致的有关信息。 • priors语句——指定先验概率
SAS典型Fisher判别分析 candisc proc candisc<选项列表>; class 变量; by 变量表; freq 变量; var 变量表; weight 变量; run;
candisc选项 • out=数据集名——生成一个包含原始数据和典型变量得分的SAS数据集。 • ncan=——指定将被计算的典型变量的个数。
实例分析 • Fisher鸢[yuān]尾花(Iris)数据 • 修改后的程序chap8_01B • 基本用法 • 判别新数据集 • 较多选项 • 典型(Fisher)判别chap8_01_4
修改后的程序chap8_01B proc discrim data=iris listerr;/*精简方法*/ class species; var petallen petalwid sepalwid sepallen; run; data newiris;/*测试新数据*/ input sepallen sepalwid petallen petalwid @@; cards; 56 30 41 13 51 35 14 23 67 25 18 15 run; proc discrim data=iris pool=test outstat=plotiris testdata=newiris testout=plotp; class species; var petallen petalwid sepalwid sepallen; proc print data=plotp;/*判别结论新数据*/ proc print data=plotiris;/*输出数据包含二次判别函数*/ run;
第二节 聚类分析 • “物以类聚” • 判别分析中必须事先知道各种判别的类型和数目,并且要有一批来自各判别类型的样本,才能建立判别函数来对未知属性的样本进行判别和归类。 • 聚类分析把分类对象按一定规则分成组或类,这些组或类不是事先给定的而是根据数据特征而定的。若对一批样品划分的类型和分类的数目事先并不知道,对数据的分类就需借助聚类分析方法来解决。
两类聚类问题 • 对样品的聚类: 统计指标是类与类之间的距离,它是把每一个样品看成高维空间中的一个点,类与类之间用某种原则规定它们的距离,将距离近的点聚合成一类,距离远的点聚合成另一类。 • 对变量的聚类: 统计指标是变量间相似系数,根据这个统计指标将比较相似的变量归为一类,而把不怎么相似的变量归为另一类。 在SAS数据集中,一个样品就是一行,一个变量就是一列。
样品间的距离 • 设有n组样品,每组样品有m个变量,第i样品第k变量数据为xik, • Euclid距离: • Minkowski距离: • Mahalanobis距离: S为样品的协方差矩阵
类间的距离 • 令Gp和Gq中分别有p和q个样品,它们的重心分别记为 和 。 • 最短距离: 不对类的形状加以限制,适合不规则类 • 最长距离: 严重地倾向于产生直径粗略相等的类 • 重心距离: 在处理异常值上比其他方法更稳健 • 类平均距离: 趋向于合并具有较小偏差的类
Ward最小方差法 (Ward离差平方和 ) • 当 时,Dw=0,且 • 每次合并类时,总是选择这样两个p类和q类,使它们合并成类后的Dw值最小 • Ward最小方差法一般是在多元正态混合型、等球形协方差、等抽样概率假设下合并类。
非参数方法: 密度估计法 • k最近邻估计法: rk(x)~球心x到第k个最近点的球半径, 密度估计函数f(x)是k-球内的点数除以球体积. • 均匀核估计法: r为球核半径 • Wong混合法
聚类方法比较 • 综合特性最好的聚类方法为类平均法或Ward最小方差法,而最差的则为最短距离法。 • Ward最小方差法倾向于寻找观察数相同的类。 • 类平均法偏向寻找等方差的类。 • 拉长的或无规则的类使用最短距离法比其他方法好。 • 非参数问题的聚类一般用密度估计法。
类的统计量 • 均方根标准差 v为观察样品的变量维数,p为类中的观察数目。 • R2统计量 • 其中 为各类的直径求和,TSS为所有观察的总离差平方和。 • R2统计量越接近1,表示类内离差平方和在总离差平方和中所占的比例越小,说明了这个类越分开,故聚类效果越好。 • 类的合并总是使R2值变小,如果这种变小是均匀的,合并是应该的,但当某次合并使值减少很多,这次合并就不应该 .
根据统计量确定分类个数 • 半偏R2统计量=上次合并后R2值-本次合并后R2值 (谷底好) • 立方聚类准则CCC(Cubic Clustering Criterion): CCC大表示本次分类显著。 (峰顶好) • 伪F统计量: 伪F值大表示对应分类显著。 (峰顶好) • 伪t2统计量: 伪t2值大表示本次分类显著。(谷底好) • 综合分析: CCC统计量和伪F统计量的局部峰值所对应的聚类数,与这个聚类数伪t2统计量的一个较小值和下一个聚类数的一个较大伪t2统计量相吻合。
样品聚类法1:系统(递阶)聚类法 • 系统聚类法(Hierarchical clustering method)是目前使用最多的一种方法。 • 基本思想是首先将n个样品看成n类,然后规定样品之间的距离和类与类之间的距离。 • 将距离最近的两类合并为一个新类,再计算新类和其他类之间的距离,从中找出最近的两类合并,继续下去,最后所有的样品全在一类。将上述并类过程画成聚类图,便可以决定分多少类,每类各有什么样品。
样品聚类法2:动态(快速)聚类法 K-means cluster ①选择若干个观察作为“凝聚点”或称类的中心点,作为这些类均值的第一次猜测值; ②通过可选择地分配,把每一个观察分配到与这些“凝聚点”中最近距离的类里来形成临时类。每次对一个观察进行分类,同时对加入新观察的“凝聚点”更新为这一类目前的均值; ③重复步骤②直到所有观察分配完成之后,这些类的“凝聚点”用临时类的均值替代。该步可以一直进行到类中的“凝聚点”的改变很小时停止; ④最终的分类由分配每一个观察到最近的“凝聚点”而形成。
Proc Cluster系统聚类(样品) proc cluster <选项列表>; var 变量表; id 变量; freq 变量; copy 变量表; rmsstd 变量; by 变量表; run;
Proc Fastclus快速聚类(样品) proc fastclus <选项列表>; var 变量表; id 变量; freq 变量; weight 变量; by 变量表; run;
Proc Tree聚类树型输出 proc tree <选项列表>; name 变量; parent 变量 ; height 变量; id 变量; copy 变量表; freq 变量; by 变量表; run;
实例分析 • 74个国家(地区)出生率和死亡率数据聚类分析 • Chap8_02_2B(类平均距离,系统聚类法) PROCCLUSTER DATA=VITAL OUT=TREE method=average ccc pseudo; VAR BIRTH DEATH; copy country; run; PROCTREE DATA=TREE ncl=8 OUT=OUT; COPY country BIRTH DEATH; run; procprint data=out; id country; run; PROCGPLOT data=out; PLOT DEATH*BIRTH=CLUSTER; RUN;
快速聚类 PROCFASTCLUS DATA=VITAL OUT=fastTREE maxclusters=8; VAR BIRTH DEATH; procprint data=fastTREE; id country; RUN; PROCGPLOT data=fastTREE; PLOT DEATH*BIRTH=CLUSTER; RUN;
宏的使用 %macro analyze(mm,nn); PROC CLUSTER DATA=VITAL OUT=TREE method=&mm ccc pseudo; VAR BIRTH DEATH; copy country; PROC TREE DATA=TREE ncl=&nn OUT=OUT; COPY country BIRTH DEATH; proc print data=out; id country; PROC PLOT data=out FORMCHAR='|-----|--'; PLOT DEATH*BIRTH=CLUSTER; TITLE "PLOT OF &NN CLUSTERS FROM METHOD=&MM"; RUN; %mend; %analyze(average,8) %analyze(average,3) %analyze(ward,3) %analyze(centroid,3) %analyze(density,3)
变量间的相似系数 • 设有n组样品,每组样品有m个变量,第i样品第k变量数据为xik, • 夹角余弦 • 相关系数 表示第个指标的平均值。
变量聚类方法1: 转化为样品聚类 • 将观测与变量位置调换 • 定义距离 dij=1-|Cij|或dij=1-|rij| • 利用样品聚类方法对变量聚类
变量聚类方法2: 方差聚类法 • 基于相关矩阵,通过计算每类第一主成分或重心成分的方差最大化而确定. 同每一类有联系的是该类中这些变量的线性组合。 • 开始把所有变量看成一个类,重复 • 选要分裂的类: 类分量(第一主成分)所解释的方差百分比最小,或者同第二主成分有关的特征值为最大; • 把选中的类分裂成两个类。先计算出开头两个主成分,再进行斜交旋转,并把每个变量分配到旋转分量对应的类里,原则为使变量与这个主成分的相关系数最大; • 通过迭代,变量被重新分配到这些类里,使得由这些类分量所解释的方差最大; • 当每一类第二特征值小于1,则过程停止。
Proc varclus 方差聚类(变量) proc varclus <选项列表>; var 变量表; partial 变量表; seed 变量表; freq 变量; weight 变量; by 变量表; run;
例 • 对第七章作业第1题社会经济情况的6项指标作聚类分析。 data ex7_1; infile "d:\ex7_1.txt" delimiter=";"; input Num Pop Edu Load Science GDP Room; run; procvarclus data=ex7_1 outtree=out; Var Pop Edu Load Science GDP Room; proctree data=out horizontal; run;
主分量(默认)聚类结果 • 一个类时,第二特征值大于1,需要分; • 2个类时,第二特征值小于1,停止分. • Room单独一类,其他5变量1类. • Standardized Scoring Coefficients是两个类分量标准化系数. • Cluster Structure表明类分量与各变量相关系数. 第一类分量与Pop Edu Load 正相关很大, 与Science GDP负相关明显,与 Room不相关;第二类分量只与Room.相关.