携手创作,共同成长!这是我参与「掘金日新计划 · 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得到的簇。
项目:用轮廓系数寻找中心点个数见附加代码。