分类报告中的宏观平均和加权平均含义

数据挖掘 分类 准确性 阶级失衡
2021-09-27 01:42:06

我使用“ classification_reportfrom sklearn.metrics import classification_report来评估不平衡的二元分类

Classification Report :
              precision    recall  f1-score   support

           0       1.00      1.00      1.00     28432
           1       0.02      0.02      0.02        49

    accuracy                           1.00     28481
   macro avg       0.51      0.51      0.51     28481
weighted avg       1.00      1.00      1.00     28481

我不清楚宏观平均和加权平均是什么意思?以及我们如何根据它们的数量接近一来阐明最佳解决方案!

我读过它:宏观平均值(平均每个标签的未加权平均值),加权平均值(平均每个标签的支持加权平均值)

但是我仍然无法根据这些值与 1 的接近程度来理解结果有多好?我该如何解释?

3个回答

您的数据集不平衡,因为 28481 个示例中有 28432 个属于 0 类(即 99.8%)。因此,您的预测器几乎总是将任何给定的样本预测为属于 0 类,从而获得非常高的分数,例如 0 类的精度和召回率以及 1 类的非常低的分数。

在加权平均的情况下,性能指标会相应地加权:

sCrewe一世GHed-一个vG=0.998sCreCl一个ss 0+0.002sCreCl一个ss 1
由于类不平衡,结果为 1。

但是,宏平均没有加权,因此

sCre一个Cr-一个vG=0.5sCreCl一个ss 0+0.5sCreCl一个ss 1

由于您的模型只是猜测几乎总是预测 0 类,因此这些分数结果很差。

展望未来,我建议开始阅读不平衡分类问题。有很多方法可以解决这个问题。这里的一个重要问题是,对这两个类别的错误预测是否会导致不同的成本(例如,在医疗应用、垃圾邮件过滤器或金融交易中通常是这种情况)。因为如果他们不这样做,那么总是猜测多数类别的预测器甚至可能是有意义的。但这在很大程度上取决于应用的领域和方式。

  • 宏 F1计算按类分隔但不使用权重进行聚合的 F1:

    F1Cl一个ss1+F1Cl一个ss2++F1Cl一个ssñ

    当您的模型在少数类别中表现不佳时,这会导致更大的惩罚(这正是您在不平衡时想要的)

  • 加权 F1 分数独立计算每个类的 F1 分数,但是当将它们加在一起时,使用的权重取决于每个类的真实标签数量:

    F1Cl一个ss1*W1+F1Cl一个ss2*W2++F1Cl一个ssñ*Wñ

    因此有利于多数派(这是你通常不想要的)

结论您的模型关于 1 类是错误的,您的宏 F1 正确表示和加权没有,因此与数字 1 不同

macro-avg 是平均平均值 macro-avg 是所有类的平均精度/召回率/F1。在您的情况下,macro-avg =(0 类精度 + 1 类精度)/2。因此您的宏平均为 51。而加权平均是总 TP(所有类的真阳性)/所有类中的对象总数。基于您的模型的示例。假设 0 类的 TP = 28400(模型识别出 28432 个给定的 28400 个对象)和 1 类的 TP = 1(模型识别出 49 个给定的 1 个对象)

0 类精度 = 0 类 TP/对象总数 = 28400/28432 = 1。

第 1 类的精度 = 第 1 类的 TP/对象总数 = 1/49 = 0.02

宏观平均 = (0 类精度 + 1 类精度)/2 = (1 + 0.02)/2 = 0.51

加权平均是所有类合并在一起的精度。加权平均=(0类TP+1类TP)/(0类总数+1类总数=(28400+1)/(28432+49)=1。