类别不平衡的微观平均与宏观平均

数据挖掘 多类分类 评估 奥克
2021-10-09 02:47:38

我有一个由大约 30'000 个数据点和 3 个类组成的数据集。班级不平衡(第 1 班大约 5'000,第 2 班大约 10'000,第 3 班大约 15'000)。我正在构建一个用于数据分类的卷积神经网络模型。为了评估,我正在查看 AUC 和 ROC 曲线。因为我有三个班级,所以我必须使用微观或宏观平均。

为了计算微观和宏观平均 AUC 和 ROC 曲线,我使用此处描述的方法:https ://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html 微观平均 AUC / ROC 由下式计算将标签指标矩阵的每个元素视为二元预测,通过计算每个标签的指标来计算宏观平均 AUC / ROC,并找到它们的未加权平均值。在我的情况下,微观平均 AUC 通常高于宏观平均 AUC。

如果我们看一下sklearn.metrics.roc_auc_score它为此编写的average='macro'方法

这没有考虑标签不平衡。

我不确定对于微平均,他们是否使用与上面链接中描述的方法相同的方法。

用于具有类不平衡微平均或宏观平均的数据集更好吗?这意味着哪个指标不受类别不平衡的影响?在我的情况下,微观平均 AUC(0.85)高于宏观平均 AUC(0.79)。当我查看混淆矩阵时,多数类被很好地预测(因为网络可能学会了预测多数类)但少数类的预测很差(几乎与真阳性一样多的假阴性)。所以,总的来说,我认为 AUC 不应该那么高。

1个回答

问题实际上是关于理解“考虑不平衡”的含义:

  • 微观平均“考虑了不平衡”,因为结果的性能基于每个类的比例,即大类的性能对结果的影响比小类的影响更大。
  • 宏观平均“没有考虑不平衡”,因为结果性能是类的简单平均值,因此每个类都被赋予相同的权重,与它们的比例无关。

“考虑不平衡”实际上是一个好主意吗?这取决于:

  • 使用微平均,鼓励分类器专注于最大的类,可能以牺牲最小的类为代价。这可以被认为是积极的,因为这意味着更多的实例将被正确预测。
  • 使用宏观平均,鼓励分类器尝试正确识别每个类别。由于分类器通常更难识别小类,这通常会使其在大类上牺牲一些性能。这可以被认为是积极的,因为它迫使分类器正确区分类,而不是懒惰地依赖类的分布。

可以说这是一种数量与质量的困境:微观平均给出更正确的预测,宏观平均关注实际区分类别。

很多时候,人们会使用带有严重不平衡数据的宏,因为否则(使用微)分类器很容易仅依靠多数类来获得良好的性能。您的数据不是很不平衡,因此不太可能发生这种情况,但我想我仍然会在这里选择宏。