ITDS-聚类

Hierarchical,Similarity,DBSCAN,Validation

层次聚类

  • Agglomerative
    每次合并最近的两个点,直到合并成 k 个类
  • Divisive
    从一个包含所有数据点的类开始进行分裂,直到分裂成 k 个类

每次操作都只对一个聚类进行,聚类结果会形成一种嵌套关系,每个节点代表一个聚类,上层节点是由下层节点合并产生的,我们可以使用 dendrogram 树状图 来表示这种嵌套关系。它不需要预设聚类数量,通过在合适的层次切割树状图,就可以得到任意数量的聚类。

凝聚式算法:

  1. 计算 Proximity Matrix
    邻近矩阵衡量各个数据点之间的距离
  2. 将每个数据点看作一个聚类
  3. 合并最近的两个聚类
  4. 更新邻近矩阵
  5. 重复 3-4 直到只剩下 k 个聚类

相似度

需要明确聚类间的相似性,以此判断哪些聚类应该合并或保持分离。计算两个簇之间的距离有不同的方法:

  • Single Linkage (MIN)
    计算两个簇之间最小距离,即最近两个点之间的距离。在簇之间形成链状连接,适用于发现非球形簇。
  • Complete Linkage (MAX)
    计算两个簇之间的最大距离,即最远两个点之间的距离。能创建更紧密,类似球形的簇,并减少噪声的影响。
  • Average Linkage
    计算两个簇之间所有点的平均距离,是 Single 和 Complete 的折中方案,对噪声敏感度底,偏向形成球形聚类。
  • Centroid Linkage
    计算两个簇之间质心(如几何中心)的距离。这种方法计算简单,处理复杂形状聚类时可能效果不佳。
  • Ward’s Method
    此方法选择 合并两个簇后,簇内平方和的增加量最小 的一对。这种方法对噪声敏感度低,适用于球形簇结构。

问题

  • 层次聚类计算复杂度高,时间复杂度为 O(n^3),空间复杂度为 O(n^2)
  • 合并决策不可逆
  • 无目标函数,无法直接优化
  • 处理多种形状的簇效果不佳

DBSCAN

Density-Based Spatial Clustering of Applications with Noise 是一种基于密度的聚类算法,能够识别形状不规则的簇,并检测噪声点,不需要预设聚类数量。

它主要依赖两个参数:

  1. Eps:邻域半径,用于确定一个点的邻域范围,也就是多远才算是邻居
  2. MinPts:邻域内最少点数,也就是在一个区域类至少需要多少个点,才能算作一个簇

根据这两个参数,DBSCAN 将数据点分为三类:

  • 核心点:在 Eps 范围内至少包含 MinPts 个点(包括自身)
  • 边界点:不是核心点,但在某个核心点的 Eps 范围内
  • 噪声点:既不是核心点也不是边界点

选择 Eps 和 MinPts

对于簇中的点,它们的第 k 近邻的距离应该相似,如第 2 与第 3 近邻的距离相差不大。我们可以通过 k-distance graph 来选择合适的 Eps 和 MinPts。

  1. 计算所有点到第 k 近邻的距离
  2. 对距离进行排序,画出随 k 变化的距离图
  3. 找到出现突然增长的点
  4. 这个点的横坐标就是 Eps,纵坐标就是 MinPts

Density Connectivity

  • Density Edge: 如果 p 和 q 都是核心点,且它们的距离小于等于 Eps,则能够在它们之间构建一条密度边,它的存在意味着两个核心点所在区域数据点密集,具备归为同一簇的条件,它用于构建核心点网络。

  • Density Connected: 如果某个点 p 可以通过一系列的密度边连接到另一个核心点 q,则 p 和 q 是密度相连的,它们可能不能直接相连,但是可以通过多个核心点传递连接。它是判断点是否属于同一簇的关键条件。

密度连接使 DBSCAN 能够形成任意形状的簇。

缺点

  • 计算复杂度高
  • 它假设所有簇的密度相近,对密度差异较大的数据集效果不佳
  • 对参数敏感,需要调参

聚类有效性

在 Supervised Classification 中,我们使用 Accuracy,Precision,Recall 等评价结果的好坏。在聚类分析中,我们也需要评估聚类结果的好坏。由于聚类属于无监督学习,所以产生的结果会根据标准不同而变化。评估聚类的目的是防止噪声导致错误聚类,比较并选择最合适的算法。

我们可以评估整个聚类结果,也可以评估单个簇。我们可以:

  1. 判断数据集是否真的存在聚类,而不是随机噪声
  2. 将聚类结果与可能的已知结果比较,比如类别标签
  3. 使用数据本身来评估聚类的匹配度
  4. 对比不同聚类的结果
  5. 确定最佳的聚类数量

我们有以下衡量方法:

  1. 外部指标:如真实分类标签
    • Entropy(聚类的不确定性,聚类结果与真实类别标签的一致性)
    • Purity(簇内数据一致性,每个簇中占比最高的类别)
  2. 内部指标:
    • 误差平方和 SSE(簇内数据点到簇中性距离,越小数据越紧密)
    • 簇凝聚力(Cohesion,簇内数据点之间的相似度,或者距离)
    • 簇分离度(Separation,不同簇之间的距离)
    • 轮廓系数(Silhouette Coefficient)
  3. 相对指标:Rand Index

轮廓系数评估每个数据点在其所属簇中的合理性,它同时考虑 Cohesion 和 Separation。它最初计算单个数据点,然后可以扩展到簇和整个聚类结果,当用于簇时,计算的是平均系数,衡量该簇的质量,聚类同理。它的值在 [-1, 1] 之间,值越大,表示聚类效果越好,约等于 0 说明数据点在边界,负数说明可能被错误的分配到簇中。

Rand Index 比较数据点在真实类别和聚类的分配情况,来计算正确性。显而易见的,两个对象在同一簇中说明它们应该属于同一类。它的取值范围是 [0, 1],值越大,说明聚类效果越好,接近 0.5 说明聚类接近于随机划分,而 0 是很差。如果某个类别的数据点较多,可能会使 Rand Index 偏高,使用 Adjusted Rand Index 来修正磁偏差。

Author

Aloento

Posted on

2025-03-18

Updated on

2025-04-01

Licensed under

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×