我使用from 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?我怎么解释?
发布于 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级,这些分数原来是很差的。
展望未来,我建议开始阅读不平衡的分类问题。如何解决这一问题有许多方法。这里的一个重要问题是,对这两个类的错误预测是否会导致不同的成本(例如,在医疗应用程序、垃圾邮件过滤器或金融交易中,这通常是如此)。因为如果他们不这样做,那么预测者总是猜测大多数类甚至可能是有意义的。但这在很大程度上取决于适用范围和方式。
发布于 2020-01-04 11:34:56
F1_{class1}+F1_{class2}+\cdot\cdot\cdot+F1_{classN}
,当您的模型对少数类的性能不佳时,D2
会导致更大的惩罚(当存在不平衡时,这正是您想要的)。F1_{class1}*W_1+F1_{class2}*W_2+\cdot\cdot\cdot+F1_{classN}*W_N
倾向于多数类(这是您通常不想要的)。结论您的模型对于1类是错误的,宏F1正确地表示了该类,并且没有进行加权,因此与数字1的区别在于
发布于 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。
https://datascience.stackexchange.com/questions/65839
复制相似问题