图谱连接

草稿

Rand 指数

用所有无序样本对来判断聚类和参考标签是否在“放一起/分开”这件事上一致。

concept beginner machine-learningmetricsclustering

问题入口:纯度漏掉了拆分错误

固定样本的纯度很高:7/8 = 0.875。但真实的 graph 卡片被分在簇 AB,真实的 tree 卡片也被分在簇 BC

Rand 指数把问题从“每个簇的多数标签是什么”改成“每一对样本发生了什么”。

样本对问题每个无序样本对回答两个是/否问题。
TP同标签,同簇
FP异标签,同簇
FN同标签,异簇
TN异标签,异簇

第一个朴素想法:继续用簇内多数

B 同时有一个 graph 和一个 tree。纯度会给它 1 分,因为两者并列多数。

但这隐藏了一个成对错误:CyDi 被放在一起,可它们的参考标签不同。

核心发明:评价样本对是否一致

对每个无序样本对,问两个是/否问题:

  • 这两个样本的参考标签相同吗?
  • 这两个样本在同一个预测簇里吗?

于是得到成对计数:

  • TP:同标签,同簇。
  • FP:异标签,同簇。
  • FN:同标签,异簇。
  • TN:异标签,异簇。
Rand 成对计数RI 同时计入同-同和异-异两类一致。
TP3

两边都放在一起

FP1

错误合并

FN4

错误拆开

TN20

两边都分开

RI23/28 = 0.821

形式化版本

n 个样本的无序样本对数量是:

(n2)=n(n1)2\binom{n}{2}=\frac{n(n-1)}{2}

Rand 指数是成对决策一致的比例:

RI=TP+TN(n2)RI=\frac{TP+TN}{\binom{n}{2}}

固定样本中:

RI=3+2028=23280.821RI=\frac{3+20}{28}=\frac{23}{28}\approx 0.821

交互实验台

聚类指标预设实验台

说明: 一个混合簇和两个被拆开的真实类别会让纯度看起来高,但成对指标会暴露损失。

纯度0.875

7/8

Rand 指数0.821

23/28

调整 Rand 指数0.444

S=3, E=1

Fowlkes-Mallows 指数0.567

pair P=0.75, pair R=0.429

TP3
FP1
FN4
TN20

无脚本静态表:

固定样本的成对计数
TP3
FP1
FN4
TN20
TOTAL28

正确性直觉

每一对样本恰好属于 TPFPFNTN 之一。分子 TP + TN 正好数出两个划分在“放一起/分开”上做出同样决定的样本对。

局限:真负例可能太多

类别很多时,大多数样本对可能本来就标签不同。一个聚类即使没有很好找回同标签组,也可能得到很多 TN

所以下一个节点会调整机会一致性。

预设对比过度拆分和过度合并会让四个指标产生不同反应。
固定样本

Purity: 0.875

RI: 0.821

ARI: 0.444

FMI: 0.567

完全匹配

Purity: 1

RI: 1

ARI: 1

FMI: 1

单点过度拆分

Purity: 1

RI: 0.75

ARI: 0

FMI: 不可用

全部合并

Purity: 0.375

RI: 0.25

ARI: 0

FMI: 0.5

实现草图

function randIndex(items: { label: string; cluster: string }[]) {
  let tp = 0, fp = 0, fn = 0, tn = 0;

  for (let i = 0; i < items.length; i += 1) {
    for (let j = i + 1; j < items.length; j += 1) {
      const sameLabel = items[i].label === items[j].label;
      const sameCluster = items[i].cluster === items[j].cluster;
      if (sameLabel && sameCluster) tp += 1;
      else if (!sameLabel && sameCluster) fp += 1;
      else if (sameLabel && !sameCluster) fn += 1;
      else tn += 1;
    }
  }

  const total = tp + fp + fn + tn;
  return total === 0 ? null : (tp + tn) / total;
}

复杂度

直接枚举样本对是 O(n^2) 时间,额外计数空间是 O(1)。如果已经有列联表,也可以用组合数从表格中计算。

常见误区

  • Rand 指数里的 TP/FP/FN/TN 是样本对计数,不是单个分类样本。
  • TN 表示“两边都分开”,不是“这个样本是负类”。
  • 高 RI 仍然可能需要机会调整。

练习

  1. 固定样本中唯一的 FP 是哪一对?
  2. 为什么有四个 FN 样本对?
  3. 为什么 RI 使用 TN,而 FMI 不使用?

图谱连接 : Rand 指数