多类分类设置中的微观平均与宏观平均性能

数据挖掘 多类分类 评估
2021-09-14 19:14:53

我正在尝试具有 3 个类的多类分类设置。类分布偏斜,大部分数据属于 3 个类中的 1 个。(类标签为 1,2,3,67.28% 的数据属于类标签 1,11.99% 的数据属于类标签 2,剩下的属于类 3)

我正在这个数据集上训练一个多类分类器,我得到了以下性能:

                    Precision           Recall           F1-Score
Micro Average       0.731               0.731            0.731
Macro Average       0.679               0.529            0.565

我不知道为什么所有的微观平均表现都是平等的,而且宏观平均表现也低于微观平均。

4个回答

微观和宏观平均值(对于任何指标)将计算略有不同的事物,因此它们的解释不同。宏观平均将独立计算每个类别的指标,然后取平均值(因此平等对待所有类别),而微观平均将汇总所有类别的贡献以计算平均指标。在多类分类设置中,如果您怀疑可能存在类不平衡(即,一个类的示例可能比其他类的示例多),则微平均更可取。

为了说明原因,以精度为例。假设您有一个One-vs-All(每个示例只有一个正确的类输出)多类分类系统,测试时有四个类和以下数字:Pr=TP(TP+FP)

  • A类:1个TP和1个FP
  • B 类:10 TP 和 90 FP
  • C类:1个TP和1个FP
  • D类:1个TP和1个FP

您可以很容易地看到,而PrA=PrC=PrD=0.5PrB=0.1

  • 然后将计算宏观平均值:Pr=0.5+0.1+0.5+0.54=0.4
  • 微平均将计算:Pr=1+10+1+12+100+2+2=0.123

这些是完全不同的精度值。直观地说,在宏观平均值中,A、C 和 D 类的“良好”精度(0.5)有助于保持“不错的”整体精度(0.4)。虽然这在技术上是正确的(跨类,平均精度为 0.4),但它有点误导,因为大量示例没有正确分类。这些示例主要对应于 B 类,因此尽管它们占测试数据的 94.3%,但它们仅占平均值的 1/4。微平均值将充分捕捉此类不平衡,并将整体精度平均值降至 0.123(更符合主导 B 类 (0.1) 的精度)。

出于计算原因,有时计算类平均值然后对其进行宏观平均可能更方便。如果已知类不平衡是一个问题,有几种方法可以解决它。一种是不仅要报告宏观平均值,还要报告其标准偏差(对于 3 个或更多类)。另一种方法是计算加权宏观平均值,其中每个类对平均值的贡献由可用示例的相对数量加权。在上述场景中,我们得到:

Prmacromean=0.25·0.5+0.25·0.1+0.25·0.5+0.25·0.5=0.4 Prmacrostdev=0.173

Prmacroweighted=0.0189·0.5+0.943·0.1+0.0189·0.5+0.0189·0.5=0.009+0.094+0.009+0.009=0.123

较大的标准差(0.173)已经告诉我们,0.4 的平均值并非源于类之间的统一精度,但计算加权宏观平均值可能更容易,这本质上是计算微观平均值的另一种方式.

这是原始帖子


在微平均法中,您将系统的各个真阳性、假阳性和假阴性相加,然后应用它们来获得统计数据。

棘手,但我发现这很有趣。有两种方法可以获得信息检索和分类的平均统计量。

1. 微平均法

在微平均法中,您将系统的各个真阳性、假阳性和假阴性相加,然后应用它们来获得统计数据。例如,对于一组数据,系统的

True positive (TP1)  = 12
False positive (FP1) = 9
False negative (FN1) = 3

那么精度 (P1) 和召回率 (R1) 将为57.14%=TP1TP1+FP180%=TP1TP1+FN1

对于不同的数据集,系统的

True positive (TP2)  = 50
False positive (FP2) = 23
False negative (FN2) = 9

那么精度 (P2) 和召回率 (R2) 将为 68.49 和 84.75

现在,使用微平均方法的系统的平均精度和召回率为

Micro-average of precision=TP1+TP2TP1+TP2+FP1+FP2=12+5012+50+9+23=65.96

Micro-average of recall=TP1+TP2TP1+TP2+FN1+FN2=12+5012+50+3+9=83.78

微平均 F 分数将只是这两个数字的调和平均值。

2. 宏观平均法

该方法是直截了当的。只需取系统在不同集合上的准确率和召回率的平均值。例如,给定示例的系统的宏观平均精度和召回率是

Macro-average precision=P1+P22=57.14+68.492=62.82 Macro-average recall=R1+R22=80+84.752=82.25

宏观平均 F 分数将只是这两个数字的调和平均值。

当您想了解系统在数据集上的整体表现如何时,可以使用适用性宏观平均方法。你不应该对这个平均值做出任何具体的决定。

另一方面,当您的数据集大小不同时,微平均值可能是一种有用的度量。

在多类设置中,微平均精度和召回率始终相同。

P=cTPccTPc+cFPcR=cTPccTPc+cFNc
其中c是类标签。

由于在多类设置中计算所有错误实例,结果证明

cFPc=cFNc

因此 P = R。换句话说,每个单一的 False Prediction 将是一个类的 False Positive,每个 Single Negative 将是一个类的 False Negative。如果您将二元分类案例视为二分类并计算微平均精度和召回率,它们将是相同的。

Rahul 给出的答案是平均二进制精度和来自多个数据集的召回率。在这种情况下,微平均精度和召回率是不同的。

应该是这样的。我的研究也有同样的结果。起初看起来很奇怪。但是在对多类单标签分类器的结果进行微平均时,精度和召回率应该相同。这是因为如果您考虑错误分类 c1=c2(其中 c1 和 c2 是 2 个不同的类),则错误分类是相对于 c2 的假阳性 (fp) 和相对于 c1 的假阴性 (fn)。如果将所有类别的 fn 和 fp 相加,您将得到相同的数字,因为您将每个错误分类计算为 fp 相对于一个类别和 fn 相对于另一个类别。