第十四章 聚类方法

第十四章 聚类方法

相似度或距离

  1. 闵可夫斯基距离
    闵可夫斯基距离 越大相似度越小, 距离越小相似度越大。
    定义 14.1 给定样本集合 X , X X, X X,X m m m 维实数向量空间 R m \mathbf{R}^m Rm 中点的集合, 其中 x i , x j ∈ X , x i = ( x 1 i , x 2 i , ⋯   , x m i ) T , x j = ( x 1 j , x 2 j , ⋯   , x m j ) T x_i, x_j \in X, x_i=\left(x_{1 i}, x_{2 i}, \cdots, x_{m i}\right)^{\mathrm{T}}, x_j=\left(x_{1 j}, x_{2 j}, \cdots, x_{m j}\right)^{\mathrm{T}} xi,xjX,xi=(x1i,x2i,,xmi)T,xj=(x1j,x2j,,xmj)T, 样本 x i x_i xi 与样本 x j x_j xj 的闵可夫斯基距离 ( Minkowski distance) 定义为
    d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ p ) 1 p d_{i j}=\left(\sum_{k=1}^m\left|x_{k i}-x_{k j}\right|^p\right)^{\frac{1}{p}} dij=(k=1mxkixkjp)p1
    这里 p ⩾ 1 p \geqslant 1 p1 。 当 p = 2 p=2 p=2 时称为欧氏距离 (Euclidean distance), 即
    d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ 2 ) 1 2 d_{i j}=\left(\sum_{k=1}^m\left|x_{k i}-x_{k j}\right|^2\right)^{\frac{1}{2}} dij=(k=1mxkixkj2)21
    p = 1 p=1 p=1 时称为曼哈顿距离 (Manhattan distance), 即
    d i j = ∑ k = 1 m ∣ x k i − x k j ∣ d_{i j}=\sum_{k=1}^m\left|x_{k i}-x_{k j}\right| dij=k=1mxkixkj
    p = ∞ p=\infty p= 时称为切比雪夫距离 ( Chebyshev distance), 取各个坐标数值差的绝对值 的最大值, 即
    d i j = max ⁡ k ∣ x k i − x k j ∣ d_{i j}=\max _k\left|x_{k i}-x_{k j}\right| dij=kmaxxkixkj

  2. 哈拉诺比斯距离

    马哈拉诺比斯距离 (Mahalanobis distance), 简称马氏距离, 也是另一种常用的 相似度, 考虑各个分量 (特征) 之间的相关性并与各个分量的尺度无关。马哈拉诺比 斯距离越大相似度越小,距离越小相似度越大。

    定义 14.2 给定一个样本集合 X , X = [ x i j ] m × n X, X=\left[x_{i j}\right]_{m \times n} X,X=[xij]m×n, 其协方差矩阵记作 S S S 。样本 x i x_i xi 与样本 x j x_j xj 之间的马哈拉诺比斯距离 d i j d_{i j} dij 定义为
    d i j = [ ( x i − x j ) T S − 1 ( x i − x j ) ] 1 2 d_{i j}=\left[\left(x_i-x_j\right)^{\mathrm{T}} S^{-1}\left(x_i-x_j\right)\right]^{\frac{1}{2}} dij=[(xixj)TS1(xixj)]21
    其中
    x i = ( x 1 i , x 2 i , ⋯   , x m i ) T , x j = ( x 1 j , x 2 j , ⋯   , x m j ) T x_i=\left(x_{1 i}, x_{2 i}, \cdots, x_{m i}\right)^{\mathrm{T}}, \quad x_j=\left(x_{1 j}, x_{2 j}, \cdots, x_{m j}\right)^{\mathrm{T}} xi=(x1i,x2i,,xmi)T,xj=(x1j,x2j,,xmj)T
    S S S 为单位矩阵时, 即样本数据的各个分量互相独立且各个分量的方差为 1 时, 由式 (14.6) 知马氏距离就是欧氏距离, 所以马氏距离是欧氏距离的推广。

  3. 相关系数

    样本之间的相似度也可以用相关系数 (correlation coefficient) 来表示。相关系数 的绝对值越接近于 1 , 表示样本越相似; 越接近于 0 , 表示样本越不相似。

    定义 14.3 样本 x i x_i xi 与样本 x j x_j xj 之间的相关系数定义为
    r i j = ∑ k = 1 m ( x k i − x ˉ i ) ( x k j − x ˉ j ) [ ∑ k = 1 m ( x k i − x ˉ i ) 2 ∑ k = 1 m ( x k j − x ˉ j ) 2 ] 1 2 r_{i j}=\frac{\sum_{k=1}^m\left(x_{k i}-\bar{x}_i\right)\left(x_{k j}-\bar{x}_j\right)}{\left[\sum_{k=1}^m\left(x_{k i}-\bar{x}_i\right)^2 \sum_{k=1}^m\left(x_{k j}-\bar{x}_j\right)^2\right]^{\frac{1}{2}}} rij=[k=1m(xkixˉi)2k=1m(xkjxˉj)2]21k=1m(xkixˉi)(xkjxˉj)
    其中
    x ˉ i = 1 m ∑ k = 1 m x k i , x ˉ j = 1 m ∑ k = 1 m x k j \bar{x}_i=\frac{1}{m} \sum_{k=1}^m x_{k i}, \quad \bar{x}_j=\frac{1}{m} \sum_{k=1}^m x_{k j} xˉi=m1k=1mxki,xˉj=m1k=1mxkj

  4. 夹角余弦
    样本之间的相似度也可以用夹角余弦 (cosine) 来表示。夹角余弦越接近于 1 , 表 示样本越相似; 越接近于 0 , 表示样本越不相似。
    定义 14.4 样本 x i x_i xi 与样本 x j x_j xj 之间的夹角余弦定义为
    s i j = ∑ k = 1 m x k i x k j [ ∑ k = 1 m x k i 2 ∑ k = 1 m x k j 2 ] 1 2 s_{i j}=\frac{\sum_{k=1}^m x_{k i} x_{k j}}{\left[\sum_{k=1}^m x_{k i}^2 \sum_{k=1}^m x_{k j}^2\right]^{\frac{1}{2}}} sij=[k=1mxki2k=1mxkj2]21k=1mxkixkj
    由上述定义看出, 用距离度量相似度时, 距离越小样本越相似; 用相关系数时, 相关系数越大样本越相似。注意不同相似度度量得到的结果并不一定一致。

类与类之间的距离

  • 最短距离或单连接 (single linkage)
    定义两个类样本之间的最短距离为两类之间的距离

  • 最长距离或完全连接 (complete linkage)
    定义两个类样本之间的最长距离为两类之间的距离

  • 中心距离
    定义两个类 的中心 x ˉ p \bar{x}_p xˉp x ˉ q \bar{x}_q xˉq 之间的距离为两类之间的距离

  • 平均距离
    定义两个类 任意两个样本之间距离的平均值为两类之间的距离

层次聚类

  • 层次聚类假设类别之问存在层次结构, 将样本聚到层次化的类中。层次聚类又 有聚合合 (agglomerative) 或自下而上 (bottom-up) 聚类、分裂 (divisive) 或自上而 下 (top-down) 聚类两种方法。因为每个样本只属于一个类, 所以层次聚类属于硬 聚类。
    聚合聚类开始将每个样本各自分到一个类; 之后将相距最近的两类合并, 建立一 个新的类, 重复此操作直到满足停止条件; 得到层次化的类别。分裂聚类开始将所有 样本分到一个类; 之后将已有类中相距最远的样本分到两个新的类, 重复此操作直到 满足停止条件; 得到层次化的类别。本书只介绍聚合聚类。
    聚合聚类的具体过程如下: 对于给定的样本集合, 开始将每个样本分到一个类; 然后按照一定规则, 例如类间距离最小, 将最满足规则条件的两个类进行合并; 如此 反复进行, 每次减少一个类, 直到满足停止条件, 如所有样本聚为一类。
    由此可知, 聚合聚类需要预先确定下面三个要素:

    1. 距离或相似度;
    2. 合并规则;
    3. 停止条件。

    根据这些要素的不同组合, 就可以构成不同的聚类方法。距离或相似度可以是闵 可夫斯基距离、马哈拉诺比斯距离、相关系数、夹角余弦。合并规则一般是类间距离 最小, 类间距离可以是最短距离、最长距离、中心距离、平均距离。停止条件可以是类 的个数达到阈值 (极端情况类的个数是 1)、类的直径超过阈值。

    如果采用欧氏距离为样本之间距离; 类间距离最小为合并规则, 其中最短距离为 类间距离; 类的个数是 1 , 即所有样本聚为一类, 为停止条件, 那么聚合聚类的算法 如下。

    算法 14.1 (聚合聚类算法)
    输入: n n n 个样本组成的样本集合及样本之间的距离;
    输出: 对样本集合的一个层次化聚类。

    1. 计算 n n n 个样本两两之间的欧氏距离 { d i j } \left\{d_{i j}\right\} {dij}, 记作矩阵 D = [ d i j ] n × n D=\left[d_{i j}\right]_{n \times n} D=[dij]n×n
    2. 构造 n n n 个类, 每个类只包含一个样本。
    3. 合并类间距离最小的两个类, 其中最短距离为类间距离, 构建一个新类。 (4) 计算新类与当前各类的距离。若类的个数为 1 , 终止计算, 否则回到步 (3)。 可以看出聚合层次聚类算法的复杂度是 O ( n 3 m ) O\left(n^3 m\right) O(n3m), 其中 m m m 是样本的维数, n n n 是样 本个数。

K均值聚类

  • k k k 均值聚类归结为样本集合 X X X 的划分, 或者从样本到类的函数的选择问题。 k k k 均 值聚类的策略是通过损失函数的最小化选取最优的划分或函数 C ∗ C^* C
    首先, 采用欧氏距离平方(squared Euclidean distance)作为样本之间的距离 d ( x i , x j ) d\left(x_i, x_j\right) d(xi,xj)
    d ( x i , x j ) = ∑ k = 1 m ( x k i − x k j ) 2 = ∥ x i − x j ∥ 2 \begin{aligned} d\left(x_i, x_j\right) &=\sum_{k=1}^m\left(x_{k i}-x_{k j}\right)^2 \\ &=\left\|x_i-x_j\right\|^2 \end{aligned} d(xi,xj)=k=1m(xkixkj)2=xixj2
    然后, 定义样本与其所属类的中心之间的距离的总和为损失函数, 即
    W ( C ) = ∑ l = 1 k ∑ C ( i ) = l ∥ x i − x ˉ l ∥ 2 W(C)=\sum_{l=1}^k \sum_{C(i)=l}\left\|x_i-\bar{x}_l\right\|^2 W(C)=l=1kC(i)=lxixˉl2
    式中 x ˉ l = ( x ˉ 1 l , x ˉ 2 l , ⋯   , x ˉ m l ) T \bar{x}_l=\left(\bar{x}_{1 l}, \bar{x}_{2 l}, \cdots, \bar{x}_{m l}\right)^{\mathrm{T}} xˉl=(xˉ1l,xˉ2l,,xˉml)T 是第 l l l 个类的均值或中心, n l = ∑ i = 1 n I ( C ( i ) = l ) n_l=\sum_{i=1}^n I(C(i)=l) nl=i=1nI(C(i)=l), I ( C ( i ) = l ) I(C(i)=l) I(C(i)=l) 是指示函数, 取值为 1 或 0 。函数 W ( C ) W(C) W(C) 也称为能量, 表示相同类中的样 本相似的程度。
    k k k 均值聚类就是求解最优化问题:
    C ∗ = arg ⁡ min ⁡ C W ( C ) = arg ⁡ min ⁡ C ∑ l = 1 k ∑ C ( i ) = l ∥ x i − x ˉ l ∥ 2 \begin{aligned} C^* &=\arg \min _C W(C) \\ &=\arg \min _C \sum_{l=1}^k \sum_{C(i)=l}\left\|x_i-\bar{x}_l\right\|^2 \end{aligned} C=argCminW(C)=argCminl=1kC(i)=lxixˉl2
    相似的样本被聚到同类时, 损失函数值最小, 这个目标函数的最优化能达到聚类 的目的。但是, 这是一个组合优化问题, n n n 个样本分到 k k k 类,所有可能分法的数目是:
    S ( n , k ) = 1 k ! ∑ l = 1 k ( − 1 ) k − l ( k l ) k n S(n, k)=\frac{1}{k !} \sum_{l=1}^k(-1)^{k-l}\left(\begin{array}{c} k \\ l \end{array}\right) k^n S(n,k)=k!1l=1k(1)kl(kl)kn
    这个数字是指数级的。事实上, k k k 均值聚类的最优解求解问题是 NP 困难问题。现实 中采用迭代的方法求解。

  • k k k 均值聚类的算法是一个迭代的过程, 每次迭代包括两个步骤。首先选择 k k k 个类的 中心, 将样本逐个指派到与其最近的中心的类中, 得到一个聚类结果; 然后更新每个类 的样本的均值, 作为类的新的中心; 重复以上步骤, 直到收敛为止。具体过程如下。
    首先, 对于给定的中心值 ( m 1 , m 2 , ⋯   , m k ) \left(m_1, m_2, \cdots, m_k\right) (m1,m2,,mk), 求一个划分 C C C, 使得目标函数极小化:
    min ⁡ C ∑ l = 1 k ∑ C ( i ) = l ∥ x i − m l ∥ 2 \min _C \sum_{l=1}^k \sum_{C(i)=l}\left\|x_i-m_l\right\|^2 Cminl=1kC(i)=lximl2

    就是说在类中心确定的情况下, 将每个样本分到一个类中, 使样本和其所属类的中心 之间的距离总和最小。求解结果, 将每个样本指派到与其最近的中心 m l m_l ml 的类 G l G_l Gl 中。
    然后, 对给定的划分 C C C, 再求各个类的中心 ( m 1 , m 2 , ⋯   , m k ) \left(m_1, m_2, \cdots, m_k\right) (m1,m2,,mk), 使得目标函数极 小化:
    min ⁡ m 1 , ⋯   , m k ∑ l = 1 k ∑ C ( i ) = l ∥ x i − m l ∥ 2 \min _{m_1, \cdots, m_k} \sum_{l=1}^k \sum_{C(i)=l}\left\|x_i-m_l\right\|^2 m1,,mkminl=1kC(i)=lximl2
    就是说在划分确定的情况下, 使样本和其所属类的中心之间的距离总和最小。求解结 果, 对于每个包含 n l n_l nl 个样本的类 G l G_l Gl, 更新其均值 m l m_l ml :
    m l = 1 n l ∑ C ( i ) = l x i , l = 1 , ⋯   , k m_l=\frac{1}{n_l} \sum_{C(i)=l} x_i, \quad l=1, \cdots, k ml=nl1C(i)=lxi,l=1,,k
    重复以上两个步骤, 直到划分不再改变, 得到聚类结果。

  • 算法 14.2(k 均值聚类算法 $)$
    输入: n n n 个样本的集合 X X X;
    输出: 样本集合的聚类 C ∙ C^{\bullet} C

    1. 初始化。令 t = 0 t=0 t=0, 随机选择 k k k 个样本点作为初始聚类中心 m ( 0 ) = m^{(0)}= m(0)= ( m 1 ( 0 ) , ⋯   , m l ( 0 ) , ⋯   , m k ( 0 ) ) \left(m_1^{(0)}, \cdots, m_l^{(0)}, \cdots, m_k^{(0)}\right) (m1(0),,ml(0),,mk(0))
    2. 对样本进行聚类。对固定的类中心 m ( t ) = ( m 1 ( t ) , ⋯   , m l ( t ) , ⋯   , m k ( t ) ) m^{(t)}=\left(m_1^{(t)}, \cdots, m_l^{(t)}, \cdots, m_k^{(t)}\right) m(t)=(m1(t),,ml(t),,mk(t)), 其中 m l ( t ) m_l^{(t)} ml(t) 为类 G l G_l Gl 的中心, 计算每个样本到类中心的距离, 将每个样本指派到与其最近的 中心的类中, 构成聚类结果 C ( t ) C^{(t)} C(t)
    3. 计算新的类中心。对聚类结果 C ( t ) C^{(t)} C(t), 计算当前各个类中的样本的均值, 作为新 的类中心 m ( t + 1 ) = ( m 1 ( t + 1 ) , ⋯   , m l ( t + 1 ) , ⋯   , m k ( t + 1 ) ) m^{(t+1)}=\left(m_1^{(t+1)}, \cdots, m_l^{(t+1)}, \cdots, m_k^{(t+1)}\right) m(t+1)=(m1(t+1),,ml(t+1),,mk(t+1))
    4. 如果迭代收玫或符合停止条件, 输出 C ∗ = C ( t ) C^*=C^{(t)} C=C(t)
      否则, 令 t = t + 1 t=t+1 t=t+1, 返回步 ( 2 ) (2) (2)
      k k k 均值聚类算法的复杂度是 O ( m n k ) O(m n k) O(mnk), 其中 m m m 是样本维数, n n n 是样本个数, k k k 是类 别个数。

kmeans算法特性

  1. 总体特点
    k k k 均值聚类有以下特点: 基于划分的聚类方法; 类别数 k k k 事先指定; 以欧氏距离 平方表示样本之间的距离, 以中心或样本的均值表示类别; 以样本和其所属类的中心 之间的距离的总和为最优化的目标函数; 得到的类别是平坦的、非层次化的; 算法是 迭代算法, 不能保证得到全局最优。

  2. 收敛性
    k k k 均值聚类属于启发式方法, 不能保证收玫到全局最优, 初始中心的选择会直接 影响聚类结果。注意, 类中心在聚类的过程中会发生移动, 但是往往不会移动太大, 因 为在每一步, 样本被分到与其最近的中心的类中。

  3. 初始类的选择
    选择不同的初始中心, 会得到不同的聚类结果。针对上面的例 14.2 14.2 14.2, 如果 改变两个类的初始中心, 比如选择 m 1 ( 0 ) = x 1 m_1^{(0)}=x_1 m1(0)=x1 m 2 ( 0 ) = x 5 m_2^{(0)}=x_5 m2(0)=x5, 那么 x 2 , x 3 x_2, x_3 x2,x3 会分到 G 1 ( 0 ) , x 4 G_1^{(0)}, x_4 G1(0),x4 会分到 G 2 ( 0 ) G_2^{(0)} G2(0), 形成聚类结果 G 1 ( 1 ) = { x 1 , x 2 , x 3 } , G 2 ( 1 ) = { x 4 , x 5 } G_1^{(1)}=\left\{x_1, x_2, x_3\right\}, G_2^{(1)}=\left\{x_4, x_5\right\} G1(1)={x1,x2,x3},G2(1)={x4,x5} 。中 心是 m 1 ( 1 ) = ( 0.33 , 0.67 ) T , m 2 ( 1 ) = ( 5 , 1 ) T m_1^{(1)}=(0.33,0.67)^{\mathrm{T}}, m_2^{(1)}=(5,1)^{\mathrm{T}} m1(1)=(0.33,0.67)T,m2(1)=(5,1)T 。继续迭代, 聚类结果仍然是 G 1 ( 1 ) = { x 1 , x 2 , x 3 } , G 2 ( 1 ) = { x 4 , x 5 } G_1^{(1)}=\left\{x_1, x_2, x_3\right\}, G_2^{(1)}=\left\{x_4, x_5\right\} G1(1)={x1,x2,x3},G2(1)={x4,x5}。聚类停止
    初始中心的选择, 比如可以用层次聚类对样本进行聚类, 得到 k k k 个类时停止。然 后从每个类中选取一个与中心距离最近的点。

  4. 类别数 k k k 的选择
    k k k 均值聚类中的类别数 k k k 值需要预先指定, 而在实际应用中最优的 k k k 值是不知道 的。解决这个问题的一个方法是尝试用不同的 k k k 值聚类, 检验各自得到聚类结果的质 量, 推测最优的 k k k 值。聚类结果的质量可以用类的平均直径来衡量。一般地, 类别数 变小时, 平均直径会增加; 类别数变大超过某个值以后, 平均直径会不变; 而这个值正 是最优的 k k k 值。图 14.3 14.3 14.3 说明类别数与平均直径的关系。实验时, 可以采用二分查找, 快速找到最优的 k k k 值。

    image-20220901214424528


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值