Micro average和Macro average在多分类问题中的区别

原文链接:网页链接      


Macro-averages和Micro-averages(对于任何评价指标)计算方式有所不同,所以对它们的解释也不同。Macro-average会分别计算每个类别的metric,然后求它们的平均值(它认为每个类别是等同的)。   而Micro-average将汇总所有类别的贡献以计算平均指标。所以如果你处理的多分类问题是类偏斜的,应该使用Micro-average。


为了更加清晰地解释 Macro-averages和Micro-averages的区别,我们拿查准率Pr=TP/(TP+FP)来举例。

假设我们有一个四分类问题,经过测试集测试后的结果如下:

  • Class A: 1 TP and 1 FP

  • Class B: 10 TP and 90 FP

  • Class C: 1 TP and 1 FP

  • Class D: 1 TP and 1 FP

很容易可以计算出PrA=PrC=PrD=0.5PrB=0.1


  • A macro-average will then compute: Pr=0.5+0.1+0.5+0.54=0.4


  • A micro-average will compute: Pr=1+10+1+12+100+2+2=0.123



可以看出这两种方法计算出的值差距很大。直观地,在macro-average中,类别A,C,D的“良好”精度0.5有助于保持体面的整体精度0.4,这在技术上来说是正确的,但它有点误导,因为大量的例子没有被正确分类,这些例子主要来自于类别B,它们构成了94.3%的测试数据,但它们仅对平均值贡献了四分之一。micro-average充分捕捉到了类偏斜问题,把整体精度平均值降到了0.123(更加符合主导类B的精度(0.1))。


如果已知数据集存在类偏斜问题,还有几种方法解决。一种就是不仅报告macro-average,还报告标准差(3个类别以上)。

另一种就是计算带权重的macro-average,每个类对均值的贡献按照每个类别的相对数量加权。按照上述方法,我们可以得到:


Prmacromean=0.250.5+0.250.1+0.250.5+0.250.5=0.4

Prmacrostdev=0.173

Prmacroweighted=0.01890.5+0.9430.1+0.01890.5+0.01890.5=0.009+0.094+0.009+0.009=0.123


0.173这么大的标准差表明0.4的均值并不是来自于一个均衡的类间精确度。计算加权macro-average更加简单,其实它是micro-average的另一种计算方式。

上面的计算方式不是计算macro-weighted,而是计算的micro-average。

micro-average的权重wi是预测为第i类的数目/样本总数,macro-average的权重wi是实际为第i类的数目/样本总数。

-----------------------------------------------------------

后续:现在突然发现上面的说法是错误的,Macro-average认为每个类别是等同的,那么就应该将它用于样本偏斜问题。

上面举的例子不恰当,上面的例子是算法对于多数类的预测不准确,对少数类的预测很准确,这不符合现实。现实往往是对于多数类预测得准确,忽视少数类。

我们更加关注的少数类的预测正确率,正常情况下的预测是这样的,以癌症举例

良性:TP=990 FP=9

恶性:TP=1 FP=9

则P良=990/999=99.1%,P恶=1/10=10%

Macro-average=(99.1%+10%)/2=54.55%

Micro-average=(990+1)/(990+9+1+9)=99.1%

明显对于小样本问题使用Micro-average不正确。宏平均指标Macro相对微平均指标Micro而言受小类别的影响更大。


评论

Live Sex Cams Free