层次聚类算法 BIRCH&CURE&CHMSMELEON&DBSCAN&DENCLUE

层次聚类

  1. 自下而上的凝聚聚类(Bottom-Up Agglomerative Nesting):滚雪球式,首先视每条数据都是一个聚簇,不断结合
  2. 自上而下的分裂聚类(Top-Down Divisive Analysis):细胞分裂式,首先视所有数据都是一个聚簇,按照彼此之间差异不断拆分
  • 普遍问题:计算效率偏低

层次聚类示意图

BIRCH聚类

Balanced Iterative Reducing and Clustering using Hierarchies (BIRCH)算法是一种用于处理大规模数据集的增量式聚类算法。

基本思想

BIRCH通过逐步构建完全平衡树即**聚类特征树(Clustering Feature Tree, CF树)**来对数据进行聚类。

[!important]

聚类特征 (Clustering Feature, CF)
C F = ( N , L S , S S ) CF=(N, LS, SS) CF=(N,LS,SS)

  • N:簇中数据点的数量。

  • LS (Linear Sum):簇中所有数据点的坐标的线性和,即所有数据点向量的和。

  • SS (Square Sum):簇中所有数据点的平方和(即每个数据点向量的平方和)。

  • 质心(Centroid) L S N \frac{LS}N NLS

  • 半径(Radius) S S N − ( L S N ) 2 \sqrt{\frac{SS}N-\left(\frac{LS}N\right)^2} NSS(NLS)2

  • CF树: CF树是一种高度平衡的树结构,用于存储聚类特征。树中的每个叶节点包含多个聚类特征(CF),每个非叶节点则存储其子节点的聚类特征信息。CF树的设计允许将大量数据压缩为较少的聚类特征,以减少内存占用。

  • 簇直径阈值(T):当插入一个新数据点时,如果该点距离已有簇的质心的距离小于阈值 T T T,则将该点归入该簇。如果没有满足条件的簇,就需要创建新的簇或者分裂现有的簇。

  • 树的分支因子(B):控制每个非叶节点中最多存储的簇数。当一个节点存储的簇数超过这个分支因子时,节点将分裂。

工作步骤

1. 构建CF树
  • 初始化:从数据集中读取数据点,并将它们插入到CF树中。树中的每个节点存储簇的聚类特征(CF)。若当前节点的容量超出预设阈值,则将节点分裂。
  • 更新树结构:随着数据点的插入,CF树会根据距离准则更新各簇的信息。如果新点距离某个簇的质心较近,则将该点合并到该簇中。如果所有簇都不能包含该点,则根据条件分裂树节点。
2. 全局聚类

构建好CF树后,算法可以在树的基础上进行二次聚类,即在CF树的叶节点上执行传统的聚类算法,如K-means或层次聚类,生成最终的聚类结果。由于CF树已经压缩了数据,这一阶段的计算负担会大大减轻。

3. 可选的重新扫描

如果初始聚类不够精确,可以重新调整阈值并对数据进行重新扫描,以改进聚类效果。

特性

1、优点
  1. 处理大规模数据:BIRCH能够高效处理大量数据,特别适合于内存有限的情况。它通过CF树压缩数据,并在多轮扫描中细化聚类结果。
  2. 增量式聚类:BIRCH可以逐步处理数据流,实时更新聚类结果,适合在线聚类。
  3. 效率高:通过使用CF树减少数据点和聚类之间的计算,BIRCH能够快速完成大规模数据的初步聚类。
2、缺点
  1. 对聚类形状不敏感:BIRCH算法假设簇是球形的,因此对复杂形状的簇效果不佳。
  2. 对簇数敏感:如果初始簇的个数设置不合理,可能会影响聚类质量,需要对阈值和分支因子进行较好的调节。

CURE聚类

Clustering Using REpresentatives (CURE) 是一种用于处理大规模数据集的聚类算法,旨在解决传统聚类算法(如K-means和层次聚类)在应对非球形簇和处理噪声数据时的局限性。CURE通过选择多个具有代表性的点来表示每个簇,并在聚类过程中使用这些点来计算簇间的距离,从而提高了对不规则形状的簇和噪声数据的处理能力。

主要步骤

CURE算法可以分为以下几个主要步骤:

1. 随机采样
  • 为了提高效率,CURE首先从整个数据集中进行随机采样,从而缩小数据集的规模。采样后的数据将用于后续的聚类过程。
  • 该步骤的目的是减少算法的计算复杂度,同时保证采样后的数据集能大致代表原始数据集的分布。
2. 初始聚类
  • CURE在初始阶段可以使用层次聚类将采样后的数据点进行聚类,初始时每个数据点单独作为一个簇,随后将最相近的簇进行合并,直到达到一定的条件为止。
  • 层次聚类过程中,簇与簇之间的距离是通过簇中代表点之间的距离计算的,而不是简单的簇质心距离。
3. 选择代表点
  • 在每个簇形成后,CURE为每个簇选择一组代表点。这些代表点是从簇的边缘点中选择的,目的是捕捉簇的几何形状。
  • 为了减少噪声和数据的影响,每个簇的代表点会被向簇的质心方向缩放一部分距离。这一缩放操作可以控制簇的形状,使得代表点更好地反映簇的核心结构,同时减少离群点的影响。
4. 簇合并
  • 簇之间的合并过程基于代表点之间的最小距离。具体来说,两个簇的合并是通过计算两个簇的所有代表点之间的最小距离来决定的。
  • 如果两个簇的代表点之间的最小距离小于预设的阈值,则合并这两个簇。
  • 这个过程继续进行,直到没有簇可以进一步合并,或达到预设的簇数量。
5. 处理全体数据
  • 在采样数据上进行聚类后,CURE会将未采样的点分配到最近的簇中,形成最终的聚类结果。这通常使用基于代表点的距离度量来完成。

复杂度

  • 初始采样:采样过程的复杂度取决于采样的数量,一般为线性的。
  • 层次聚类:在采样数据上执行层次聚类的时间复杂度通常为 O ( n 2 log ⁡ n ) O(n^2 \log n) O(n2logn),其中 n n n 是采样点的数量。虽然这个复杂度较高,但由于采样大大减少了数据规模,这部分的计算成本相对可控。
  • 全局点分配:将未采样的点分配到已形成的簇的过程通常为线性复杂度。

特性

优点
  1. 对非球形簇的鲁棒性:通过使用多个代表点,CURE能够有效处理形状不规则的簇,而不仅限于球形簇。
  2. 抗噪性强:CURE的缩放操作有助于减少噪声和离群点的影响,使得聚类结果更加稳健。
  3. 处理大规模数据的能力:CURE通过采样和合并策略,在处理大规模数据集时既能保持高效性,又能获得较好的聚类结果。
缺点
  1. 参数敏感性:CURE依赖多个参数,如代表点的数量、缩放比例等,这些参数的选择对最终的聚类结果有较大影响,需要根据数据集的特性进行调节。
  2. 采样可能导致信息损失:虽然随机采样能够提高效率,但如果采样不够充分,可能会丢失一些重要的结构信息,影响聚类效果。
  3. 计算复杂度较高:尽管CURE通过采样减少了数据规模,但在采样数据上进行层次聚类的时间复杂度依然较高,尤其是在采样规模较大时。

CHSMELEON算法

CHAMELEON 是一种基于图的层次聚类算法,能够在复杂数据集中检测出形状、密度和大小各异的簇。与其他传统的聚类算法相比,CHAMELEON特别适用于处理那些形状不规则、簇结构复杂的数据集。

主要步骤

1. 构建相似性图(K最近邻图)

CHAMELEON首先通过计算数据点之间的相似度来构建一个K最近邻图(KNN图)。在这个图中,每个节点代表一个数据点,边的权重代表数据点之间的相似度(通常基于距离度量,如欧氏距离)。对于每个数据点,算法只保留它与其K个最近邻的连接,以此构建稀疏的相似性图。

构建相似性图的过程如下:

  • 对于每个数据点,找到其K个最近邻。
  • 在相似性图中,数据点之间的边的权重反映了它们之间的相似性(即数据点的接近程度)。权重越高,代表两个点越相似。
2. 使用图划分算法进行初步分割

在构建相似性图之后,CHAMELEON使用图划分技术将相似性图划分为多个初步的小簇。每个簇包含一小部分数据点,这些小簇是初始的聚类结果,但并不是最终的簇。

3. 动态合并簇

CHAMELEON的核心在于后续的合并阶段。在初步划分之后,CHAMELEON根据簇之间的相对相似性,以及簇内部的结构特征,自底向上地动态合并这些初始的小簇。合并时主要考虑两个因素:

  1. 相对相似性(Relative Inter-Connectivity):簇与簇之间的连接强度,相比于簇内部的连接强度的变化程度。
  2. 相对紧密性(Relative Closeness):簇的质心之间的接近程度,结合簇的内部密度和距离来进行衡量。

为了决定是否合并两个簇,CHAMELEON会同时考虑这两个簇的相对相似性和相对紧密性:

  • 如果两个簇之间的相对相似性足够高(即它们之间的连接强度与各自簇内的连接强度相比没有显著下降),并且它们的相对紧密性较好(即簇的形状和密度在合并后不会改变太多),那么它们会被合并。
  • 合并的过程是层次化的,直到没有簇可以进一步合并为止。

特性

优势
  1. 适应复杂簇形状:CHAMELEON通过同时考虑簇的内部结构和簇之间的相对相似性,能够很好地处理形状不规则、密度不均的簇,克服了传统聚类算法只适应球形簇的局限。

  2. 鲁棒性强:CHAMELEON对噪声和离群点具有较好的鲁棒性,因为在动态合并阶段,噪声点往往无法满足相对相似性和相对紧密性的标准,因此不会被错误地合并进簇中。

  3. 处理大规模数据:通过图划分技术,CHAMELEON能够有效地处理大规模数据集。初步的图划分大大降低了问题的复杂度,而后续的合并操作则逐渐改善初始的划分结果。

劣势
  1. 计算复杂度较高:CHAMELEON在构建相似性图和执行图划分时需要较高的计算资源,特别是在处理高维数据集时,计算点之间的相似性会消耗大量时间和内存。

  2. 参数敏感性:CHAMELEON需要用户指定一些参数,如K最近邻中的K值和相似性阈值等。这些参数的选择对聚类结果有很大影响,参数不当可能会影响算法的性能和效果。

  3. 图划分技术复杂:CHAMELEON的初步划分步骤依赖于有效的图划分技术,如谱聚类或多级图划分算法。这些方法本身也具有一定的复杂性,可能影响算法的实际效率。

DBSCAN

Density-Based Spatial Clustering of Applications with Noise (DBSCAN) 是一种基于密度的聚类算法,能够发现任意形状的簇,同时能够有效处理噪声和离群点。DBSCAN 通过密度的概念来定义簇,不需要指定簇的个数,这使得它在处理大规模数据、非球形簇、以及带有噪声的数据时非常有效。

基本概念

[!important]

在DBSCAN中,簇的定义基于以下几个核心概念:

  1. ε-邻域(ε-neighborhood)

    • 对于一个数据点 p p p,以 p p p 为中心、半径为 ε 的圆(或高维球体)内的所有点称为 p p p 的 ε-邻域。
  2. 核心点(Core Point)

    • 如果一个点的 ε-邻域中包含至少 MinPts 个点(包括该点本身),则称该点为核心点。核心点代表数据密度较高的区域。
  3. 边界点(Border Point)

    • 如果一个点位于某个核心点的 ε-邻域内,但自身的 ε-邻域中的点数小于 MinPts,则称该点为边界点。边界点本身不是核心点,但它属于某个簇,因为它可以与核心点连通。
  4. 噪声点(Noise Point)

    • 如果一个点既不是核心点,也不属于任何核心点的 ε-邻域,则称为噪声点。噪声点被视为离群点。
  5. ε(epsilon)

    • 定义点之间的距离阈值,决定了在多大范围内将点视为“邻居”。太大可能会过合并,太小可能难以形成簇。
  6. MinPts

    • 一个点被定义为核心点所需的最少点数,包括该点本身。过小容易有杂质,太多可能忽略一些簇。

主要步骤

DBSCAN 的工作原理基于以上概念,并按以下步骤进行:

  1. 任意选择一个未访问的点,并检查该点的 ε-邻域:

    • 如果该点的 ε-邻域包含的点数大于或等于 MinPts,则该点为核心点,算法将开始构建一个新的簇。否则,该点被标记为噪声点,但它可能稍后会被其他簇覆盖。
  2. 扩展簇

    • 一旦找到核心点,DBSCAN 会递归地将所有可以通过密度连接(即通过 ε-邻域相连)的点加入到该簇中。
    • 对于每个新加入簇的点,算法再次检查它是否是核心点。如果是,则将其 ε-邻域内的所有点也包含到该簇中,继续扩展簇的范围。
  3. 重复直到所有点都被访问

    • 算法继续从未访问的点中选择新的点,重复上述步骤,直到所有点都被处理完毕。

特性

优势
  1. 发现任意形状的簇

    • 与K-means等算法不同,DBSCAN不依赖于预定义的簇形状,它能够检测出任意形状的簇,包括非球形和复杂结构的簇。
  2. 处理噪声数据

    • DBSCAN在聚类过程中明确标记噪声点,因此在处理带有噪声的数据集时非常有效。这使得它在面对现实世界中的数据集(通常包含离群点)时表现良好。
  3. 不需要事先指定簇的数量

    • K-means等算法需要预先指定簇的数量,然而DBSCAN可以自动确定簇的数量,基于数据的密度特征来生成簇。
劣势
  1. 参数敏感

    • DBSCAN对参数 ε 和 MinPts 的选择非常敏感。合适的参数可以带来良好的聚类效果,但错误的参数可能导致不理想的结果。
    • 参数的选择通常依赖于数据集的特性,不同数据集可能需要不同的 ε 和 MinPts。
  2. 难以处理不同密度的簇

    • 如果数据集中簇的密度差异较大,DBSCAN可能无法很好地处理。较稠密的簇和较稀疏的簇可能无法同时被正确识别。
  3. 高维数据的性能问题

    • 在高维数据集上,基于距离的度量(如欧氏距离)会变得不可靠,这可能导致DBSCAN在高维空间中表现不佳。此外,计算所有点之间的距离也会导致计算开销增加。

复杂度

DBSCAN的时间复杂度取决于计算每个点的 ε-邻域的时间。如果使用KD-tree球树等高效的数据结构来加速邻域查询,DBSCAN的复杂度通常为 O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n n n 是数据点的数量。在最坏情况下,特别是高维数据集或距离计算无法优化时,复杂度可能退化为 O ( n 2 ) O(n^2) O(n2)

DENCLUE

DENCLUEDENsity-based CLUstEring)是一种基于密度的聚类算法,它通过估计数据的概率密度函数来识别簇。DENCLUE算法的核心思想是:数据点的分布可以被视为某种概率密度函数,通过对密度函数的高峰进行检测来识别簇。这种方法在处理高维数据和复杂簇形状时具有优势。

[!important]

关键概念:

  1. 核密度估计(Kernel Density Estimation, KDE)

    • 核密度估计是一种常见的非参数方法,用来估计数据的概率密度函数。通过在每个数据点上应用核函数(如高斯核),可以得到整个数据空间的密度分布。核函数通过对局部区域中的数据点进行加权,计算该区域的密度。

    密度函数估计的公式为:
    f ( x ) = ∑ i = 1 n K h ( x − x i ) f(x) = \sum_{i=1}^{n} K_h(x - x_i) f(x)=i=1nKh(xxi)
    其中,( K_h ) 是核函数,( h ) 是带宽参数,决定了核函数的影响范围,( x_i ) 是数据集中的每个点。

  2. 吸引子(Attractor)

    • 在DENCLUE中,每个数据点通过不断迭代移动,最终会收敛到某个密度峰值点,称为吸引子。吸引子是密度函数的局部极大值点,也是潜在簇的中心。
    • 数据点通过梯度上升(类似于Mean Shift算法的原理)逐渐靠近吸引子,即沿着密度上升的方向移动,直到达到局部密度峰值。
  3. 影响函数(Influence Function)

    • DENCLUE使用影响函数来描述每个数据点对其邻域密度的贡献。影响函数通常采用高斯核函数等光滑函数形式,它能够平滑地估计密度。
    • 核函数的选择以及带宽参数 ( h ) 对最终的聚类结果有重要影响。
  4. 簇的定义

    • 簇由密度函数的高峰(即吸引子)形成。那些移动到相同吸引子的点属于同一个簇。
    • 一个簇的边界可以通过设置一个密度阈值来确定,即当某区域的密度低于阈值时,不再将其包含在簇中,从而避免噪声点的影响。
  5. 带宽参数 ( h )

    • 带宽决定了核函数的影响范围,控制每个数据点对其邻域的贡献范围。较小的 ( h ) 值会使得密度估计较为细致,但容易受到噪声影响;较大的 ( h ) 值则会导致密度估计过于平滑,可能无法识别出较小的簇。
  6. 密度阈值

    • 通过设定密度阈值,可以控制簇的大小,并过滤掉噪声点。如果某个区域的密度低于阈值,则认为这些点是噪声点,不属于任何簇。

主要步骤

DENCLUE 的主要流程包括以下几个步骤:

  1. 密度函数估计

    • 使用核密度估计法对每个数据点的密度进行估计。通过核函数将数据点的密度分布平滑化,形成整个数据空间的密度图。
  2. 梯度上升

    • 对每个数据点,从当前位置出发,通过梯度上升算法逐步向密度较高的方向移动,直到达到密度的局部极大值。这些局部极大值点就是吸引子。
    • 梯度上升的具体过程是:在每一步计算当前位置的密度梯度,然后向梯度方向移动一个小步长,逐渐逼近吸引子。
  3. 吸引子划分簇

    • 将所有能够移动到同一吸引子的点划分为一个簇,簇的个数由吸引子的个数决定。
  4. 噪声点处理

    • 通过设定密度阈值,可以将密度较低的点标记为噪声点。这些点不能移动到任何吸引子,也不会被分配到任何簇中。

优势

  1. 发现任意形状的簇

    • 由于DENCLUE基于密度的概念,它可以检测任意形状的簇,而不是依赖于球形或凸形簇的假设。
  2. 鲁棒性强

    • DENCLUE可以通过设置密度阈值有效地处理噪声和离群点。低密度区域会被自动识别为噪声区域,不影响簇的形成。
  3. 处理高维数据

    • DENCLUE由于依赖于核密度估计方法,能够很好地处理高维数据。尽管高维数据中距离计算变得困难,但通过选择合适的核函数和带宽,仍能有效地进行聚类。
  4. 可解释性强

    • 通过梯度上升算法,DENCLUE为每个数据点提供了一个明确的聚类路径,即如何从当前点移动到簇中心,这使得其聚类结果具有较强的可解释性。

DENCLUE的劣势

  1. 参数选择敏感

    • 带宽参数 ( h ) 和密度阈值对聚类结果有显著影响。较难找到一个适用于所有数据集的最佳参数,因此通常需要进行多次实验来调优参数。
  2. 计算复杂度高

    • 由于需要对每个数据点进行核密度估计和梯度上升操作,DENCLUE在处理大规模数据时可能存在计算开销较高的问题。尤其是高维数据集,计算密度梯度的复杂度较高。
  3. 对簇内密度均匀性要求较高

    • 如果簇内部的密度分布不均匀,可能会导致一些点被误认为是噪声点,或者多个密度峰被识别为不同的簇。

DENCLUE的应用场景

DENCLUE适用于以下类型的聚类任务:

  • 数据集中的簇具有任意形状和大小。
  • 数据中存在噪声和离群点,且需要自动检测噪声。
  • 数据集维度较高,且传统的距离度量不再有效。
  • 簇内密度较为均匀。

其他聚类算法

Grid-based Clustering Methods

基于网格的聚类方法将数据空间划分为有限数量的单元(即网格),然后根据这些单元中的数据点数量和分布来确定簇。它的核心思想是将数据映射到网格单元中,从而将聚类问题简化为对网格单元的聚类问题。

优点

  • 计算效率较高,尤其适合大数据集。
  • 能够发现任意形状的簇,且对噪声点较为鲁棒。

缺点

  • 网格划分的粒度(即网格的大小)对结果影响很大,较难选择最优的网格大小。

CLustering In QUEst

结合了网格划分和密度聚类思想的高维数据聚类算法。它通过将数据空间划分为小网格单元,识别高维空间中密度较高的区域,并将这些区域聚类成簇。

优点

  • 适合高维数据:通过对多个维度的组合来识别稠密区域,使得它能够在高维数据中发现潜在的簇。
  • 可扩展性强:对于大规模、高维度的数据表现良好。

缺点

  • 聚类结果对网格划分的粒度敏感,若划分过粗或过细,都会影响聚类质量。
  • 由于是基于密度的聚类方法,它可能难以处理簇密度差异较大的数据集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰宸旻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值