Contents

调整兰德指数

调整兰德指数, ARI(Adjusted Rand Index)
常用的 外部评估指标,用于衡量两个数据划分(通常是 聚类结果真实标签)之间的一致性,同时考虑了随机因素的影响

外部评估指标:只能在有标注数据的情况下使用
相反的,内部指标则不需要真实标签

核心思想

假设有一组数据,已知其 真实的分组/类别(Ground Truth),现在我们用某种聚类算法得到了一组聚类结果
ARI 要回答的问题是:聚类结果与真实标签的匹配程度有多高?算法的聚类效果怎么样?

匹配程度越高,ARI 越接近于 1,等于 1 时表示完美匹配
若 ARI 约等于 0,则表示算法的聚类结果不理想,相当于是随机划分
若 ARI 为负值,则表示聚类结果与真实标签的一致性比随机分配还差

从 RI(兰德指数)到 ARI(调整兰德指数)

兰德指数,RI(Rand Index)
RI 的计算基于 数据点对(Pairs)的划分一致性。对于数据中任意两个样本点,它们的关系在聚类结果和真实标签中只有四种情况:

关系 在真实标签中 在聚类结果中
a 属于同一类 属于同一簇
b 属于同一类 属于不同簇
c 属于不同类 属于同一簇
d 属于不同类 属于不同簇

假设有两个样本点 x、y
若 x、y 的关系是 a 或 d,则称这两个样本点是一致对
若 x、y 的关系是 b 或 c,则不是
RI 就是计算一致对的数量对占总对数的比例:

$ RI = \frac{a + d}{a + b + c + d} = \frac{a + d}{C_n^2} $

其中 $n$ 是样本总数,$C_n^2$ 就是样本点对的总数
但是 RI 存在一个问题:即使是一个随机的聚类划分,其 RI 值也不会是 0,而通常是一个正值。这使得 RI 难以在不同场景下进行公平比较,ARI 应运而生

ARI 的核心思想
将 RI 减去“随机划分情况下 RI 的期望值”,然后进行标准化,使得“完全随机”的得分在 0 附近,“完美匹配”为 1

$ ARI = \frac{RI - E[RI]}{\max(RI) - E[RI]} $

这个公式确保了 ARI 对随机性的鲁棒性,使其成为一个更可靠的指标

计算公式

ARI 的实际计算通常基于 列联表

假设真实标签有 $r$ 个类,聚类结果有 $c$ 个簇, 构建一个 $r \times c$ 的列联表 $\mathrm{N}$

聚类 1 聚类 2 聚类 c 行和
真实类 1 $n_{11}$ $n_{12}$ $n_{1c}$ $a_{1}$
真实类 2 $n_{21}$ $n_{22}$ $n_{2c}$ $a_{2}$
真实类 r $n_{r1}$ $n_{r2}$ $n_{rc}$ $a_{r}$
列和 $b_{1}$ $b_{2}$ $b_{c}$ $n$ (总数)

其中

  • $n_{ij}$:真实类别 $i$ 且聚类到簇 $j$ 的样本数
  • $a_i = \sum_{j=1}^{c} n_{ij}$:真实类别 $i$ 的总样本数(行和)
  • $b_j = \sum_{i=1}^{r} n_{ij}$:聚类簇 $j$ 的总样本数(列和)
  • $n = \sum_{i=1}^{r} \sum_{j=1}^{c} n_{ij}$:总样本数

组合数表示:$\binom{x}{2} = \frac{x(x-1)}{2}$,即 $x$ 中任取两个元素的不同方式数

ARI 公式:

$$ \text{ARI} = \frac{ \sum_{i=1}^{r} \sum_{j=1}^{c} \binom{n_{ij}}{2} - \frac{ \left[ \sum_{i=1}^{r} \binom{a_i}{2} \right] \left[ \sum_{j=1}^{c} \binom{b_j}{2} \right] }{ \binom{n}{2} } }{ \frac{1}{2} \left[ \sum_{i=1}^{r} \binom{a_i}{2} + \sum_{j=1}^{c} \binom{b_j}{2} \right] - \frac{ \left[ \sum_{i=1}^{r} \binom{a_i}{2} \right] \left[ \sum_{j=1}^{c} \binom{b_j}{2} \right] }{ \binom{n}{2} } } $$

  • 分子

    实际一致对数 - 随机期望一致对数

    • 第一项即从 【$n_{11}$ 中任取两个样本的不同方式数】 加上 【$n_{12}$ 任取两个样本的不同方式数】加上。。。以此求和得到所有一致对的数量

    • 第二项

      考虑任意一对样本(比如样本 X 和样本 Y)。在随机独立的情况下:

      它们在真实划分中在一起的概率 = $\frac{\sum_i \binom{a_i}{2}}{\binom{n}{2}}$ (因为总共有 $\binom{n}{2}$ 个样本对,其中 $\sum_i \binom{a_i}{2}$ 对在真实划分中在一起)

      它们在聚类划分中在一起的概率 = $\frac{\sum_j \binom{b_j}{2}}{\binom{n}{2}}$

      由于独立性,它们同时在两种划分中都在一起的概率 = 两个概率相乘

      总共有 $\binom{n}{2}$ 个样本对,所以 期望一致对数量 为:

      $$ E = \binom{n}{2} \times \left( \frac{\sum_i \binom{a_i}{2}}{\binom{n}{2}} \right) \times \left( \frac{\sum_j \binom{b_j}{2}}{\binom{n}{2}} \right) $$

      简化后:

      $$ E = \frac{ \left[ \sum_i \binom{a_i}{2} \right] \left[ \sum_j \binom{b_j}{2} \right] }{ \binom{n}{2} } $$

  • 分母

    最大可能一致对数 - 随机期望一致对数

    • 第一项是两个划分的 平均一致对数,可以理解为如果两个划分"完美协调"时的一致对数上限的近似

    • 第二项与分子中的随机期望项相同

特性与优点

  • 对随机性的修正

    使指标值具有明确的解释性(0 = 随机,1 = 完美)

  • 对称性

    ARI(聚类, 真实标签) = ARI(真实标签, 聚类)

  • 与簇的形状无关

    ARI 只关注样本的划分是否一致,不关心簇的几何结构
    而像轮廓系数这类内部指标受簇形状(球形、流形)影响大

  • 对簇数量不敏感

    即使聚类算法得到的簇数量与真实类别数不同,ARI 仍然能给出有意义的评估
    例如,将一个正确的簇一分为二,虽然不完美,但可能仍获得较高的 ARI 值

  • 需要真实标签

    这是一个外部指标,只能在有标注数据的情况下使用(常用于实验验证、算法对比)

代码示例(Python)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import numpy as np
from sklearn import metrics


# 示例:真实标签和两个不同的聚类结果
labels_true = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) # 3个类,每类3个样本
labels_pred_1 = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) # 完美聚类
labels_pred_2 = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2]) # 最差聚类(每个簇都包含所有类)
labels_pred_3 = np.array([0, 0, 1, 1, 2, 2, 0, 1, 2]) # 一般的聚类

print("ARI (完美匹配):", metrics.adjusted_rand_score(labels_true, labels_pred_1))
print("ARI (最差情况):", metrics.adjusted_rand_score(labels_true, labels_pred_2))
print("ARI (一般情况):", metrics.adjusted_rand_score(labels_true, labels_pred_3))

# 对比 RI
print("\nRI (完美匹配):", metrics.rand_score(labels_true, labels_pred_1))
print("RI (最差情况):", metrics.rand_score(labels_true, labels_pred_2))

输出:

1
2
3
4
5
6
ARI (完美匹配): 1.0
ARI (最差情况): 0.0  # 注意:可能是一个非常小的数,接近0
ARI (一般情况): 0.24242424242424246

RI (完美匹配): 1.0
RI (最差情况): 0.3888888888888889  # 即使最差,RI也远大于0

其他指标

  • AMI(调整互信息)

    同样是对随机性进行修正的外部指标,基于信息论

  • 同质性、完整性、V-measure

    这三个指标从不同角度评估聚类与真实标签的匹配度,V-measure 是其调和平均。它们对簇数量的不平衡更敏感

  • 轮廓系数

    内部指标,不需要真实标签,通过衡量样本自身簇的内聚度和与其他簇的分离度来评估。适用于无监督场景

总结

ARI 是一个经过标准化、修正了随机因素、用于评估聚类结果与真实标签一致性的核心指标
有监督的聚类算法评估、对比不同算法性能、或为无监督学习寻找最佳超参数(如 K-Means 的 K) 时,它是首选的评估工具之一
其值域清晰([-1, 1],随机时为 0 附近),解释性强,使得结果报告和对比非常方便