sklearn.metrics.cluster-聚类性能评估指标

对聚类算法进行性能评估并不像评估监督分类方法(准确度、召回率)那么简单。任何对聚类算法的评估方法都不应该考虑聚类标签本身的数值(聚类结果的标签显然可以替换成任意标识),而应该考虑聚类算法是否能够按照数据的真实标签对数据集进行划分(有监督),或者在一定的假设条件下,通过距离函数是的聚类结果中属于同一类的元素之间更为相似,而属于不同的元素间差别更大。

sklearn.metrics.cluster API

Adjusted Rand Index

官方文档

ARI 是一种有监督的评估方法。

1
2
3
4
5
from sklearn.metrics import adjusted_rand_score

# labels_true: 数据的真实分类
# labels_pred: 算法的预测分类
adjusted_rand_score(labels_true, labels_pred)

labels_pred 表征了每个数据被预测的分类,分类本身标识符的值不参与任何计算。下面两个预测结果计算出的 ARI 完全一样:

1
2
labels_pred = [0,0,1,1,2,2,3]
labels_pred = [1,1,2,2,3,3,0]

adjusted_rand_score 是对称的:

1
2
3
m = adjusted_rand_score(labels_true, labels_pred)
n = adjusted_rand_score(labels_pred, labels_true)
m == n # True

当预测分类与真实分类完全一致时,adjusted_rand_score 为 1。

优势

  • 当预测分类与真实分类完全独立时,评估分数应该为0,ARI 符合这种情况,而 Rand Index 或者 V-measure 不符合
  • 打分范围为 $[-1, 1]$,负数表示独立的聚类结果(糟糕),相似的聚类结果 ARI 应该大于 0,ARI 等于 1 最完美
  • 没有聚类算法的结构假设,可以用来比较多种不同结构假设的聚类算法,例如K-Means(斑点形数据)和谱聚类(折叠形数据)

缺点

  • 计算 ARI 需要知道数据的真实分类(监督式),这在实际应用中十分受限
  • 在无监督评估中,ARI 可以用来计算多种模型的分类一致性,从而帮助选择较优的聚类算法

公式

暂略

Mutual Information

官方文档

Homogeneity, Completeness and V-measure

官方文档

Fowlkes-Mallows scores

官方文档

Silhouette Coefficient

官方文档

Calinski-Harabasz Index

官方文档

Davies-Bouldin Index

官方文档

Contingency Matrix

官方文档

----- For reprint please indicate the source -----
0%