Python 学习日记 day17

@浙大疏锦行

聚类评估指标介绍

以下是三种常用的聚类效果评估指标,分别用于衡量聚类的质量和簇的分离与紧凑程度:

1. 轮廓系数 (Silhouette Score)

  • 定义:轮廓系数衡量每个样本与其所属簇的紧密程度以及与最近其他簇的分离程度。
  • 取值范围:[-1, 1]
    • 轮廓系数越接近 1,表示样本与其所属簇内其他样本很近,与其他簇很远,聚类效果越好。
    • 轮廓系数越接近 -1,表示样本与其所属簇内样本较远,与其他簇较近,聚类效果越差(可能被错误分类)。
    • 轮廓系数接近 0,表示样本在簇边界附近,聚类效果无明显好坏。
  • 使用建议:选择轮廓系数最高的 k 值作为最佳簇数量。

2. CH 指数 (Calinski-Harabasz Index)

  • 定义:CH 指数是簇间分散度与簇内分散度之比,用于评估簇的分离度和紧凑度。
  • 取值范围:[0, +∞)
    • CH 指数越大,表示簇间分离度越高,簇内紧凑度越高,聚类效果越好。
    • 没有固定的上限,值越大越好。
  • 使用建议:选择 CH 指数最高的 k 值作为最佳簇数量。

3. DB 指数 (Davies-Bouldin Index)

  • 定义:DB 指数衡量簇间距离与簇内分散度的比值,用于评估簇的分离度和紧凑度。
  • 取值范围:[0, +∞)
    • DB 指数越小,表示簇间分离度越高,簇内紧凑度越高,聚类效果越好。
    • 没有固定的上限,值越小越好。
  • 使用建议:选择 DB 指数最低的 k 值作为最佳簇数量。

KMeans 聚类

算法原理

KMeans 是一种基于距离的聚类算法,需要预先指定聚类个数,即 k。其核心步骤如下:

  1. 随机选择 k 个样本点作为初始质心(簇中心)。
  2. 计算每个样本点到各个质心的距离,将样本点分配到距离最近的质心所在的簇。
  3. 更新每个簇的质心为该簇内所有样本点的均值。
  4. 重复步骤 2 和 3,直到质心不再变化或达到最大迭代次数为止。

确定簇数的方法:肘部法

  • 肘部法(Elbow Method) 是一种常用的确定 k 值的方法。
  • 原理:通过计算不同 k 值下的簇内平方和(Within-Cluster Sum of Squares, WCSS),绘制 k 与 WCSS 的关系图。
  • 选择标准:在图中找到“肘部”点,即 WCSS 下降速率明显减缓的 k 值,通常认为是最佳簇数。这是因为增加 k 值带来的收益(WCSS 减少)在该点后变得不显著。

KMeans 算法的优缺点

优点
  • 简单高效:算法实现简单,计算速度快,适合处理大规模数据集。
  • 适用性强:对球形或紧凑的簇效果较好,适用于特征空间中簇分布较为均匀的数据。
  • 易于解释:聚类结果直观,簇中心具有明确的物理意义。
缺点
  • 需预先指定 k 值:对簇数量 k 的选择敏感,不合适的 k 会导致聚类效果较差。
  • 对初始质心敏感:初始质心的随机选择可能导致结果不稳定或陷入局部最优(可通过 KMeans++ 初始化方法缓解)。
  • 对噪声和异常值敏感:异常值可能会显著影响质心的位置,导致聚类结果失真。
  • 不适合非球形簇:对非线性可分或形状复杂的簇效果较差,无法处理簇密度不均的情况。

层次聚类

Agglomerative Clustering 是一种自底向上的层次聚类方法,初始时每个样本是一个簇,然后逐步合并最相似的簇,直到达到指定的簇数量或满足停止条件。由于它需要指定簇数量(类似于 KMeans),我将通过测试不同的簇数量 n_clusters 来评估聚类效果,并使用轮廓系数(Silhouette Score)、CH 指数(Calinski-Harabasz Index)和 DB 指数(Davies-Bouldin Index)作为评估指标。

你可能感兴趣的:(Python,学习日记,学习)