西瓜书读书笔记整理(九) —— 第九章 聚类

2024-01-10 12:59:24

9.1 聚类算法概述

9.1.1 什么是聚类算法

聚类算法是一类无监督学习算法,它的主要任务是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性

9.1.2 聚类算法分类

聚类算法是一类无监督学习算法,它的主要任务是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性。聚类算法主要分为以下几类:

  1. 原型聚类(prototype-based Clustering):基于数据点和聚类中心之间的距离来将数据点分组。在原型聚类中,每个聚类都由一个或多个 “原型”(也称为聚类中心)来代表。这些原型通常位于数据空间中的某些位置,它们的选择和更新是聚类算法的关键部分。

    • K均值(K-Means):将数据集划分为K个簇,每个簇以其内部样本的平均值表示。
    • 学习向量化(Learning Vector Quantization, LVQ):通过学习过程来调整一组原型向量,使得这些原型能够有效地代表不同的类别。算法通过逐步调整原型向量的位置,使其更好地匹配训练数据的特征,从而提高对未见过数据的泛化能力。
    • 高斯混合聚类(Mixture-of-Gaussian, GMM):GMM 是一种概率模型,通常用于聚类和密度估计。GMM假设数据是由若干个高斯分布(正态分布)组合而成的,每个分布称为一个“分量”,这些分量的混合形成了观测数据的分布。
  2. 密度聚类(Density-Based Clustering):基于密度的聚类算法通过考察样本点周围的密度来形成簇。这使得它能够发现任意形状的簇,并对噪声点具有较好的鲁棒性。

    • DBSCAN(Density-Based Spatial Clustering of Applications with Noise):根据样本点周围的密度划分簇,能够发现任意形状的簇。
  3. 层次聚类(Hierarchical Clustering):层次聚类算法通过构建层次结构来组织数据。这种方法不仅能够划分簇,还能够展示簇之间的嵌套关系。

    • 凝聚层次聚类(Agglomerative Hierarchical Clustering):从单个数据点开始,逐渐合并相邻的簇,直到形成一个大的簇。
    • 分裂层次聚类(Divisive Hierarchical Clustering):与凝聚层次聚类相反,从整个数据集开始,逐渐划分为小的簇。

9.1.3 聚类任务

聚类任务是无监督学习中的一种任务,其目标是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性。聚类任务的目的是通过发现数据中的潜在结构,将相似的样本归为一类,从而揭示数据的内在模式和组织结构。

聚类任务的主要特点包括:

  • 无监督学习:与监督学习不同,聚类任务中不需要事先标记好的训练样本及其对应的类别信息。算法自行发现样本之间的相似性结构。

  • 相似性判据:聚类算法通常基于一定的相似性度量或距离度量来判断样本之间的相似性。相似性度量越高,样本越有可能被归为同一类。

  • 簇结构:聚类任务的结果是将数据划分成若干簇(clusters),每个簇内的样本相似,而不同簇之间的样本差异较大。

  • 无先验信息:在聚类任务中,通常不假设任何关于数据分布或类别的先验信息。算法根据数据本身的结构进行聚类,因此对于未知的数据集也可以有效应用。

9.2 性能度量(Cluster Evaluation)

在聚类算法中,性能度量和距离度量是聚类算法中两个基本问题,它们直接影响到聚类结果的质量和算法的选择。

性能度量用于评估聚类算法的输出结果,以确定聚类的质量和效果。常见的性能度量包括:

  • 内部指标(Internal Measures):直接考察聚类结果而不利用任何参考模型。

    1. 紧密性(Cohesion):簇内部样本的相似性。
    2. 分离性(Separation):簇间样本的差异性。
    3. 轮廓系数(Silhouette Coefficient):综合考虑了簇的紧密性和分离性。
  • 外部指标(External Measures):将聚类结果与某个 “参考模型(reference model)” 进行比较。

    1. 兰德指数(Rand Index):度量聚类结果与真实标签的一致性。
    2. 互信息(Mutual Information):度量聚类结果与真实标签的相关性。
    3. F-度量(F-Measure):综合考虑了聚类的准确性和召回率。
  • 相对有效性指标

    1. ARI(Adjusted Rand Index):对兰德指数的修正,考虑了随机性的影响。
    2. NMI(Normalized Mutual Information):对互信息的标准化版本,范围在0到1之间。

选择合适的性能度量取决于聚类任务的性质和是否有真实标签可用。

9.2.1 外部指标(external index)

将聚类结果与某个 “参考模型(reference model)” 进行比较。

  1. 兰德指数(Rand Index,RI):兰德指数度量聚类结果中样本的配对关系与真实类别标签中的配对关系之间的一致性。

  2. 互信息(Mutual Information,MI):互信息度量聚类结果与真实标签之间的信息共享程度,衡量两者之间的关联性。

  3. FM 指数(Fowlkes-Mallows Index,FMI):FMI综合考虑了聚类结果的准确性和召回率,是兰德指数的一种变体。

  4. 调整兰德指数(Adjusted Rand Index,ARI):调整兰德指数对兰德指数进行了修正,考虑了随机性的影响,范围在[-1, 1]之间。

  5. 归一化互信息(Normalized Mutual Information,NMI):NMI对互信息进行了标准化,范围在[0, 1]之间,便于不同数据集之间的比较。

  6. Jaccard 系数(Jaccard Coefficient,简称JC):Jaccard系数是一种用于测量两个集合相似度的指标,通常用于集合之间的相似性比较

这些外部指标可以帮助评估聚类结果与真实类别标签之间的一致性,但需要注意,它们对聚类结果的评估依赖于真实标签的可用性。在实际应用中,有时候真实标签并不总是可获得,因此内部指标(如轮廓系数)可能更为适用。选择适当的性能度量要根据任务的性质和可用的信息而定。

9.2.2 内部指数(internal index)

内部指标用于在没有真实类别标签的情况下,仅基于聚类结果本身来评估聚类的质量。以下是一些常见的聚类性能度量内部指标:

  1. 紧密性(Cohesion)

    • 衡量簇内样本的相似性。紧密性越高,簇内样本越相似。
    • 具体计算方式可以是样本到簇中心的平均距离或其他形式的相似性度量。
  2. 分离性(Separation)

    • 衡量簇间样本的差异性。分离性越高,不同簇之间的样本差异越大。
    • 具体计算方式可以是簇中心之间的距离或其他形式的相异性度量。
  3. 轮廓系数(Silhouette Coefficient)

    • 结合了簇内样本的紧密性和簇间样本的分离性。计算每个样本的轮廓系数,再取平均值。
    • 具体计算方式涉及到样本与同簇内其他样本的平均距离和样本与最近簇中样本的平均距离。
  4. Davies-Bouldin指数(DBI)

    • 衡量簇的紧密性和分离性之间的平衡性,越小越好。
    • 计算每个簇与最相似簇之间的平均相异性。
  5. DB指数(Dunn Index,DI)

    • 衡量簇的紧密性和分离性之间的平衡性,越大越好。
    • 计算所有簇内样本对之间的最小距离与所有簇之间的最大距离的比率。
  6. Calinski-Harabasz指数

    • 基于簇内的紧密性和簇间的分离性来评估聚类的性能。
    • 通过簇内离散度和簇间离散度之比来计算。

这些内部指标可以帮助评估聚类结果的紧密性、分离性以及整体的质量。在选择内部指标时,需要根据具体任务和数据集的特性来权衡各个指标。不同的内部指标可能对不同类型的数据和聚类结果产生不同的影响。

9.3 距离度量(Distance Measures)

距离度量在聚类算法中用于衡量样本点之间的相似性或差异性。常见的距离度量包括:

  • 欧氏距离(Euclidean Distance):样本点之间的直线距离。
  • 曼哈顿距离(Manhattan Distance):样本点之间的城市街区距离。
  • 闵可夫斯基距离(Minkowski Distance):欧氏距离和曼哈顿距离的一般化。
  • 切比雪夫距离(Chebyshev Distance):样本点之间的最大坐标差值。

对于特定问题,选择适当的距离度量至关重要,因为它直接影响到聚类的结果。有时候,为了应对数据的特殊性,也可以采用自定义的距离度量。

9.3.1 距离度量的性质

距离度量是用于衡量两个样本点之间距离或相似性的方法。在聚类、分类和其他数据分析任务中,选择合适的距离度量非常重要。距离度量通常具有一些重要的性质,以下是常见的距离度量的性质:

  1. 非负性(Non-negativity)

    • 对于任意两个样本点 x x x y y y,其距离 d ( x , y ) d(x, y) d(x,y) 必须是非负的: d ( x , y ) ≥ 0 d(x, y) \geq 0 d(x,y)0
  2. 同一性(Identity)

    • 样本点与自身的距离为零: d ( x , x ) = 0 d(x, x) = 0 d(x,x)=0
  3. 对称性(Symmetry)

    • 样本点 x x x y y y 之间的距离与样本点 y y y x x x 之间的距离相等: d ( x , y ) = d ( y , x ) d(x, y) = d(y, x) d(x,y)=d(y,x)
  4. 三角不等式(Triangle Inequality)(在西瓜书中称为 “直递性”)

    • 对于任意三个样本点 x x x y y y z z z,距离之间满足三角不等式: d ( x , z ) ≤ d ( x , y ) + d ( y , z ) d(x, z) \leq d(x, y) + d(y, z) d(x,z)d(x,y)+d(y,z)
    • 这意味着通过两个样本点的中间点走的路径不可能比直接连接两个样本点的路径更长。
  5. 相异性(Dissimilarity)

    • 距离度量的值越大,样本点之间的相似性越低,相似性越小,样本点之间的距离越大。
  6. 欧氏距离的均匀缩放不变性(Scale Invariance of Euclidean Distance)

    • 欧氏距离在样本点之间进行均匀缩放时保持不变。
  7. 曼哈顿距离的坐标轴平行性(Axis-Parallel Property of Manhattan Distance)

    • 曼哈顿距离在坐标轴上的投影之和与实际距离相等。
  8. 连续性(Continuity)

    • 如果样本点 y y y 接近样本点 x x x,那么它们之间的距离应该趋近于零。

这些性质确保了距离度量的合理性和稳定性,使其能够在各种数据分析任务中有效地发挥作用。选择适当的距离度量通常取决于数据的特性以及任务的需求。

9.3.2 常见的几种距离的计算公式

在聚类算法中,常见的几种距离计算公式包括欧氏距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离(Chebyshev Distance)和闵可夫斯基距离(Minkowski Distance)。以下是它们的计算公式:

  1. 欧氏距离(Euclidean Distance)
    d ( x , y ) = ∑ i = 1 n ( x i ? y i ) 2 (1) d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} \tag{1} d(x,y)=i=1n?(xi??yi?)2 ?(1)

  2. 曼哈顿距离(Manhattan Distance)
    d ( x , y ) = ∑ i = 1 n ∣ x i ? y i ∣ (2) d(x, y) = \sum_{i=1}^{n} |x_i - y_i| \tag{2} d(x,y)=i=1n?xi??yi?(2)

  3. 切比雪夫距离(Chebyshev Distance)
    d ( x , y ) = max ? i ( ∣ x i ? y i ∣ ) (3) d(x, y) = \max_{i}(|x_i - y_i|) \tag{3} d(x,y)=imax?(xi??yi?)(3)

  4. 闵可夫斯基距离(Minkowski Distance)
    d ( x , y ) = ( ∑ i = 1 n ∣ x i ? y i ∣ p ) 1 p (4) d(x, y) = \left(\sum_{i=1}^{n}|x_i - y_i|^p\right)^{\frac{1}{p}} \tag{4} d(x,y)=(i=1n?xi??yi?p)p1?(4)

    p = 2 p=2 p=2 时,闵可夫斯基距离等同于欧氏距离;当 p = 1 p=1 p=1 时,等同于曼哈顿距离。

这些距离度量方法在不同的情况下有不同的适用性,选择合适的距离度量通常依赖于具体的数据特征和任务需求。在应用时,可以根据具体情况选择最合适的距离度量方法。

9.4 原型聚类(prototype-based clustering)

9.4.1 k-means 算法

一句话概述算法:K-means算法是一种无监督学习的聚类算法,通过迭代计算数据点与K个聚类中心之间的距离,并将数据点分配到距离最近的聚类中心,然后更新聚类中心为各自成员的均值,重复这一过程直至聚类中心不再显著变化,以实现数据点的分组。

算法过程

  1. 初始化: 随机选择K个数据点作为初始聚类中心。

  2. 分配数据点: 对每个数据点,计算其与各个聚类中心的距离,将其分配到距离最近的聚类中心对应的簇。

  3. 更新聚类中心: 对每个簇,计算其所有成员数据点的均值,将均值作为新的聚类中心。

  4. 迭代: 重复执行步骤2和步骤3,直到聚类中心不再发生显著变化或达到预定的迭代次数。

根据西瓜书的内容,算法过程如下图片所示:
在这里插入图片描述

9.4.2 学习向量化(Learning Vector Quantization, LVQ)

一句话概述算法 :学习向量化算法(LVQ)是一种监督学习算法,通过迭代地调整原型向量的位置,使其更好地代表不同类别,结合了原型聚类和监督学习的思想。

算法过程

  1. 初始化原型向量: 随机或基于某种规则初始化一组原型向量,每个原型代表一个类别。

  2. 遍历训练数据: 对于每个训练样本,计算其与各个原型向量之间的距离,找到最近的原型向量。

  3. 更新原型向量: 根据样本的标签信息以及最近的原型向量,通过一定的更新规则来调整原型向量的位置,使其更好地拟合当前样本。

  4. 迭代: 重复上述过程,直到满足停止条件(如达到预定的迭代次数或原型向量不再发生显著变化)。

学习向量化算法的关键在于如何更新原型向量。一种常见的更新规则是根据训练样本的标签,增加靠近正确类别的原型向量,并减小靠近错误类别的原型向量。这样,通过不断迭代,原型向量逐渐调整到更好地代表各个类别。

LVQ可以看作是K均值聚类和监督学习的结合,它具有一定的鲁棒性和可解释性。该算法在模式识别、分类和特征学习等任务中都有应用。

根据西瓜书的内容,算法过程如下图片所示:
在这里插入图片描述

9.4.3 高斯混合聚类(Mixture-of-Gaussian)

一句话概述算法:高斯混合聚类算法是一种概率模型,假设数据由多个高斯分布混合而成,通过迭代优化参数以拟合数据分布,常用于无监督学习中的聚类任务。

算法过程:

  1. 初始化参数: 随机初始化每个分量的均值、协方差矩阵和混合系数。

  2. E 步(Expectation): 对每个数据点,计算它属于每个分量的后验概率,即计算每个分量的权重。

  3. M 步(Maximization): 使用E步计算得到的后验概率,更新每个分量的均值、协方差矩阵和混合系数。

  4. 迭代: 重复执行E步和M步,直到模型参数收敛或达到预定的迭代次数。

GMM的优点包括对各种形状和方向的聚类簇建模能力,以及对数据分布的灵活性。它在许多领域,如模式识别、图像处理和自然语言处理等,都有广泛的应用。
在这里插入图片描述

9.5 密度聚类(density-based clustering)

此处只介绍其中一种算法——DBSCAN。

一句话概述算法:DBScan(Density-Based Spatial Clustering of Applications with Noise)算法是一种基于密度的聚类方法,通过定义数据点邻域内的密度来发现具有不同密度的数据簇,同时能够识别噪声点。

算法过程

  1. 核心点、边界点和噪声点: 定义半径ε内包含至少MinPts个数据点的为核心点,若在ε内但不是核心点且位于核心点的ε邻域内,则为边界点,否则为噪声点。

  2. 构建簇: 从一个未访问的核心点开始,通过其邻域内的可达点,递归地将相关联的数据点加入同一簇,直到不再有可达点。标记所有在这一过程中被访问的点。

  3. 迭代: 重复以上步骤,直到所有点都被访问。未被标记的点即为噪声点。

DBScan的优势在于对不规则形状的簇的发现和对噪声的鲁棒性。算法的性能受参数ε和MinPts的选择影响,需要合适的调参以适应不同数据集的特性。
在这里插入图片描述

9.6 层次聚类(hierarchical clustering)

此处仅介绍其中一种算法——AGNES。

一句话概述算法:AGNES(Agglomerative Nesting)算法是一种层次聚类方法,属于凝聚式聚类。该算法从每个数据点作为一个独立的簇开始,然后逐步合并最相似的簇,构建聚类层次结构,直至所有数据点都在一个簇中。合并的相似性度量通常使用欧氏距离、曼哈顿距离等。这一过程可用一棵二叉树(聚类树或树状图)表示,其中树的叶子节点代表初始的数据点,内部节点代表合并的簇,根节点代表包含所有数据点的簇。

算法过程

  1. 初始化: 将每个数据点看作一个独立的簇。

  2. 合并: 选择最相似的两个簇合并为一个新的簇,更新相似性度量。

  3. 重复: 重复合并步骤,直至只剩下一个簇,形成聚类层次结构。

AGNES算法的输出是一个聚类树,通过设定合并的阈值可以得到不同层次的聚类结果。该算法对于不同形状和大小的簇具有较好的适应性,但计算复杂度相对较高。

在这里插入图片描述

9.7 小结

聚类算法通过对数据点进行分组,揭示出内在的结构和相似性。K-means 是一种迭代划分数据的常用方法(本文中归类为原型算法),DBSCAN 基于密度识别簇,而AGNES层次聚类逐步合并最相似的簇。高斯混合模型通过概率建模适应各种分布。学习向量化算法结合监督学习和原型聚类。选择合适的算法需考虑数据特征和任务需求,以实现有效的数据组织与分析。

Smileyan
2024.01.10 0:40

文章来源:https://blog.csdn.net/smileyan9/article/details/135398479
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。