1. 简介

本文介绍如何在聚类分析中使用 Silhouette Plot(轮廓图)

聚类是无监督学习的一种常见方法。我们首先解释 Silhouette Value(轮廓值)的含义、计算方式与解读方法,然后展示如何通过平均 Silhouette Value 来确定最佳聚类数量。

2. Silhouette Plot 在聚类分析中的作用

Silhouette Plot 是一种图形工具,用于展示数据点在所分配聚类中的拟合程度

它反映两个关键指标:

  • Cohesion(内聚度):表示一个数据点与其所在聚类中其他点的相似程度
  • Separation(分离度):表示该点与其他聚类之间的区分程度

通过 Silhouette Plot,我们可以同时评估这两个指标,从而判断聚类结构的质量。

3. Silhouette Value 的计算与解读

Silhouette Value 是由两个指标组合而成:Cohesion 和 Separation。

3.1. Cohesion(内聚度)

  • 定义:衡量同一聚类中点之间的相似性,是 intra-cluster 指标

  • 公式:对于聚类 $ C $ 中的点 $ x_i $,其 Cohesion 为:

    $$ a_i = \mathrm{mean}_{x_j \in C}(distance(x_i, x_j)) $$

3.2. Separation(分离度)

  • 定义:衡量当前点与其他聚类之间的区分程度,是 inter-cluster 指标

  • 公式:对于点 $ x_i \in C_1 $,其 Separation 为:

    $$ b_i = \min_{C_2 \neq C_1}(mean_{x_j \in C_2}(distance(x_i, x_j))) $$

3.3. Silhouette Value 的计算公式

将 Cohesion 和 Separation 合并为一个指标:

$$ s_i = \frac{b_i - a_i}{\max(a_i, b_i)} $$

  • 取值范围:[-1, 1]
  • 解读
    • 接近 1:说明该点非常合适当前聚类
    • 接近 0:说明该点可能属于其他聚类
    • 负数:说明该点可能被错误分类

3.4. Silhouette Value 的计算示例

考虑如下图中的三个聚类 A、B、C:

Three clusters

以点 (9.5, 11) ∈ A 为例:

  • Cohesion:计算该点到 A 中其他点的距离均值,结果为 2
  • Separation
    • 到 B 的平均距离 ≈ 11
    • 到 C 的平均距离 ≈ 10.9
    • 取最小值:10.9

最终 Silhouette Value 为:

$$ s_i = \frac{10.9 - 2}{\max(10.9, 2)} = \frac{8.9}{10.9} \approx 0.8 $$

结论:该点聚类合理,Silhouette 值接近最大值 1

3.5. Silhouette Value 的分析

Silhouette 值 含义
接近 1 数据点高度适配当前聚类
接近 0 数据点可能属于多个聚类
负值 数据点可能被错误分类

下面是一些示例图:

  • s(i) ≈ 1:点与本聚类紧密,与其他聚类明显分离
    s(i) approximately 1

  • s(i) ≈ 0:点与本聚类和其他聚类的距离相近
    s(i) approximately 0

  • s(i) ≈ -1:点更接近其他聚类,疑似误分类
    s(i) approximately -1

4. Silhouette Plot 的可视化

Silhouette Plot 是将聚类中所有点的 Silhouette Value 按照降序排列绘制的图形,每个聚类用不同颜色标识,并留出空白间隔。

示例:K-Means 聚类(k=2)

Average silhouette score 0.71

  • 左侧为 Silhouette Plot,x 轴为 Silhouette 值,每个条形高度表示该聚类中点的数量
  • 右侧为数据点的可视化,颜色与左侧一致
  • 红色虚线表示平均 Silhouette 值(0.71)

📌 观察:绿色聚类的 Cohesion 更强,Silhouette 更好;黑色聚类略差,但整体仍良好。

5. 使用 Silhouette 值选择最佳聚类数 k

通过绘制不同 k 值下的 Silhouette Plot,可以判断哪个 k 值最符合数据结构。

示例:不同 k 值的 Silhouette Score

k 值 Silhouette Score
2 0.7143
3 0.7866 ✅
4 0.7456
5 0.6633
6 0.5392

图形对比:

  • k=3:平均 Silhouette 值最高(0.78)
    3 clusters silhouette_score 0.78

  • k=4:略有下降(0.74)
    4 clusters silhouette_score 0.74

  • k=5:下降明显(0.66)
    5 clusters silhouette_score 0.66

  • k=6:最低(0.53)
    6 clusters silhouette_score 0.53

5.1. Silhouette Score 的解读标准(Kaufmann & Rousseeuw, 1990)

Silhouette Coefficient (SC) 聚类质量
> 0.70 非常强
0.51 - 0.70 合理
< 0.51 较差

根据此标准:

  • k=2、3、4:结构合理
  • k=5、6:结构较差

📌 踩坑提醒:虽然数据来自 4 个 blob,但 k=3 的 Silhouette Score 更高,说明聚类效果更优。这提示我们:不能仅凭数据来源判断最佳聚类数,需结合评估指标。

6. 总结

  • Silhouette Plot 是一种用于评估聚类质量的图形化工具
  • Silhouette Value 综合了 Cohesion 和 Separation,取值范围 [-1, 1]
  • 平均 Silhouette 值越高,说明聚类结构越清晰
  • 通过比较不同 k 值下的 Silhouette Score,可以辅助选择最佳聚类数
  • 结合图形与数值分析,能更准确地判断聚类结果的质量

建议:在使用 K-Means 或其他聚类算法时,推荐将 Silhouette 分析作为评估聚类效果的重要手段之一。


原始标题:Silhouette Plots