第六章 聚类分析
第五章中的判别分析是我们已经知道了 k 个类,然后让你判别给定的样本属于哪一类。而现在我们只有一堆的样本,需要做的是将这些样本分为 k 类(这里的 k 并不已知),使得同类样本都很相似,异类样本都很有差异。
先提一个之后并不会解决的问题:
如何确定 k ?即原先样本就是分为 k 类,你能否通过某种方法来得到 k 的相合估计?
现在判别时间序列数据变点的方法已经比较完善了,也许可以将聚类问题转化为判别变点的问题。
那么如何对样本进行聚类呢?很直观的想法是:如果两个样本之间的“距离”比较近,或者“相似度”比较高,那么就将其归并为同一类。
6.1 聚类分析方法的直观介绍
本章将涉及几个常用的聚类方法,首先对其基本内容作简要介绍。
这两个是重点介绍的。
系统聚类:首先单个样本成 1 类(共 n 类),每次都将类与类之间距离最短的合并。
调优法(动态聚类法):首先选取 k 个点,其两两间的距离比较大,对于剩下的 n-k 个点,逐个判断它与选定的 k 个点中的哪一个距离最小,将其归并到那一类中。并且在分类的过程中,又可以修正类中的均值和方差。
下面的会简单提及,但不会深入。
- 最优分割法(有序样品聚类法);
- 模糊聚类法:利用模糊集理论来处理分类问题;
- 图论聚类法:利用图论中最小支撑树的概念来处理分类问题;
- 聚类预报法。
聚类分析按照对象的不同可以分为 R 型(随机变量)和 Q 型(样品)
R 型聚类分析目的:
- 相关性:探究随机变量之间的相关程度
- 分类:对随机变量分类
- 降维:根据变量的相关性,选取其中具有代表性的变量
Q 型聚类分析目的:对样品进行分类
6.2 距离与相关系数(枯燥但必要)
这一节主要就是一些“距离”和“相关系数”的定义,可能会略显枯燥。
变量的类型有两种,定量和定性。对这两种变量定义的“距离”和“相关系数”是不一样的。
(一)数据变换
定量数据在聚类分析前需要进行数据变换
(1)中心化
数据减去其均值,变换后数据均值为 0.
(2)标准化
中心化之后,再除以标准差,变换后标准差为 1 ,数据无量纲。
(3)极差标准化
中心化之后,除以极差,变换后极差为1,且无量纲。
(4)极差正规化变换
数据减去最小值,然后除以极差。变换后的数据在 0 到 1 之间,极差为 1,无量纲。
(5)对数变换
对数据取对数,使指数结构的数据变为线性结构。
(二)样品间距离与相似系数
一个合理的距离应该满足下面三个性质
- 非负性:任意两点距离不会小于 0
- 对称性:i 到 j 的距离和 j 到 i 的距离相同
- 三角不等式:两边之和大于第三边
(1)闵可夫斯基距离
- q = 1 为绝对距离,也称曼哈顿距离,常用于厚尾数据
- q = 2 为欧氏距离
- q 趋于无穷为切比雪夫距离,事实上就是所有分量距离的最大值
欧氏距离是最常用的,但其缺点在于没有考虑量纲的影响,也没有考虑变量之间的相关性。可以做以下的权重变换,以得到“统计距离”。
(2)兰氏距离
兰氏距离是由Lance 和Williams最早提出的.
- 这个量无量纲,克服了闵氏距离与各指标的量纲有关的缺点.
- 对较大的奇异值不敏感,特别适合高度偏倚的数据.
- 但没有考虑到变量间的相关性.
(3)马氏距离
这是距离判别中常用的距离。
可以排除变量之间相关性(除掉协方差阵),并且不受量纲的影响,一般用同各个类的样本来计算各自的协方差阵。但样本协方差要用同一类的数据来估计,但这是我们的目标,恶性循环!
这在统计中经常遇到,可以用迭代的方法处理。首先给定协方差阵的初值,比如合样本协方差阵。然后进行一次分类,再对协方差阵进行修正,如此反复。
(4)斜交空间距离
可以使具有相关性的变量
其中
(5)定性变量的距离和相似系数
将定性变量排成 0-1 向量的形式,然后用向量之间的欧氏距离定义。
直接看例子就懂了:
上面例子中,共有性别、职称、收入三个属性,其中每个属性中分别有 2、4、2种类型。
每个属性中,将所属类型标为 1 ,其他为 0,这样就得到了对应于该个体的 0-1 向量。
距离 = 两个向量差的二范数 = 6
记 m0 为 0-0 匹配个数,m1 为 1-1 匹配个数,m2 为不匹配个数。
上例中 m0 = 2,m1 = 0,m2 = 6.
相似性的几个度量:
- (m0+m1)/p --匹配的占总数的比例
- m1/p -- 1-1 匹配占总数的比例
- m1/(m1+m2) --不考虑 0-0 配对
- 2(m0+m1)/(p+m0+m1) --配对的数目加权
- (m0+m1)/(p+m2)
- 2m1/(2m1+m2) -- 1-1配对加权
- m1/(m1+2m2) --不考虑 0-0 匹配,对不匹配数加权
- m1/m2
(三)变量间的距离与相似系数
变量间的相似系数要求:
- 如果为 ±1,那么变量存在完全线性关系
- 绝对值不大于 1
- 对称性
(1)夹角余弦
(2)相关系数
即将数据标准化后求夹角余弦
(3)变量间的距离
- 利用相似系数:
相似系数越大,距离越小,当为 1 时,距离为 0
- 利用样本协方差阵 S:
- 利用(二)中样本的诸多距离也可
(4)定性变量的相似系数
横的 t1 到 tq 为变量 A 的 q 个可能取值,竖的 r1 到 rp 为变量 B 的 p 个可能取值。
其中 n 为频数。数理统计中的列联表卡方检验的思想为:如果实际频数和假设独立时的理论频数的距离足够小,说明两变量独立。
利用该卡方统计量
可以定义 A 和 B 的相似系数如下图

附注:多维标度问题
聚类分析简单粗暴地将高维的样本通过求“距离”的方式变为 1 维,会破坏数据的原始结构。而多维标度法将高维对象约简到较低维的空间中,能很好地保留数据的原始关系。
6.3 系统聚类
(一)基本思想和步骤
开始提到,系统聚类首先单个样本成 1 类(共 n 类),每次都将类与类之间距离最短的合并。只要把“距离”定义好就可以了。
基本步骤(必考的送分题):
- 数据变换、定义样本间距离、定义类类距离
- 计算 n 个样本的两两距离矩阵
- 每个样本分为 1 类,类间距离即样本间距离(
)
- 按某种类间距离准则,将类间距离最小的两类合并
- 重复上述步骤,不断并类,直到将全部样本合并为 1 类为止
- 画谱系聚类图
- 决定分类个数和各类成员
例 对于 1 2 4.5 6 8,采用欧氏距离 + 最小距离法进行系统聚类
即 a,b 组成的类 A 和 c,d 组成的类 B 间的为 ac、ad、bc、bd中的最小者
第一步的距离矩阵

可以看出,应该将 x1 和 x2 并为 CL4.
类似可以得到后续的距离矩阵



最终的谱系聚类图为

注:竖线对应的横坐标为合并过程的最短距离。
确定分类个数及分类成员:
格式:若分为 i 类,则分为{1,2},{3},{4,5}...(非本例)i = 1 to n
(二)系统聚类分析的方法
除了要定义样本点的距离,还要定义类类间的距离。
(1)最短距离法(SINGLE)
上例中使用的,两类间距离的最小者
递推公式:
(2)最大距离法(COMPLETE)
两类间距离的最大者
递推公式:
上面两个递推公式的使用方法:由12,34,5变为12,345,那么12和345的距离为12和34的距离与12和5的距离的较大或较小者
(3)中间距离法(MEDIAN)
介于最短和最长距离之间,递推公式为
如果 β=-0.25,那么为
(4)重心法(CENTROID)
两类的距离为两类均值的距离。如 1,2 和 4,5 的距离为 1.5 和 4.5 的距离。
递推公式为:
好像也记不住,除了编程方便好像没啥用...按照定义算就好
(5)类平均法(AVERAGE)
两类的距离为两类中距离平方和再平均。
如 1,2 和 3,4 的距离为 (1-2)^2+(1-3)^2+(2-3)^2+(2-4)^2 再除以4
递推公式为:
这个公式手算也不大好用的说。
用递推公式:12,34,5 变为 12,345,则 12 和 345 的距离为 12 和 34 的距离与 12 和 5 的距离加权,前者比后者为 2 比 1
(6)可变类平均法(FLEXIBLE-BETA)
类平均法的递推公式中没有考虑 p,q 距离,即例子中的 34 与 5 的距离
递推公式为:
- β 可取为 -0.25,一般都是负值。
- β 为 0 ,就是类平均法
- np = nq 为可变法
(7)可变法及McQuitty相似分析法(MCQ)
递推公式为
当 β 为 0 时,
称为McQuitty相似分析法
(8)离差平方和法(WARD)
- 将 n 个样品分为 n 类,此时每类的离差平方和为 0,
- 并类原则为使得总离差平方和增加的最少
类间的距离平方定义为增加的离差平方和:
经过整理可得
如果用的是欧氏距离,那么
递推公式为
应用广泛,效果较好,但要求“欧氏距离”
其他系统聚类方法:
- 最大似然谱系聚类法(EML)
- 密度估计法(DEN)
- 两阶段密度估计法(TWO)
(三)系统聚类方法的统一
诸多系统聚类方法的递推公式可以统一为
各方法的参数如下

可用于编程!
6.4 系统聚类的性质及类的确定
(一)简单性质
(1)单调性(了解)
定义:设第 k 次并类的距离为 Dk,如果 Dk 关于 k 单调上升,则称该系统聚类方法有单调性
除了重心法和中间距离法,其余的系统聚类方法在归并的过程中,类类距离矩阵的最小值都是不断变大的。
(2)空间的浓缩与扩张(了解)
最短距离法的并类距离比最长距离法来的小,称最长距离法比最短距离法扩张,或最短距离法比最长距离法浓缩。
- 类平均法比最短距离法扩张,比最长距离法浓缩
- 类平均法比重心法扩张,比离差平方和法浓缩
- 太浓缩的方法不太灵敏,太扩张的方法容易失真
- 类平均法比较适中,有具有单调性,应用较广泛
(二)类的定义及特征
(1)类的几个定义(了解)
定义1:给定阈值 T > 0 如果集合中任意两个元素的距离都小于 T ,称该集合关于阈值 T 构成一个类。
定义2:对每个 i ,它到 j ≠ i 的点的距离平均值小于 T.
定义3:给定 T,H > 0,集合中任意两元素距离小于 H,且对于n(n-1)/2个点对,其距离均值小于 T.
定义4:集合中任意元素 i ,都有元素 j ,使得 i 到 j 的距离小于等于 T
定义5:将 G 任意分为 G1,G2,都有 G1 到 G2 的距离小于等于 T.
(2)类的特征
比如类 G 里有 n 个样本点,通过这 n 个样本的数字特征来表示类的特征。
- 均值
- 离差阵
- 协方差阵
类的直径:离差阵的迹,或两两距离中的最大者.
(三)确定类的个数(重点)
(1)适当的阈值
对于之前的谱系聚类图,如果选取阈值为 2,那么分为 12 和 345 两类

(2)根据数据的散点直观确定
如果指标只有两个,那么可以绘制平面散点
如果指标三个,可绘制三维散点图,并通过旋转三维坐标轴来判断应该分为几类
指标超过三个,可以用主成分分析的方法,选取 2 - 3 个综合变量
R中可以绘制矩阵的热图
data< -iris[,—5]
dist.e <-dist( data, method = ”euclidean”)
heatmap(as.matri.z( dist.e),labRow= F, labCol = F')

(3)根据统计量确定
R-square 统计量:
总离差平方和可以分为组内离差+组间离差
令
但是 k 越大,R-square 越大,就n个样本分为n类了!所以应该根据其变化来确定,当其增加不明显的时候停止。