兰德系数和轮廓系数

348 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

兰德系数的优点:

随机(均匀)标签分配对于n_clusters和n_samples的任何值具有接近0.0的ARI分数。

有界的范围[- 1,1]:负值为差(独立标签),相似的聚类ARI为正,1.0为完全匹配得分。

l  对聚类结构不作任何假设:可以用来比较聚类算法,例如可将假设各向同性斑点形状的k-means聚类算法与光谱聚类算法的结果进行比较,光谱聚类算法可以找到具有“折叠”形状的簇。

兰德系数的缺点:

与惯性(分类)相反,ARI需要了解基本真实分类的情况,而在实践中几乎永远无法获得这些情况,或者需要人工手动分配(如在监督学习环境中)。

数学表述:

如果C是基础真实类别分配而K是聚类,那么我们将a和b定义为:

a- a 为在C中为同一类且在K中也为同一类别的数据点对数

b- b为在C中不在同一类且在K中也不属于同一类别的数据点对数

c- c 为在C中在同一类但在K中为不同一类别的数据点对数

d- d为在C 中为不同一类但在K 中却隶属于同类别的数据点对数

原始(未调整)Rand指数是:

直观上,a+b可以看作是X和Y之间的协议数,c + d可以看作是X和Y之间的分歧数。

a,b,c,d的数学术语表达:

给定一组n元素集S = {o1,… ,on}和两个S的(分区)聚类X和Y进行比较,X = {X1,…, Xr},将S划分为r个簇,Y = {Y1,…Ys},将S划分为s个簇

它的具体计算流程如下:

Step1,建立列联表:

Step2,关键因子的确定

也即N11=a、N10=c、N01=d、N00=b

直观上,N11和N00是两个簇之间一致性的指标,而N10和N01反映了簇之间的不一致性。

Step3 确定RI

RI得分并不保证两个(C和K)随机标签分配将得到接近零的值(特别是如果簇的数量与样本数量处于相同的数量级)。

调整兰德系数是修正的随机兰德系数。习惯上,Rand指数采用聚类的置换(俗称排列模型)模型进行校正(聚类内的簇数量和大小是固定的,所有的随机聚类都是通过在固定的聚类之间混洗(交换)元素产生的)。然而,置换模型的前提经常被违背;在许多聚类场景中,簇的数量或簇的大小分布或两者会剧烈变化。例如,在k-means中,簇的数量是由程序执行者确定的,但是这些簇的大小是从数据中推断出来的。

虽然兰德系数可能只产生0到+1之间的值,但如果系数小于预期系数,调整兰德系数可以产生负值。

修正兰德系数的确定

Step1. RI期望值的确定

(对于完成的推导请参看:Fowlkes and Mallows, 1983, Hubert and Arabie, 1985, or Albatineh and Niewiadomska-Bugaj, 2011)

Step2. 调整兰德系数ARI的确定

参考论文:

Alexander J Gates and Yong-Yeol Ahn (2017). "The Impact of Random Models on Clustering Similarity"

轮廓系数

如果不知道基础真实标签,则必须使用模型本身进行评估。 Silhouette Coefficient(sklearn.metrics.silhouette_score)就是这样一个评估的例子,其中,较高的轮廓系数得分与具有定义得较好的簇的模型有关。Silhouette Coefficient是为每个样本定义的,由两个分数组成:

a: 一个样本与同一类中所有其他点之间的平均距离。

b: 样本与下一个最近的聚类中的所有其他点之间的平均距离。

一个样本集的轮廓系数作为每个样本的轮廓系数的平均值。

from sklearn import metrics

from sklearn.metrics import pairwise_distances

from sklearn import datasets

dataset = datasets.load_iris()

X = dataset.data

y = dataset.target

 

#通常情况下,轮廓系数用于聚类分析的结果

 

In [2]:

import numpy as np

from sklearn.cluster import KMeans

kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)

labels = kmeans_model.labels_

metrics.silhouette_score(X, labels, metric='euclidean')

Out[2]:

0.5525919445213676

轮廓系数的优点

l  得分限制在-1,对于不正确的聚类,和+1,对于高密度聚类之间。 得分在0左右表示集群重叠。

l  当簇密集且分离良好时(类内聚集,类间分离),得分较高,这与群集的标准概念有关。

轮廓系数的缺点

l  凸簇的轮廓系数一般高于其他簇的概念,如基于密度的簇,像通过DBSCAN得到的簇。

项目:用轮廓系数寻找中心点个数见附加代码。