草稿
Fowlkes-Mallows 指数
用成对精确率和成对召回率的几何平均来评价聚类。
问题入口:关注“被放在一起”的样本对
Rand 指数包含 TN:参考标签不同、预测簇也不同的样本对。
有时我们更关心聚类的正向决定:“这两个样本应该放在一起。”
Fowlkes-Mallows 指数(FMI)只使用 TP、FP 和 FN。
TP / (TP + FP)
TP / (TP + FN)
TP / sqrt((TP + FP)(TP + FN))
FMI 不使用
第一个朴素想法:只看成对精确率
成对精确率(pair precision)是:
它衡量“被放在同一簇的样本对有多可信”。但它不关心那些本该同标签、却被拆开的样本对。
核心发明:平衡成对精确率和成对召回率
成对召回率(pair recall)是:
FMI 用几何平均合并二者:
等价的计数形式是:
固定样本中:
交互实验台
聚类指标预设实验台
说明: 一个混合簇和两个被拆开的真实类别会让纯度看起来高,但成对指标会暴露损失。
7/8
23/28
S=3, E=1
pair P=0.75, pair R=0.429
为什么没有 TN
TN 表示两个样本在参考标签和聚类中都被分开。它对 RI 是一种一致,但不能说明“被放在一起”的预测簇是否有用。
因此 FMI 聚焦在同簇样本对这个正向决定上。
两边都放在一起
错误合并
错误拆开
两边都分开
边界情况
如果 TP + FP = 0,说明没有任何预测同簇样本对,成对精确率不可用。
如果 TP + FN = 0,说明参考答案中没有同标签样本对,成对召回率不可用。
这两种情况下,FMI 应渲染为 不可用,不要显示 NaN。
实现草图
function fowlkesMallows(tp: number, fp: number, fn: number) {
const denominator = Math.sqrt((tp + fp) * (tp + fn));
return denominator === 0 ? null : tp / denominator;
}
复杂度
已知成对计数后,FMI 是 O(1)。直接构建成对计数是 O(n^2),也可以从列联表推导。
常见误区
- FMI 不是分类任务里的 F1,虽然二者都在平衡两个正向指标。
- FMI 不像 ARI 那样调整机会一致性。
- 把所有样本合并到一个簇会有高成对召回率,但成对精确率会变弱。
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
练习
- 为什么 FMI 不使用
TN? - 单点过度拆分预设下,FMI 会怎样?
- 哪种错误会伤害成对精确率:
FP还是FN?
图谱连接 : Fowlkes-Mallows 指数