不平衡类问题的宏观或微观平均

数据挖掘 机器学习 评估 阶级失衡
2021-09-30 01:37:01

当数据不平衡时,使用宏观平均值还是微观平均值的问题一直存在。

一些谷歌搜索显示,许多博主倾向于说微平均是首选方式,例如:

  1. 如果存在类不平衡问题,则最好使用微平均。
  2. 另一方面,当您的数据集大小不同时,微平均值可能是一种有用的度量。

这个论坛中的一个类似问题提出了一个类似的答案。

然而,这似乎很违反直觉。例如,如果我们有一个具有 90%-10% 类分布的数据集,那么基线分类器可以通过分配多数类标签来实现 90% 的微平均准确度。

书籍证实了这一点,例如信息检索简介说(第 282 页)“因此,微平均结果实际上是测试集合中大类有效性的衡量标准。要了解小类的有效性,您应该计算宏平均结果。”

最后,关于使用哪种度量的真正决定应该基于类的相对错误分类成本。但是快速浏览一下互联网似乎建议使用微平均。这是正确的还是误导的?

4个回答

指标的选择取决于如何对类的重要性进行排名以及对分类器的重视程度。让我们看看你的例子:

例如,如果我们有一个具有 90%-10% 类分布的数据集,那么基线分类器可以通过分配多数类标签来实现 90% 的准确度。

一个小的修正是,这样你可以达到 90%的微平均精度。如果您的目标只是让您的分类器最大化其命中率并最小化其未命中率,那么这就是要走的路。

但是,如果你最看重少数类,你应该切换到宏观平均准确率,在那里你只会得到 50% 的分数。该指标对类的不平衡不敏感,并将它们视为平等。

在许多应用中,后者是优选的。想象一个分类问题,旨在诊断出现在 1% 人口中的疾病。即使分类器可以在任务上达到 99% 的微平均准确率,它也能始终预测患者是健康的,这有什么好处呢?

微平均之所以盛行,是因为在大多数任务中,我们只对最大化分类器做出的正确预测的数量感兴趣。在这些任务中,没有一个类比其他类更重要。

我想建议另一个依赖项。

有时,预测大类相对容易。这意味着,您将尝试的每个分类器(具有合理的预测能力和与您的问题相匹配的分类器)都会在大类上获得较高的 f1-score,但在预测小类(f1-score)时做得很差。所以当你对小类的预测很重要而大类的预测相对容易时,我建议只使用小类的f1-score作为主要指标,或者使用Precision-Recall AUC(PR-AUC ) 作为主要指标。

这是我研究的一个例子:这是我在一个分类器中得到的分类报告。 在此处输入图像描述

就我而言,0 类比 1 类大 4 倍。我玩过的所有分类器在 0 类上都给了我很高的 f1 分数(高于 0.9),但在 1 类上大约是 F1 分数的 0.7。我有兴趣预测1 级,我可以在预测 0 级时遭受一点损失。

因此,就我而言,分类器之间的主要区别在于它们在 1 类的 f1 分数上的表现如何,因此我将 1 类的 f1 分数作为我的主要评估指标。我的次要指标是 PR-AUC,再次,关于 1 类预测(只要我的分类器在 0 类上保持良好的表现,而且他们都做到了)。优化这些指标比 f1 指标的平均版本更能反映我的需求。

我可以考虑宏平均 F1,它是不平衡情况下的可靠指标。但是,这表明我的预测能力是 82%,因为我知道在我的情况下,它不是区分好分类器和坏分类器的最佳指标。

因此,只要真实地处理您的数据和您的任务。了解评估指标是您选择反映您需求的最佳分类器的工具,它不一定是具有最佳数字的分类器。

对于不平衡的类问题:

  1. 使用微平均将您的指标加权到最大的指标。

  2. 使用宏观平均将您的指标加权为最小的指标

F1 'micro' - micro 对每个样品进行平均称重

     1类占数据的40%,这个类的F1是0.8类2占60%的数据,这个类的F1是0.2

     0.8 x 40% + 0.2 x 60% = 0.44

F1 'macro' - 宏对每个类的权重相等

     第 1 类:第 1 类的 F1 结果 = 0.8 第 2 类的 F1 结果 = 0.2。

我们做通常的算术平均值:      (0.8 + 0.2) / 2 = 0.5

无论样本如何在两个类别之间划分,它都是一样的。选择取决于您想要实现的目标。如果您担心班级不平衡,我建议您使用“宏”。