Loading...
墨滴

精益修身

2021/05/05  阅读:86  主题:橙心

聚类分析2

Stata之聚类分析

精益修身

An initelligent being cannot treat every object it sees as a unique entity unlike anything else in the universe. It has to put objects in categories so that it may apply its hardwon knowledge about similar objects in the past to the object at hand.

---Pinker 1997

聚类分析是一种探索性的数据分析技术。

1. 聚类分析概述

1.1 聚类 VS 分类

聚类分析和分类分析都属于分类,为避免混淆,分类分析中的分类饺子classification,聚类分析中叫做clustering。

在分类分析中,个体的类别标签是事先确定的。只是对于新观测的标签暂时未知,分类过程旨在根据其自身特征来预测其类别,后续是可以确定预测是否准确,属于有监督的学习(supervised learning)

在聚类分析中,类别的个数及个体标签本身并不存在,只是根据个体特征的相似性形成“合理”的聚集,并无“正确答案”参考,因而属于无监督学习(unsupervised learning)

1.2 聚类分析 VS 相似度

在我们进行聚类分析的时候,首先的一个问题是如何来定义类(cluster)。 一个基本的想法是,我们要保证每一个类里面的数据要尽量的相似,不同类之间要尽量不同。

那么如何来刻画相似呢?在多元统计中,我们习惯用距离来表示数据的“远近”关系。

在统计学中,我们常用的距离定义有:欧氏距离(Euclidean distance)马氏距离(Mahalanobis distance)明考斯基距离(Menkowski metric)堪培拉距离(Canberra metric)。其中马氏距离需要事先知道协方差矩阵,由于我们对聚类的多少并不清楚,所以无法确定协方差矩阵,因此马氏距离效果不佳。

1.3 stata中的距离

  • 连续性数据的相似或相异性的度量

    L2, 欧氏距离(Euclidean)的代号,亦可用L(2)。即参数为2的明考斯基距离。

    L2squared,欧氏平方距离,亦可用Lpower(2)。

    L1,绝对值距离,即参数为1的明考斯基距离。其他别称还有:absolute,cityblock,manhattan,L(1),Lpower(1)。

    Linfinity,最大值距离,即参数为无限(infinite)的明考斯基距离,别名:maximum。

    L(q),参数为q的明考斯基距离。数据有p个指标, 表示观测i的第j个指标。明考斯基距离的公式

    Lpower(#),参数为q的明考斯基q次方距离

    Canberra,堪培拉距离,曼哈顿距离的升级版。堪培拉距离不考虑相关性,假设变量之间独立。向量p到q的坎贝拉距离公式:

    correlation,相关系数相似性度量

    angular,角间隔相似度,别名angle。 在任何一个连续性度量中,计算距离(相异)之前,需要先进行马氏变换(Mahalanobis transformation)。欧氏距离的马氏变换,叫做马氏距离(Mahalanobis distance)。

    • 二值数据相似性的度量

matching, simple matching similarity coefficient

Jaccard, Jaccard binary similarity coefficient

Russell, Russell and Rao similarity coefficient

Hamann, Hamann similarity coefficient

Dice, Dice similarity coefficient

antiDice, anti-Dice similarity coefficient

Sneath, Sneath and Sokal similarity coefficient

Rogers, Rogers and Tanimoto similarity coefficient

Ochiai, Ochiai similarity coefficient

Yule, Yule similarity coefficient

Anderberg, Anderberg similarity coefficient

Kulczynski, Kulczy´nski similarity coefficient

Pearson, Pearson’s  similarity coefficient

Gower2, similarity coefficient with same denominator as Pearson

  • 混合数据相异性的度量

Gower Gower’s dissimilarity coefficient

  • 相似转化为相异的方法

    如果选择的是相似性的度量,需要转化为相异性度量。有两个选项

    :

    :

2. 层次聚类

层次聚类就是系统聚类法(hierarchical clustering),是聚类分析中最为常用的方法之一。 层次聚类的方向(路径)有两个:

  • 凝聚(Agglomerative clustering):由个体开始,逐步将相似的个体连接起来,直到所有的个体合并成一个族群。
  • 分离(Divisive clustering):和凝聚方向相反。

凝聚或者分离的结果就是形成一个系统树图(Dendrogram)。

2.1 层次聚类的方法

  • 连接方法(Linkage method)
    • 简单连接(Single linkage)
    • 完全连接(complete linkage)
    • 平均连接(Average linkage)
    • 质心连接(Centroid method)
  • Ward方法

2.1.1 简单连接法

也叫做最近邻方法(Nearest neighbor method),两个族群的距离由相隔最近的两个个体间的距离来定义。

  • 简单连接法存在"链式"(chaining)问题:倾向于将新的个体纳入旧类,而不是重新聚类。

2.1.2 完全连接法

也叫做最远邻方法(Farthest neighbor method),两个族群的距离由相隔最远的两个个体的距离来定义。

  • 完全连接法的效果一般要比简单连接法更好。

2.1.3 平均连接法

两族群的距离定义为 集合的点与 集合中的点产生的所有 个距离的均值。

2.1.4 质心法

两族群的距离定义为两族群均值的距离。

  • 问题:
    1. 新族群的质点是由原来的族群加权平均得到的,如果两族群样本量差异较大,则新族群会被数量大的族群主导。一种改进的方法是合并后的族群的质点,取原来两个质心的中点:
    1. 质心法会出现倒置(reversal/inversion)现象,即两个族群合并后,下一步合并时的最小距离反而会减小。系统树图中会出现交叉(crossover)现象。这种现象产生的主要原因是新合并后的质心和新的点或类之间的距离会下降。所以质心法不是单调的。

2.1.5 Ward法

也叫做方差平方和增量法(Incremental sum of squares)。其定义距离的思路和连接法不同,它是考虑合并新族群后,方差的平方和会有差异,这个差异就是距离。

可以证明,

所以Ward法和质心法的区别就在于系数 。由于系数的分子是样本量的乘积,所以两个大的族群的距离就会很大,因此Ward法倾向于合并样本量小的族群。

2.2 族群数的选择(层次聚类)

族群数的确定一般需要结合业务目标预先设定。

如果纯粹由数据驱动,一种方法是系统树图中直接在给定的距离水平下切分树图,从而得到族群的划分,另外一种更好地拟合数据的方法是寻找合并组别时的距离变化比较大的节点。

3. 非层次聚类

层次聚类中,一旦个体被分入一个族群,它就不能再被分入到其他族群里。所以层次聚类达到的是局部最优,而不是全局最优。

分割法(Partition)是从整个空间着手的,它能很好的解决层次聚类的这个问题。最常见的分割法是K-均值(k-means)法。

3.1 K-均值法

K-均值法试图寻找 个族群 的划分方式,使得划分后的族群内方差(within group sum of squares, wgss)最小。

是族群 中变量 的均值, 是第 个样本点, 是族群内所有变量的均值。

3.2 问题1:给定K,如何最小化WGSS

  1. 步骤

step1: 每组先确定一种子(cluster seeds)

step2: 按照距离(wgss)远近,根据种子进行分割

step3: 归类完成后,更新种子

step4: 重复步骤2和3,直到不再需要移动(收敛)。

  1. 如何选取种子

由上可知,最后的分类与种子是有很大的关联的。一些较好的选取方法如下:

  • 相互间隔指定最小距离,此时可以随机选择种子。
  • 选择数据及前K个相互间隔超过指定最小距离的个体
  • 选择k个相互距离最远的个体
  • 选择等距网格点(Grid points),这些点可能不属于数据集

不同的方法多次选择进行尝试,如果聚类结果差异很大,收敛速度很慢,也许数据可能不存在天然的族群。

也可以结合层次聚类,在层次聚类之后再进行k均值聚类。

3.3 问题2:如何选取K

观察上述公式,当 时WGSS最小,此时为0。但此时过拟合了。所以, 的取值不是令WGSS最小,而是足够小就可以了。可以结合碎石图来确定。

Stata中,聚类分析并没有碎石图来表示WGSS随着k的增加而变小的碎石图。Stata提供了两种类别选取方法-停止规则(Stopping-rules):

  1. Calinski–Harabasz pseudo-F

这个法则既适用于层次聚类,也适用于k均值聚类。其中, 是组间平方和并叉乘矩阵, 是组内平方和并叉乘矩阵。所以此伪F值表示组间平均平方和和组内平均平方和的比值,这个值越大表示分类越明显,越小表示越不明显。

  1. Duda-Hart Je(2)/je(1) index

这个法则只适用于层次聚类。该指数就是Je(2)和Je(1)的比值,其中Je(1)是准备划分的群体的组内误差平方和,Je(2)是划分为两组后的误差平方和。这个指数还有一个相关联的伪 值。Je(2)/Je(1)指数越大、伪 值越小,表示聚类越好。

4. Stata示例

何晓群《多元统计分析》第三章的例题中的Stata代码如下:

import delimited $training_data/data/hxq/world95.csv, clear
keep if region == "Pacific/Asia"
rename lifeexpf x1
rename lifeexpm x2
rename urban x3
rename literacy x4
rename gdpcap x5
order x1-x5
cluster averagelinkage x1-x5, measure(L2squared) name(L2avlink)  
cluster generate country_type = groups(3), name(L2avlink) 
graph matrix x1 x2 x3 x4 x5,m(i) mlabel(country_type) mlabpos(0)

图1 聚类结果 图1的聚类结果和教材中非常不同,主要原因是教材中对数据进行了标准化。从图1来看,分作3类并不是一个很好的分法。

*计算WGSS
scalar ss2 = 0
forvalues i = 1/5 {
 forvalues j = 1/2{
 preserve
 keep if gp2 == `j'
 su x`i'

 scalar xbar`i'`j' = r(mean)
 describe
 local k = r(N)
 while `k' > 0 {
  scalar xdev`i'
`j'`k' = x`i'[`k'] - xbar`i'`j'
  scalar ss2 = ss2 + xdev`i'`j'`k'*xdev`i'`j'`k'
  local k = `k' - 1 
  }
 restore
 }
}
display ss2
图2 Excel做出来的WGSS碎石图
图2 Excel做出来的WGSS碎石图

通过计算WGSS,在excel中可以画出WGSS碎石图,从碎石图来看,似乎分作三类是比较好合适的。

标准化以后,再对数据进行划分,划分的结果仍旧与教材不同,但似乎Stata的结果更好。并且stata的几种方法(ward,kmeans,average)分类的结果都是一致的。 图3 标准化以后用ward方法划分的树形图

参考文献

  1. 何晓群. 多元统计分析[M]. 4版. 北京:中国人民大学出版社,2015.
  2. 刘婧媛. 中国大学MOOC:多元统计分析[OL]. [2021-5-3]https://www.icourse163.org/course/XMU-1206305809
  3. StataCorp LLC, Sturctural Equation Modeling Reference Manual[M]. A Stata Press Publication: Texas 2019.

精益修身

2021/05/05  阅读:86  主题:橙心

作者介绍

精益修身