轮廓系数是评估聚类效果的指标,取值范围为[-1,1],越接近1表示聚类效果越好。
在聚类时可用于聚类个数的选择。通过遍历簇数,计算对应轮廓系数,选择轮廓系数最大时对应的聚类模型。
- Kmeans聚类:对于初始的中心个数进行遍历,寻找使得轮廓系数最大的聚类模型。
- 层次聚类:每一层合并时计算一次轮廓系数,直到所有样本合并为一簇,选择轮廓系数最大时对应的簇数对聚类结果进行剪枝。
轮廓系数计算方法
-
单一样本 i i i的轮廓系数: s ( i ) = b ( i ) − a ( i ) max { a ( i ) , b ( i ) } s(i)=\frac{b(i)-a(i)}{\max\{a(i),b(i)\}} s(i)=max{a(i),b(i)}b(i)−a(i)
其中
a ( i ) a(i) a(i): i i i所属簇内其它样本的平均距离,若簇内仅 i i i一个样本,则令 s ( i ) = 0 s(i)=0 s(i)=0
i ∈ A , a ( i ) = a v e r a g e j ∈ A , j ≠ i ( d i s t ( i , j ) ) i \in A,a(i)=average_{j \in A,j \neq i}(dist(i,j)) i∈A,a(i)=averagej∈A,j=i(dist(i,j))b ( i ) b(i) b(i): i i i与其它簇的样本平均距离的最小值
i ∈ A , C ≠ A , d i s t ( i , C ) = a v e r a g e j ∈ C ( d i s t ( i , j ) ) i \in A,C \neq A,dist(i,C)=average_{j \in C}(dist(i,j)) i∈A,C=A,dist(i,C)=averagej∈C(dist(i,j))
b ( i ) = m i n C ≠ A d i s t ( i , C ) b(i)=min_{C \neq A} dist(i,C) b(i)=minC=Adist(i,C) -
聚类总体的轮廓系数:所有样本轮廓系数的平均值
S = 1 N ∑ i = 1 N s ( i ) S=\frac{1}{N}\sum_{i=1}^Ns(i) S=N1∑i=1Ns(i)