聚类分析:使用过程CLUSTER实现层次法(聚多少类的评判)

原文出处:http://www.sohu.com/a/138631880_278472

使用过程CLUSTER实现层次法

SAS共提供11种层次法,这些方法可以通过指定PROC CLUSTER中的选项来实现。过程CLUSTER的一般形式为:

其中:

  • DATA = 指定输入数据集,默认值为最后一次使用过的数据。

  • METHOD= 用来指定做层次分析的具体方法,可供选择的方法共有11种,相应的SAS关键字和对应方法见表13.2。该语句常见的选项有:“CCC”用于输出CCC(Cubic Clustering Criterion)值,该值也称三次聚类准则或者立方聚类条件;“PSEUDO” ”用于输出伪F统计量与伪T统计量;“RSQUARE ”用于输出统计量R方与半偏R方。

  • VAR 是用户指定用来做聚类分析的数值变量名。

  • RMSSTD指定了方根标准方差变量。

表13.2 PROC CLUSTER语句的选项

在PROC CLUSTER中,使用不同的方法其聚类结果也会不一样。下面简要地总结上述方法的优缺点。

一般情况下,在蒙特卡罗随机模拟方法(所谓的蒙特卡罗)中,分类效果比较好的是“可变法”,分类效果比较差的是“MCQUITTY法”和“最短距离法”。对离群点(Outlier,指的是少数几个点距离当前所有的群都比较远)比较“敏感”的方法是“离差平方和法”和“最长距离法”,对离群点比较不敏感的是“类平均法”、“重心法”。此外,上述11种方法中,除了“最大似然法”外,其他方法均支持距离(数据集)作为过程步的输入。

例13.3:数据集ex.nutrition(如图13.8所示),包含了各种食物以及它们的营养成分,其中共包含5个变量:Food(食物)、percent_water(含水的百分比)、Protein_g(蛋白质含量)、Saturate_Fat_g(饱和脂肪含量)以及Magnesium_mg(镁含量)。现在要使用层次法对数据集ex.nutrition进行聚类分析。

图13.8 数据集ex.nutrition

示例代码如下:

下面来解释PROC CLUSTER生成的各个图表的含义。首先,PROC CLUSTER给出了类平均聚类分析图(如图13.9所示),该图包含特征值,以及累计解释变异的比例。

图13.9 类平均聚类分析图

接下来PROC CLUSTER展示的是聚类历史图(这里只截取最后15个类的合并过程),如图13.10所示。

图13.10 聚类历史图

其中,第1列显示当前的聚类数,在最开始所有的观测都各自为一类,到了最后一步,所有的观测都会归为一类。第2列和第3列表示的是当前合并的聚类。第4列频数指的是当前类包含的观测数。第5~6列为半偏R方与R方,这两个统计量是用来帮助确定分类个数的:R方越大表示类之间区分得越开,聚类效果越好;另一方面,不能以R方的大小简单地确定分类个数,而应考察其值的变化,即上一步与该步R方值的差异,这就是半偏R方,若半偏R方较大,说明本次并类的效果不好,应当考虑聚类到上一步停止。第7列为R方期望的近似值。第8~10列为类数判定标准:

  • 第8列显示的是CCC值,CCC的峰值表示建议聚类数。

  • 第9列显示的是伪F统计量,该统计量描述的是在当前情况下(按当前类数聚类),类与类之间的分离程度。因此,该值越大分类效果越好。

  • 第10列为伪t方,该统计量衡量的是当前合并的两个类之间的分离程度,该值越小说明当前合并的两个类越合理,反之,则说明该步的聚类效果不好,应当考虑聚类到上一步是否就应该停止。

上述3个统计量中,CCC值由代码中的关键字“ccc”生成,后两个统计量由代码中的关键字“PSEUDO”生成,仅对使用AVERAGE、CENTRIOD、WARD方法的坐标数据有效。此外,上述三个统计量建议的类数可能会不一致,在这种情况下,建议综合上述三种统计量并辅助其他统计量,如R方以及半偏R方进行考虑。

第11列为标准化的均方根距离(Normalized RMS Distance),该值由类间距离除以观测间距离均方根得到,可以用来帮助判断聚类的合适数量,当某一步的标准化均方根距离增加的幅度最大时,此步骤前的聚类数最合适。

图13.11为聚类数准则图,该图的横坐标表示类数,共包含3个子图,分别如下:

  • 三次聚类准则图,从该图可以看出,类数为3的时候CCC值达到峰值。

  • 伪F图,从该图中可以看出,当类数为3时,该统计量最大(类与类之间的区分效果最好)。

  • 伪T方图,当类数为3时,该值最小,当将类别数合并为2时,该值有较大上升,说明合并不合理。因此,可以考虑在类数为3时,停止合并。

综合上面的分析,可以判断出PROC CLUSTER的建议类数为3。

图13.11根据CCC值、伪F值以及伪T方值分别生成的聚类数准则图

代码中的关键字“OUTTREE= WORK.TREE”生成了用于生成树形图的数据集work.tree。PROC CLUSTER自动调用PROC TREE生成树形图,该图如图13.12所示(有关树形图PROC TREE的语法见下文)。

图13.12 PROC TREE生成的树形图

从该树形图中可以看出每一类具体包含的观测,例如,Pinto Beans cooked from dry 和Blackeyed peas frozen drained组成了一类。

至此,即完成了对整个代码输出结果的解释。

现在来接着了解过程CLUSTER,事实上,它的输入不仅可以是原始数据集,也可以是由其他方法计算得出的距离数据集。例如,在例13.1中,我们利用PROC DISTANCE计算出了观测间的距离,下面的例子完成对上述10支股票的聚类分析,并将结果以树形图的形式展示出来。从上面的例子可以看到,如果过程CLUSTER包含选项“OUTTREE=”,系统就会自动调用过程TREE生成树形图。除了系统自动调用外,也可以利用过程CLUSTER的输出,直接调用PROC TREE。直接调用PROC TREE允许我们更加灵活地控制树形输出,例如,通过PROC TREE,可以指定横坐标对应的变量与变量的取值范围、间隔长度等。

PROC TREE的一般形式如下:

其中,

  • PROC TREE语句中常见的选项有:“DATA=”用于指定输入数据集、“HAXIS=”用于自定义横坐标轴(可以结合系统选项“AXIS”使用,具体见下例)、“HORIZONTAL”用于指定生成水平树。

  • NAME语句用于指定数据集中树的节点的变量,如果该语句缺失,PROC TREE会使用输入数据集中的“_NAME_”变量。

  • HEIGHT语句用于指定树形图中每个节点的高度,如果该语句缺失,PROC TREE会使用输入数据集中的“_HEIGHT”或者“_NCL_”。

  • COPY语句用于指定从输入数据集拷贝到输出数据集的变量。

  • ID语句用于指定输出数据集中作为ID的变量。

例13.9:将例13.1中的计算结果,即数据集work.distdcorr作为PROC CLUSTERS的输入进行计算,然后将CLUSTER输入的树形数据集作为过程TREE的输入,最终结果以树形图的形式展示。

示例代码如下:

代码中有关PROC CLUSTER的输出结果包含两部分:一部分是“聚类历史”图(如图13.13所示),另一部分是“聚类分析”树形图(如图13.14所示)。

图13.13对数据集work.distdcorr进行聚类分析过程中得到的聚类历史图

图13.14 PROC CLUSTER输出的树形图

生成的数据集work.tree如图13.15所示。

图13.15 数据集work.tree

上述代码中的全局语句“axis1 order=(0 to 1 by 0.1);”定义了一条坐标轴。在PROC TREE中,选项“haxis=axis1”使用该坐标轴,关键字“horizontal”指定了输出水平树形图。语句“height _rsq_;”指定了输入数据集中的变量“_rsq_”作为横轴(该变量的标签为R方),ID为变量“stock”。PROC TREE输出的树形图如图13.16所示。

图13.16 PROC TREE输出的树形图

从图13.16可以看出,如果要把股票分成3类,那么第一类为S1和S3,第二类为S2和S7,其余的为第三类。

结束语

聚类分析在很多领域都有应用,聚类分析也可以作为其他算法的预处理:先对数据集进行聚类,然后对每一类进行分析。聚类分析的一个最重要的特征就是在类分前通常都不知道应该将数据分为多少个类别才合适。因此,在实际的处理过程中,可以尝试不同类别数的效果,也可以采用不同的方法尝试进行分析。不管采用哪种方法,都应该结合分析问题的背景具体分析。在聚类分析前,也可以尝试对待分析的数据集进行数据探索,例如当变量个数较少时可以考虑对数据集作图(离散图),这样可以对要分析的数据集有更深刻的了解,以便采用合适方法分析。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值