You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

聚类评估疑问:系统聚类数多于ground-truth时如何计算Recall等指标?

处理聚类数多于Ground Truth时的Recall/Precision/F-measure计算

Hey there! 我完全懂你现在的困惑——当你的聚类系统输出的簇数量比真实标签(ground-truth)多的时候,常规的基于匹配的度量确实会“放水”:它只盯着每个真实簇和预测簇的最佳匹配,却完全没考虑那些额外生成、找不到对应真实簇的预测簇,相当于没给系统的过度聚类行为施加任何惩罚。下面我给你拆解几种靠谱的解决思路:

1. 先做严格的一对一最优匹配

常规匹配逻辑可能只是给每个真实簇找最相似的预测簇,但当预测簇数量更多时,会有一堆多余的预测簇被忽略。这时候建议用**匈牙利算法(Kuhn-Munkres算法)**做双向的最优匹配:

  • 第一步构建一个相似度矩阵:矩阵的每一行对应一个真实簇,每一列对应一个预测簇,元素值可以用两个簇之间的Jaccard系数、匹配样本数占比,或者你学的基于匹配的度量值;
  • 用匈牙利算法找到真实簇和预测簇之间的一对一最优匹配(如果预测簇数N>真实簇数M,那么会有N-M个预测簇无法匹配到任何真实簇);
  • 这些未匹配的预测簇,就是我们要用来施加惩罚的关键。

2. 调整Recall、Precision的计算逻辑

基于上面的匹配结果,我们重新定义这三个指标的计算方式,把多余簇的影响加进去:

计算Precision(精确率)

Precision关注的是预测簇里的样本有多少真正属于对应真实簇,现在要加上对多余簇的惩罚:

  • 对于每个匹配成功的预测簇,计算该簇中属于对应真实簇的样本数 ÷ 该预测簇总样本数,得到单个簇的precision;
  • 对于未匹配的预测簇,它们的precision直接记为0(因为这些簇没有对应的真实簇,相当于全是错误聚类的样本);
  • 最终总体Precision可以用样本数加权平均:把每个预测簇的precision乘以该簇样本数占总样本数的比例,再求和;也可以用简单平均,根据你的评估需求选择。

计算Recall(召回率)

Recall关注的是真实簇里的样本有多少被正确分到对应的预测簇中:

  • 对于每个真实簇,计算被分到对应匹配预测簇的样本数 ÷ 该真实簇总样本数,得到单个簇的recall;
  • 因为真实簇数量更少,所有真实簇都能匹配到预测簇,所以总体Recall同样用样本数加权平均即可。

计算F-measure

有了调整后的Precision(P')和Recall(R'),直接用常规公式计算就行:

Fβ = (1+β²) * (P'*R') / (β²*P' + R')

通常β取1,就是常用的F1-score:

F1 = 2*(P'*R')/(P'+R')

3. 偷懒但高效的替代方案:用成熟的归一化指标

如果你觉得手动调整Recall/Precision太繁琐,其实有现成的外部评估指标已经内置了对聚类数量不匹配的惩罚:

  • 调整兰德指数(ARI):取值范围[-1,1],1表示完全匹配,0相当于随机聚类,负数比随机结果还差,它会直接惩罚聚类数量不匹配和随机聚类的情况;
  • 归一化互信息(NMI):取值范围[0,1],衡量真实标签和预测聚类之间的互信息,再除以两者熵的平均值,同样会考虑簇数量的差异。

这些指标不需要手动处理匹配逻辑,适合快速做整体评估。

举个简单的例子

假设真实簇有2个:A(10个样本)、B(10个样本);
预测簇有3个:X(8个A+2个B)、Y(2个A+7个B)、Z(1个B);

  • 用匈牙利算法匹配:A→X,B→Y,Z未匹配;
  • 单个预测簇precision:X=8/10=0.8,Y=7/9≈0.78,Z=0/1=0;
  • 总体Precision(样本加权):(100.8 +90.78 +1*0)/20 ≈ 0.751;
  • 单个真实簇recall:A=8/10=0.8,B=7/10=0.7;
  • 总体Recall(样本加权):(100.8+100.7)/20=0.75;
  • F1-score:2*(0.751*0.75)/(0.751+0.75)≈0.75;

你看,多余的Z簇直接拉低了总体Precision,相当于给过度聚类施加了惩罚,完美解决了你原来的问题。

内容的提问来源于stack exchange,提问作者practitioner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:54:44