调整兰德系数(Adjusted Rand Index, ARI)是一种用于评估聚类结果与真实标签之间相似度的指标。它在传统兰德系数(Rand Index, RI)的基础上进行了调整,考虑了随机聚类的期望值,因此能够更公平地评估聚类结果。
调整兰德系数的计算步骤
1. 构建混淆矩阵
给定两个聚类结果:真实标签 ( T ) 和聚类标签 ( C ),构建一个混淆矩阵 ( M ),其中 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。
2. 计算组合数
- ( a ):同属于一个簇且同属于一个真实类的样本对数。
- ( b ):同属于一个簇但不属于一个真实类的样本对数。
- ( c ):不属于一个簇但同属于一个真实类的样本对数。
- ( d ):不属于一个簇且不属于一个真实类的样本对数。
3. 计算兰德系数
兰德系数 ( RI ) 的计算公式为:
[ RI = \frac{a + d}{a + b + c + d} ]
4. 计算调整兰德系数
调整兰德系数 ( ARI ) 的计算公式为:
[ ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} ]
其中:
- (\text{Index} = a + d)
- (\text{Expected Index}) 和 (\text{Max Index}) 的计算如下:
详细公式
混淆矩阵
假设有 ( n ) 个样本,真实标签 ( T ) 有 ( k ) 个类别,聚类标签 ( C ) 有 ( m ) 个簇。混淆矩阵 ( M ) 的元素 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。
组合数计算
[ a = \sum_{ij} \binom{M_{ij}}{2} ]
[ b = \sum_{i} \binom{\sum_{j} M_{ij}}{2} - a ]
[ c = \sum_{j} \binom{\sum_{i} M_{ij}}{2} - a ]
[ d = \binom{n}{2} - (a + b + c) ]
调整兰德系数计算
[ 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]} ]
示例计算
假设我们有以下数据:
真实标签 ( T ):[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
聚类标签 ( C ):[1, 1, 0, 0, 2, 2, 1, 1, 3, 3]
构建混淆矩阵:
[ 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_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。
计算组合数:
( a ):同属于一个簇且同属于一个真实类的样本对数:
[ 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 ]
( b ):同属于一个簇但不属于一个真实类的样本对数:
[ 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 ]
( c ):不属于一个簇但同属于一个真实类的样本对数:
[ 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 ]
( d ):不属于一个簇且不属于一个真实类的样本对数:
[ d = \binom{n}{2} - (a + b + c) = \binom{10}{2} - (5 + 4 + 0) = 45 - 9 = 36 ]
计算兰德系数:
[ RI = \frac{a + d}{a + b + c + d} = \frac{5 + 36}{5 + 4 + 0 + 36} = \frac{41}{45} \approx 0.9111 ]
计算调整兰德系数:
期望指数 ( \text{Expected Index} ):
[ \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} = 1 ]
最大指数 ( \text{Max Index} ):
[ \text{Max Index} = \frac{1}{2} \left( \sum_{i} \binom{\sum_{j} M_{ij}}{2} + \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right) = \frac{1}{2} (5 + 9) = 7 ]
调整兰德系数 ( ARI ):
[ ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} = \frac{41 - 1}{45 - 1} = \frac{40}{44} \approx 0.9091 ]
调整兰德系数示例
调整兰德系数(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]RI−E[RI]
其中,RI 是兰德系数(Rand Index), E [ R I ] E[RI] E[RI] 是期望的兰德系数。
示例
假设我们有一个包含真实标签和聚类结果的数据集。我们将使用 sklearn
库来计算调整兰德系数。
示例数据
python
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}")
输出结果
plaintext
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,表示随机分配。