调整兰德系数-评估聚类效果的指标

调整兰德系数(Adjusted Rand Index, ARI)是一种用于评估聚类结果与真实标签之间相似度的指标。它在传统兰德系数(Rand Index, RI)的基础上进行了调整,考虑了随机聚类的期望值,因此能够更公平地评估聚类结果。

调整兰德系数的计算步骤

1. 构建混淆矩阵

给定两个聚类结果:真实标签 ( T ) 和聚类标签 ( C ),构建一个混淆矩阵 ( M ),其中 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

2. 计算组合数

  • ( a ):同属于一个簇且同属于一个真实类的样本对数。
  • ( b ):同属于一个簇但不属于一个真实类的样本对数。
  • ( c ):不属于一个簇但同属于一个真实类的样本对数。
  • ( d ):不属于一个簇且不属于一个真实类的样本对数。

3. 计算兰德系数

兰德系数 ( RI ) 的计算公式为:
R I = a + d a + b + c + d RI = \frac{a + d}{a + b + c + d} RI=a+b+c+da+d

4. 计算调整兰德系数

调整兰德系数 ( ARI ) 的计算公式为:
A R I = Index − Expected Index Max Index − Expected Index ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} ARI=Max IndexExpected IndexIndexExpected Index

其中:

  • Index = a + d \text{Index} = a + d Index=a+d
  • Expected Index \text{Expected Index} Expected Index Max Index \text{Max Index} Max Index的计算如下:

详细公式

混淆矩阵

假设有 ( n ) 个样本,真实标签 ( T ) 有 ( k ) 个类别,聚类标签 ( C ) 有 ( m ) 个簇。混淆矩阵 ( M ) 的元素 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

组合数计算

a = ∑ i j ( M i j 2 ) a = \sum_{ij} \binom{M_{ij}}{2} a=ij(2Mij)

b = ∑ i ( ∑ j M i j 2 ) − a b = \sum_{i} \binom{\sum_{j} M_{ij}}{2} - a b=i(2jMij)a

c = ∑ j ( ∑ i M i j 2 ) − a c = \sum_{j} \binom{\sum_{i} M_{ij}}{2} - a c=j(2iMij)a

d = ( n 2 ) − ( a + b + c ) d = \binom{n}{2} - (a + b + c) d=(2n)(a+b+c)

调整兰德系数计算

A R I = ∑ i j ( M i j 2 ) − [ ∑ i ( ∑ j M i j 2 ) ∑ j ( ∑ i M i j 2 ) ( n 2 ) ] 1 2 [ ∑ i ( ∑ j M i j 2 ) + ∑ j ( ∑ i M i j 2 ) ] − [ ∑ i ( ∑ j M i j 2 ) ∑ j ( ∑ i M i j 2 ) ( n 2 ) ] ARI = \frac{\sum_{ij} \binom{M_{ij}}{2} - \left[ \frac{\sum_{i} \binom{\sum_{j} M_{ij}}{2} \sum_{j} \binom{\sum_{i} M_{ij}}{2}}{\binom{n}{2}} \right]}{\frac{1}{2} \left[ \sum_{i} \binom{\sum_{j} M_{ij}}{2} + \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right] - \left[ \frac{\sum_{i} \binom{\sum_{j} M_{ij}}{2} \sum_{j} \binom{\sum_{i} M_{ij}}{2}}{\binom{n}{2}} \right]} ARI=21[i(2jMij)+j(2iMij)][(2n)i(2jMij)j(2iMij)]ij(2Mij)[(2n)i(2jMij)j(2iMij)]

示例计算

假设我们有以下数据:

真实标签 ( T ):[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
聚类标签 ( C ):[1, 1, 0, 0, 2, 2, 1, 1, 3, 3]

构建混淆矩阵:
M = [ 0 2 0 0 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 2 ] M = \begin{bmatrix} 0 & 2 & 0 & 0\\ 2 & 0 & 0 & 0\\ 0 & 0 & 2 & 0\\ 0 & 2 & 0 & 0\\ 0 & 0 & 0 & 2 \end{bmatrix} M= 02000200200020000002

其中,( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

计算组合数:

( a ):同属于一个簇且同属于一个真实类的样本对数:

a = ∑ i j ( M i j 2 ) = ( 2 2 ) + ( 2 2 ) + ( 2 2 ) + ( 2 2 ) + ( 2 2 ) = 1 + 1 + 1 + 1 + 1 = 5 a = \sum_{ij} \binom{M_{ij}}{2} = \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} = 1 + 1 + 1 + 1 + 1 = 5 a=ij(2Mij)=(22)+(22)+(22)+(22)+(22)=1+1+1+1+1=5

( b ):同属于一个簇但不属于一个真实类的样本对数:

b = ∑ j ( ∑ i M i j 2 ) − a = ( ( 4 2 ) + ( 2 2 ) + ( 2 2 ) + ( 2 2 ) ) − 5 = ( 6 + 1 + 1 + 1 ) − 5 = 4 b = \sum_{j} \binom{\sum_{i} M_{ij}}{2} - a = \left( \binom{4}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} \right) - 5 = (6 + 1 + 1 + 1) - 5 = 4 b=j(2iMij)a=((24)+(22)+(22)+(22))5=(6+1+1+1)5=4

( c ):不属于一个簇但同属于一个真实类的样本对数:

c = ∑ i ( ∑ j M i j 2 ) − a = ( ( 2 2 ) + ( 2 2 ) + ( 2 2 ) + ( 2 2 ) + ( 2 2 ) ) − 5 = ( 1 + 1 + 1 + 1 + 1 ) − 5 = 0 c = \sum_{i} \binom{\sum_{j} M_{ij}}{2} - a = \left( \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} \right) - 5 = (1 + 1 + 1 + 1 + 1) - 5 = 0 c=i(2jMij)a=((22)+(22)+(22)+(22)+(22))5=(1+1+1+1+1)5=0

( d ):不属于一个簇且不属于一个真实类的样本对数:

d = ( n 2 ) − ( a + b + c ) = ( 10 2 ) − ( 5 + 4 + 0 ) = 45 − 9 = 36 d = \binom{n}{2} - (a + b + c) = \binom{10}{2} - (5 + 4 + 0) = 45 - 9 = 36 d=(2n)(a+b+c)=(210)(5+4+0)=459=36

计算兰德系数:

R I = a + d a + b + c + d = 5 + 36 5 + 4 + 0 + 36 = 41 45 ≈ 0.9111 RI = \frac{a + d}{a + b + c + d} = \frac{5 + 36}{5 + 4 + 0 + 36} = \frac{41}{45} \approx 0.9111 RI=a+b+c+da+d=5+4+0+365+36=45410.9111

计算调整兰德系数:

期望指数 ( \text{Expected Index} ):

Expected Index = ( ∑ i ( ∑ j M i j 2 ) ) ( ∑ j ( ∑ i M i j 2 ) ) ( n 2 ) = 5 × 9 45 + 36 × 40 45 = 33 \text{Expected Index} = \frac{\left( \sum_{i} \binom{\sum_{j} M_{ij}}{2} \right) \left( \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right)}{\binom{n}{2}} = \frac{5 \times 9}{45} + \frac{36 \times 40}{45}= 33 Expected Index=(2n)(i(2jMij))(j(2iMij))=455×9+4536×40=33

最大指数 ( \text{Max Index} ):

Max Index = ( n 2 ) = 45 \text{Max Index} = {\binom{n}{2}} = 45 Max Index=(2n)=45

调整兰德系数 ( ARI ):

A R I = Index − Expected Index Max Index − Expected Index = 41 − 33 45 − 33 = 8 12 ≈ 0.6667 ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} = \frac{41 - 33}{45 - 33} = \frac{8}{12} \approx 0.6667 ARI=Max IndexExpected IndexIndexExpected Index=45334133=1280.6667

调整兰德系数示例

调整兰德系数(Adjusted Rand Index, ARI)是一种用于评估聚类结果与真实标签之间一致性的指标。它考虑了聚类中的随机性,提供了一个校正后的分数,使得即使在随机标签的情况下,ARI的期望值也接近于零。

调整兰德系数的计算

调整兰德系数的公式如下:

A R I = R I − E [ R I ] max ⁡ ( R I ) − E [ R I ] ARI = \frac{{RI - E[RI]}}{{\max(RI) - E[RI]}} ARI=max(RI)E[RI]RIE[RI]

其中,RI 是兰德系数(Rand Index), E [ R I ] E[RI] E[RI] 是期望的兰德系数。

示例

假设我们有一个包含真实标签和聚类结果的数据集。我们将使用 sklearn 库来计算调整兰德系数。

示例数据

from sklearn.metrics import adjusted_rand_score

# 真实标签
true_labels = [0, 0, 1, 1, 2, 2, 3, 3]

# 聚类结果 1
cluster_labels_1 = [0, 0, 1, 1, 2, 2, 3, 3]

# 聚类结果 2
cluster_labels_2 = [0, 0, 1, 1, 3, 3, 2, 2]

# 聚类结果 3
cluster_labels_3 = [0, 1, 0, 1, 2, 3, 2, 3]

# 计算调整兰德系数
ari_1 = adjusted_rand_score(true_labels, cluster_labels_1)
ari_2 = adjusted_rand_score(true_labels, cluster_labels_2)
ari_3 = adjusted_rand_score(true_labels, cluster_labels_3)

print(f"ARI for cluster_labels_1: {ari_1:.2f}")
print(f"ARI for cluster_labels_2: {ari_2:.2f}")
print(f"ARI for cluster_labels_3: {ari_3:.2f}")

输出结果

ARI for cluster_labels_1: 1.00
ARI for cluster_labels_2: 0.57
ARI for cluster_labels_3: 0.00

解释
ARI for cluster_labels_1: 1.00
这个结果表明聚类结果与真实标签完全一致,调整兰德系数为1,表示完美匹配。

ARI for cluster_labels_2: 0.57
这个结果表明聚类结果与真实标签有一定的一致性,但并不完美。调整兰德系数为0.57,表示中等的一致性。

ARI for cluster_labels_3: 0.00
这个结果表明聚类结果与真实标签几乎没有一致性,调整兰德系数为0,表示随机分配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

samoyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值