什么是 轮廓系数(Silhouette Score)?
轮廓系数(Silhouette Score)是比较每个样本到本簇的平均距离与到最近其他簇的平均距离,用于评估聚类内部几何质量的指标。
快速了解
| 创建时间 | 1987 年由 Peter J. Rousseeuw 提出 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
先查看逐样本与逐簇分布,再解释平均值
Rousseeuw 的原始论文把 Silhouette 设计为图形化诊断,而不只是一个标量。应检查每个簇的系数分布、宽度、负值尾部和最近竞争簇。全局均值很高时,小型扩散簇仍可能失败;对多次运行直接取均值也可能掩盖 Assignment 不稳定。
声明表示、距离和单例簇规则
特征缩放、Embedding 归一化,以及把欧氏距离替换为 Cosine 或预计算 Dissimilarity,都会改变分数。当前 scikit-learn 文档要求标签数量位于 2 到 n-1 之间,并支持显式距离函数。单例簇不存在簇内平均距离,常见实现会把该样本设为中性值 0,报告时必须说明。
把选择数据与确认数据分开
在同一数据上选择使轮廓系数最大的算法、特征管线或簇数,相当于针对该数据的几何结构优化。冻结选择后,应在留出数据或重采样上复算,报告不同随机种子的变化,并补充专家审查或下游效果。朴素两两距离计算可达到二次复杂度,因此采样近似也要固定设计并量化不确定性。
主要特点
- 根据簇内紧致度与最近竞争簇分离度生成逐样本系数
- 标准定义的取值范围为 -1 到 1
- 要求至少两个簇且簇数小于样本数
- 依赖特征表示、缩放方式和距离函数
- 可通过轮廓图定位边界样本与疑似错误分配
- 不能证明聚类稳定、语义正确或对下游任务有用
常见用途
- 在相同数据和表示上比较候选簇数
- 定位靠近竞争簇的边界样本
- 发现被全局平均掩盖的小型或扩散簇
- 检查不同随机种子和重采样下的聚类稳定性
- 辅助文档或向量聚类的人工审核
示例
Loading code...常见问题
轮廓系数如何计算?
对每个样本分别计算它到本簇其他样本的平均距离 `a`,以及到最近其他簇的平均距离 `b`,再计算 `(b-a)/max(a,b)`。整体分数通常取样本均值,但还应检查逐簇分布和支持度。
轮廓系数为负数说明什么?
这表示在所选距离下,该样本平均而言更接近另一个簇。原因可能是分配错误、簇边界重叠、表示不合适,或真实结构本身是非凸形,不能直接把负值都当作标签错误。
轮廓系数能选出正确的簇数吗?
它可以在相同数据和几何定义下排序候选划分,但不能证明某个簇数在语义上正确。应把簇数视为模型选择,并使用重采样稳定性、领域审查和下游用途继续确认。
为什么特征缩放会改变轮廓系数?
轮廓系数完全建立在距离上。数值尺度较大的特征可能主导距离,归一化也会改变最近竞争簇。比较前必须冻结表示、缩放、缺失值策略和距离函数。
较高平均轮廓系数足以批准聚类上线吗?
不足。它只衡量一种几何下的紧致度与分离度。还应检查逐样本和逐簇结果、不同种子与样本的稳定性、离群点、稀有切片、专家判断,以及聚类是否改善预期下游任务。