模型评估指标micro avg、macro avg和weighted avg的计算方式及区别

Python爬虫与算法

共 1585字,需浏览 4分钟

 · 2021-04-12

  在机器学习和深度学习模型评估结果中,我们经常会遇到micro avg、macro avg和weighted avg。本文将会介绍这三种模型评估指标的计算方式以及它们之间的区别。
  我们以sklearn.metrics.classification_report的输出结果作为展示,示例模型评估结果如下:

示例模型评估结果

  maro avg的中文名称为宏平均,其计算方式为每个类型的P、R的算术平均,我们以F1的macro avg为例,上述输出结果中的macro avg F1值的计算方式为:

macro avg F1 = (0.90+0.73)/2=0.815

  weighted avg的计算方式与micro avg很相似,只不过weighted avg是用每一个类别样本数量在所有类别的样本总数的占比作为权重,因此weighted avg的计算方式为:

weighted avg = 0.90*1207/1756+0.73*549/1756=0.8468

  micro avg的中文名称为微平均,是对数据集中的每一个示例不分类别进行统计建立全局混淆矩阵,然后计算相应的指标。在微平均评估指标中,样本数多的类别主导着样本数少的类,其计算公式如下:

微平均的计算公式

其中TP为被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的样本数,FP为被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的样本数。
  以下面的代码为例:
# -*- coding: utf-8 -*-
from sklearn.metrics import confusion_matrix, precision_score

y_true = ["A""A""A""A""B""B""C""C""C""C""C"]
y_pred = ["A""B""A""A""B""A""B""C""C""C""C"]
print(confusion_matrix(y_true, y_pred))
print(precision_score(y_true, y_pred, average='micro'))

输出的混淆矩阵和micro avg precision为:

[[3 1 0]
 [1 1 0]
 [0 1 4]]
0.7272727272727273

对于类别A,它的TP=3, FP=1;对于类别B,它的TP=1, FP=1;对于类别C,它的TP=4,FP=1,因此micro avg precision为:

(3+1+4)/(3+1+1+1+4+1)=0.7273

  本文的目的在于简单介绍模型评估指标micro avg、macro avg和weighted avg的区别以及它们的计算方式,网上有很多文章存在错误,应该引起重视。后面有机会再详细介绍。
  本文到此结束,感谢阅读~


浏览 169
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报