聚类分析的评价指标也称为:性能度量指标
聚类算法聚类后,如何评价聚类结果,如何确定各聚类算法结果的优劣,如何确定聚类算法的参数值,可以通过聚类性能度量指标从一个侧面说明聚类算法和算法参数的选择。、
聚类性能度量指标分为外部指标和内部指标。
外部指标,也就是有参考标准的指标,通常也可以称为有监督情况下的一种度量聚类算法和各参数的指标。具体就是聚类算法的聚类结果和已知的(有标签的、人工标准或基于一种理想的聚类的结果)相比较,从而衡量设计的聚类算法的性能、优劣。
内部指标是无监督的,无需基准数据集,不需要借助于外部参考模型,利用样本数据集中样本点与聚类中心之间的距离来衡量聚类结果的优劣
内部指标主要有:
1)紧密度(Compactness):每个聚类簇中的样本点到聚类中心的平均距离。对应聚类结果,需要使用所有簇的紧密度的平均值来衡量聚类算法和聚类各参数选取的优劣。紧密度越小,表示簇内的样本点越集中,样本点之间聚类越短,也就是说簇内相似度越高。
2)分割度(Seperation):是个簇的簇心之间的平均距离。分割度值越大说明簇间间隔越远,分类效果越好,即簇间相似度越低。
3)误差平方和 (SSE:Sum of squares of errors):类中数据聚类距离类中心的平方损失之和,即K-means算法的优化目标,表示为
其中,表示第k个类中第i个样本点,
表示第k个类的中心点。
核心代码段
def distance_sum_max_min_avg(self, class_list, dis_matrix):
sum = 0
max = 0
min = math.inf
for index in range(len(class_list)):
value = dis_matrix[class_list[index]][index]
sum += value
if max < value:
max = value
if min > value:
min = value
avg = sum/len(class_list)
return sum,max,min,avg
4)轮廓系数 (Silhouette Coefficient):对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。轮廓系数的取值范围是[-1,1],同类别样本距离越相近,不同类别样本距离越远,分数越高。
针对某个样本的轮廓系数s为: