Shihanmax's blog

  
 

十四、聚类方法

合集:统计学习方法笔记


聚类的基本概念

距离的重要性

在聚类算法中,距离的定义是非常重要的。

常用的几种距离度量

1. 闵可夫斯基距离(Minkowski Distance)
$$d_{ij} = \left(\sum_{k=1}^{m}|x_{ki}-x_{kj}|^{p}\right)^{\frac{1}{p}}\quad(p\geq 1)$$

  • 当 $p=1$ 时,为曼哈顿距离:$d_{ij}=\sum_{k=1}^{m}|x_{ki}-x_{kj}|$
  • 当 $p=2$ 时,为欧几里得距离:$d_{ij}=\sqrt{\sum_{k=1}^{m}(x_{ki}-x_{kj})^2}$

2. 马氏距离(Mahalanobis Distance)
$$d_{ij}=\sqrt{(x_i-x_j)^T S^{-1}(x_i-x_j)}$$
其中 $S$ 是样本协方差矩阵

3. 曼哈顿距离(Manhattan Distance)
$$d_{ij}=\sum_{k=1}^{m}|x_{ki}-x_{kj}|$$

4. 相关系数(Correlation Coefficient)
$$r_{ij}=\frac{\sum_{k=1}^{m}(x_{ki}-\bar{x}_i)(x_{kj}-\bar{x}_j)}{\sqrt{\sum_{k=1}^{m}(x_{ki}-\bar{x}_i)^2}\sqrt{\sum_{k=1}^{m}(x_{kj}-\bar{x}_j)^{2}}}$$
其中 $\bar{x}_i=\frac{1}{m}\sum_{k=1}^{m}x_{ki}$,$\bar{x}_j=\frac{1}{m}\sum_{k=1}^{m}x_{kj}$

5. 余弦相似度(Cosine Similarity)
$$s_{ij}=\frac{\sum_{k=1}^{m}x_{ki}x_{kj}}{\sqrt{\sum_{k=1}^{m}x_{ki}^{2}}\sqrt{\sum_{k=1}^{m}x_{kj}^{2}}}$$

类的定义和评价形式

类的定义

如果类之间的交集为空,则称硬聚类;否则称软聚类。本章主要关注硬聚类。

类的评价形式

设 $n$ 为样本数,将集合 $X$ 中任意两个样本 $x_i,x_j\in X$,若 $d_{ij}\in T$,则称 $C$ 为一个类(Cluster)。

类间关系的距离有多种评价方式,类内之间的距离包括:
- 最短距离:$D_{st}=\min_{x_i\in C_p,x_j\in C_q}d_{ij}$
- 最长距离:$D_{lg}=\max_{x_i\in C_p,x_j\in C_q}d_{ij}$
- 平均距离:$D_{av}=\frac{1}{n_p n_q}\sum_{x_i\in C_p}\sum_{x_j\in C_q}d_{ij}$
- 中心距离:$D_{ce}=\|\bar{x}_p-\bar{x}_q\|^2$,其中 $\bar{x}_p$ 和 $\bar{x}_q$ 分别是类 $C_p$ 和 $C_q$ 的中心

层次聚类

概念

层次聚类是根据样本间的相似性或距离,构建聚类层次结构的方法。

类型

层次聚类有凝聚(自下而上)分裂(自上而下)两种:
- 凝聚聚类:从每个样本作为一个单独的类开始,逐步合并最相似的类,直到满足某个停止条件
- 分裂聚类:从所有样本属于一个类开始,逐步将样本分成更小的类,直到每个样本成为一个独立的类或满足某个停止条件

K均值聚类

基于距离的聚类(硬聚类)

  • 原理:以欧氏距离平方表示样本间距离(相似度)
  • 目标:最小化样本与其所属类的中心之间的距离总和(即优化目标)
  • 公式
    $$J=\sum_{i=1}^{k}\sum_{x_j\in C_i}\|x_j-m_i\|^{2}$$
    其中 $k$ 是类的数量,$x_j$ 是属于类别 $C_i$ 的样本,$m_i$ 是类别 $C_i$ 的中心

迭代算法

$n$个样本分到$k$类中的可能性有 $SC(n,k)=\frac{1}{k!}\sum_{i=1}^{k}(-1)^{k-i}\binom{k}{i}i^n$,是一个组合问题,指数级复杂度,使用迭代算法求解

算法步骤:

  1. 初始化:首先选择$k$个点作为初始聚类中心 $m_1,m_2,\ldots,m_k$
  2. 分配样本:将每个样本分配到与其最近的聚类中心所对应的类中
  3. 更新中心:计算每个类的样本均值,作为新的聚类中心
  4. 重复迭代:重复步骤2和3,直到收敛(聚类中心不再发生变化或变化很小)

目标函数:

$$\min_{C_1,C_2,\ldots,C_k}\sum_{i=1}^{k}\sum_{x\in C_i}\|x-m_i\|^{2}$$

时间复杂度

K均值算法的时间复杂度是 $O(mnkI)$:
- $m$:样本维度
- $n$:样本数量
- $k$:类的数量
- $I$:迭代次数

初始分类的选择

选择初始中心,会得到不同的聚类结果。可以使用层次聚类,在得到上述几个类时,从每个类中选择与中心距离最近的点,作为初始中心。

聚类结果的质量可以用类的平均直径来衡量。一般地,类别越多,平均直径越小,但类别个数超过某个值时,平均直径会保持不变。实验时,可以使用二分法查找 $k$。

聚类评价指标

  • 类内差异:$\downarrow$(越小越好)
  • 类间差异:$\uparrow$(越大越好)

常用的聚类评价指标还包括:
- 轮廓系数(Silhouette Coefficient):衡量样本与其自身聚类的相似度与其他聚类的不相似度
- Calinski-Harabasz指数:类间离散度与类内离散度的比率
- Davies-Bouldin指数:类内距离与类间距离的比率

总结

通过上述内容,我们了解了聚类分析中常用的距离度量方法及其应用场景,层次聚类的基本概念和类型,以及K均值聚类算法的原理和实现。这些知识对于理解和应用聚类算法至关重要。

注:本文使用Qwen转换自本人的统计学习方法笔记