1、调整兰德系数
sklearn.metrics.adjusted_rand_score
数学公式
Rand index(兰德系数):
RI=a+bCnsamples2
R
I
=
a
+
b
C
2
n
s
a
m
p
l
e
s
1、a:应该在一类,最后聚到一类的数量;
2、b:不应该在一类 ,最后聚类结果也没把他们聚在一起的数量;
3、数量是指配对,在数据集中任意选两个样本点就是一个配对;
4、RI 有一个缺点,就是惩罚力度不够,换句话说,大家普遍得分比较高,没什么区分度,于是有了 ARI;
Adjusted Rand index(调整兰德系数): ARI=RI−E[RI]]]max(RI)−E[RI]] A R I = R I − E [ R I ] ] ] m a x ( R I ) − E [ R I ] ]
优缺点
优点:
1、对于随机的标签分配,ARI 趋近于 0(而 RI 就不能保证获得接近 0 的值,特别是如果簇的数量与采样数量具有相同的数量级);
2、ARI 的取值范围是 [-1,1],负值代表两列聚类标签相对独立,正值代表两列聚类标签很相似,1 代表两列聚类标签完全相同;
3、对于簇的结构没有作出任何假设,例如,可以用于比较 K-Means(假定 isotropic blob shapes) 与 谱聚类(可以找到具有 “folded” shapes 的聚类)的结果;
缺点:
1、由于需要正确聚类标签,在实践中几乎不可用,但是可以用来在无监督的环境下,比较各种聚类算法结果的一致性(adjusted_rand_score 是对称的);
2、基于互信息的度量
sklearn.metrics.mutual_info_score
sklearn.metrics.adjusted_mutual_info_score
sklearn.metrics.normalized_mutual_info_score
数学公式
假设两列标签分配(数据集中有 N 个对象),U 和 V;
mutual_info_score: MI(U,V)=∑|U|i=1∑|V|j=1P(i,j)log(P(i,j)P(i)P′(j)) M I ( U , V ) = ∑ i = 1 | U | ∑ j = 1 | V | P ( i , j ) l o g ( P ( i , j ) P ( i ) P ′ ( j ) )
P(i)=|Ui|N P ( i ) = | U i | N 是从 U 中随机选取的对象属于类 Ui U i 的概率;
P′(j)=|Vj|N P ′ ( j ) = | V j | N 是从 V 中随机选取的对象属于类 Vi V i 的概率;
P(i,j)=|Ui⋂Vj|N P ( i , j ) = | U i ⋂ V j | N 是随机选择的对象属于两个类 Ui U i 和 Vj V j 的概率;
normalized_mutual_info_score: NMI(U,V)=MI(U,V)H(U)H(V)√ N M I ( U , V ) = M I ( U , V ) H ( U ) H ( V )
U 的熵: H(U)=−∑|U|i=1P(i)log(P(i)) H ( U ) = − ∑ i = 1 | U | P ( i ) l o g ( P ( i ) )
V 的熵: H(V)=−∑|V|i=1P′(j)log(P′(j)) H ( V ) = − ∑ i = 1 | V | P ′ ( j ) l o g ( P ′ ( j ) )
adjusted_mutual_info_score: AMI=MI−E[MI]]max(H(U),H(V))−E[MI]] A M I = M I − E [ M I ] ] m a x ( H ( U ) , H ( V ) ) − E [ M I ] ]
优缺点
优点:
1、对于随机的标签分配,AMI 趋近于 0(而 MI 就不能保证获得接近 0 的值);
2、MI 和 NMI 的取值范围是 [0,1],接近 0 的值代表两列聚类标签相对独立,接近 1 的值代表两列聚类标签具有一致性,0 代表两列聚类标签完全独立,1 代表两列聚类标签完全相同(AMI 的取值范围为 [-1,1]);
3、基于互信息的度量方式对于簇的结构没有作出任何假设,例如,可以用于比较 K-Means(假定 isotropic blob shapes) 与 谱聚类(可以找到具有 “folded” shapes 的聚类)的结果;
缺点:
1、基于互信息的度量方式,由于需要正确聚类标签,在实践中几乎不可用,但是可以用来在无监督的环境下,比较各种聚类算法结果的一致性(基于互信息的三种度量方式是对称的);
3、同质性、完整性、V-measure
sklearn.metrics.homogeneity_score
sklearn.metrics.completeness_score
sklearn.metrics.v_measure_score
sklearn.metrics.homogeneity_completeness_v_measure
数学公式
K 代表簇,C 代表类;
homogeneity(同质性):每个簇只包含一个类的成员;
h=1−H(C|K)H(C)
h
=
1
−
H
(
C
|
K
)
H
(
C
)
completeness(完整性):给定类的所有成员都分配给同一个簇;
c=1−H(K|C)H(K)
c
=
1
−
H
(
K
|
C
)
H
(
K
)
其中,
H(C|K)=−∑|C|c=1∑|K|k=1nc,kn⋅log(nc,knk)
H
(
C
|
K
)
=
−
∑
c
=
1
|
C
|
∑
k
=
1
|
K
|
n
c
,
k
n
⋅
l
o
g
(
n
c
,
k
n
k
)
H(C)=−∑|C|c=1ncn⋅log(ncn) H ( C ) = − ∑ c = 1 | C | n c n ⋅ l o g ( n c n )
n 代表样本总数, nc n c 和 nk n k 代表分别属于 c 类和簇 k 的样本数,最后 nc,k n c , k 代表分配给簇 k 的类 c 的样本数;
H(K|C) 和 H(K) 以类似方式定义;
v_measure:同质性和完整性的调和平均;
v=2⋅h⋅ch+c
v
=
2
⋅
h
⋅
c
h
+
c
优缺点
优点:
1、分数是有界的,0.0 是最坏的, 1.0 是一个完美的分数;
2、具有不良 v-measure 的聚类可以在同质性和完整性方面进行定性分析,以更好地感知到聚类的错误类型;
3、对于簇的结构没有作出任何假设,例如,可以用于比较 K-Means(假定 isotropic blob shapes) 与 谱聚类(可以找到具有 “folded” shapes 的聚类)的结果;
缺点:
1、随着样本数量、簇的数量以及标定过的真实标签的不同,完全随机的标签并不总是产生相同数值的同质性、完整性和 v-measure(随机标记不会产生零分,特别是当簇的数量大时);
当样本数量超过 1000,簇的数量小于 10 时,可以忽略上述缺点,但对于较小的样本数量或者较大数量的簇,还是建议使用调整过的度量标准,比如 Adjusted Rand Index (ARI);
2、基于互信息的度量方式,由于需要正确聚类标签,在实践中几乎不可用;
4、Fowlkes-Mallows scores
sklearn.metrics.fowlkes_mallows_score
数学公式
FMI=TP(TP+FP)(TP+FN)√
F
M
I
=
T
P
(
T
P
+
F
P
)
(
T
P
+
F
N
)
TP 是 True Positive(真正例)的数量,即真实标签和预测标签中属于相同簇的点对数;
FP 是 False Positive(假正例)的数量, 即在真实标签中属于同一簇,而在预测标签中不属于同一簇的点对数;
FN 是 False Negative(假负例) 的数量,即在预测标签中属于同一簇,而在真实标签中不属于同一簇的点对数;
优缺点
优点:
1、对于 n_clusters 和 n_samples 的任何值,随机标签分配 FMI 得分接近于 0.0;
2、FMI 的取值范围是 [0,1],接近 0 的值代表两列聚类标签相对独立,接近 1 的值代表两列聚类标签具有一致性,0 代表两列聚类标签完全独立,1 代表两列聚类标签完全相同;
3、对于簇的结构没有作出任何假设,例如,可以用于比较 K-Means(假定 isotropic blob shapes) 与 谱聚类(可以找到具有 “folded” shapes 的聚类)的结果;
缺点:
1、由于需要正确聚类标签,在实践中几乎不可用;
5、轮廓系数
sklearn.metrics.silhouette_score
数学公式
单个样本的 Silhouette 系数:
s=b−amax(a,b)
s
=
b
−
a
m
a
x
(
a
,
b
)
a:样本与同一类别中所有其他点之间的平均距离;
b:样本与 下一个距离最近的簇 中的所有其他点之间的平均距离;
一组样本的 Silhouette 系数是每个样本的 Silhouette 系数的平均值;
优缺点
优点:
1、对于不正确的聚类分数为 -1 ,对于高密度的聚类分数为 +1,零点附近的分数表示 overlapping clusters(重叠的聚类);
2、当簇密集且分离较好时,分数更高,这与簇的标准概念有关;
缺点:
1、凸的簇的 Silhouette 系数通常比其他类型的簇更高,例如通过 DBSCAN 获得的基于密度的簇;
6、Calinski-Harabaz 指数
sklearn.metrics.calinski_harabaz_score
数学公式
s(k)=Tr(Bk)Tr(Wk)×N−kk−1 s ( k ) = T r ( B k ) T r ( W k ) × N − k k − 1
Wk=∑kq=1∑x∈Cq(x−cq)(x−cq)⊤ W k = ∑ q = 1 k ∑ x ∈ C q ( x − c q ) ( x − c q ) ⊤
Bk=∑qnq(cq−c)(cq−c)⊤ B k = ∑ q n q ( c q − c ) ( c q − c ) ⊤
N 为样本总数,k 为簇的数量, Bk B k 为类别之间的协方差矩阵, Wk W k 为类别内部数据的协方差矩阵。也就是说,类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样的Calinski-Harabasz分数会高;
优缺点
优点:
1、当簇密集且分离较好时,分数更高;
2、得分计算很快;
缺点:
1、凸的簇的 Silhouette 系数通常比其他类型的簇更高,例如通过 DBSCAN 获得的基于密度的簇;
7、总结
综上所述,只有 Silhouette Coefficient(轮廓系数)和 Calinski-Harabaz 指数不需要真实的聚类标签,这两个度量指标更推荐 Calinski-Harabaz 指数;