首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >classification_report中的宏平均和加权平均意义

classification_report中的宏平均和加权平均意义
EN

Data Science用户
提问于 2020-01-04 10:38:34
回答 4查看 48K关注 0票数 27

我使用from sklearn.metrics import classification_report中的“分类报告”来评估不平衡的二进制分类

代码语言:javascript
运行
复制
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?我怎么解释?

EN

回答 4

Data Science用户

发布于 2020-01-04 11:32:30

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

在加权平均值的情况下,性能指标被相应地加权:score_{weighted\text{-}avg} = 0.998 \cdot score_{class\text{ }0} + 0.002 \cdot score_{class\text{ }1},结果是1,由于类的不平衡。

但是,宏avg没有加权,因此是score_{macro\text{-}avg} = 0.5 \cdot score_{class\text{ }0} + 0.5 \cdot score_{class\text{ }1}

由于您的模型只是猜测几乎总是预测0级,这些分数原来是很差的。

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

票数 24
EN

Data Science用户

发布于 2020-01-04 11:34:56

  • Macro F1计算按类分隔的F1:F1_{class1}+F1_{class2}+\cdot\cdot\cdot+F1_{classN},当您的模型对少数类的性能不佳时,D2会导致更大的惩罚(当存在不平衡时,这正是您想要的)。
  • Weighted F1评分独立计算每个类的F1分数,但当将它们相加时使用一个权重,该权重取决于每个类的真正标签数:因此,F1_{class1}*W_1+F1_{class2}*W_2+\cdot\cdot\cdot+F1_{classN}*W_N倾向于多数类(这是您通常不想要的)。

结论您的模型对于1类是错误的,宏F1正确地表示了该类,并且没有进行加权,因此与数字1的区别在于

票数 4
EN

Data Science用户

发布于 2020-06-22 06:36:16

宏-avg是平均平均宏-avg是所有类的平均精度/召回/f1。在您的例子中,宏-avg=(0级的精度+1类的精度)/2,因此您的宏avg是51。加权avg是所有类中对象的/total数TP(所有类的真正数)。基于你的模型的例子。假设28400类的TP (模型识别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。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/65839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档