在机器学习与数据挖掘领域,轮廓指的是一种反映数据聚类结果一致性的方法,可以用于评估聚类后簇与簇之间的离散程度。轮廓的取值范围为[-1, +1],如果某一样本的轮廓接近1,则说明样本聚类结果合理;如果接近-1,则说明其更应该分类到其他的簇;如果轮廓近似为0,则说明该样本在两个簇的边界上。所有样本轮廓的均值称为聚类结果的轮廓系数(Silhouette Coefficiency),是该聚类是否合理、有效的度量。
定义
假设某一数据集使用如k-means等聚类方法分成了k 个簇:
对于某一属于簇C_i样本i,记为 i \in C_i ,设d(i, j)为样本i与j之间的距离,求算样本i与其他样本之间的平均距离的公式如下(由于不计算样本与自身的距离d(i, i),故计算平均值时样本总数为|C_i| - 1):
: a(i) = \frac{1} \sum_{j \in C_k} d(i, j)
结合上述内容,我们定义i的轮廓值为:
: s(i) = \frac{b(i)-a(i)}{\max\{a(i),b(i)\}}
等效为:
: s(i) = \begin{cases}
1-a(i)/b(i), & \mbox{if } a(i) b(i) \\
\end{cases}
对于上述定义,显然 -1 \le s(i) \le 1.
为了防止簇数量暴增,对于仅有一个样本的簇(|C_i| = 1 ),定义其s(i) = 0 。
a(i)反映了i与其所属簇的距离,较小的a(i)值说明其与所属簇的关系紧密;而较大的b(i)反映了i与其他簇关系疏远;故为提高s(i)(或称为优化聚类结果),我们需要使a(i) \ll b(i)。
考夫曼(Kaufman)等人定义了轮廓系数(silhouette coefficient )的概念——在某个数据集的有限种聚类方法中,平均s(i)的最大值:
:
SC = \max_{k} \tilde{s}\left(k\right)
上式中\tilde{s}\left(k\right)代表被分为k个簇后该数据集的平均s(i) 。
评价
轮廓系数一般不能用于横向评价多种聚类方法。凸簇(如经由DBSCAN方法得出的簇)的轮廓系数一般高于其他类型的簇。
另见
- Davies–Bouldin指数
- k-medoids
- 如何确定数据集中有多少簇
参考文献
评论 (0)