转自:https://datascience.stackexchange.com/questions/15989/micro-average-vs-macro-average-performance-in-a-multiclass-classification-settin

1.计算方式不同

A macro-average will compute the metric independently for each class and then take the average (hence treating all classes equally)

宏平均会对每类独立地计算指标(精度、召回率、F1值),并且取平均,每类都会平等计算。

a micro-average will aggregate the contributions of all classes to compute the average metric.

微平均会统计所有类的分布来计算平均指标。

In a multi-class classification setup, micro-average is preferable if you suspect there might be class imbalance (i.e you may have many more examples of one class than of other classes).

在多分类中,如果你怀疑有类不均衡存在,使用微平均更好。

2.例子

假设对于精度计算,,假设现有1对多分类任务,共有4类:

  • Class A: 1 TP and 1 FP
  • Class B: 10 TP and 90 FP
  • Class C: 1 TP and 1 FP
  • Class D: 1 TP and 1 FP

以上为测试用的数据,可以根据上式计算得到:

对于以上计算结果,由于A、C、D三类的精度是0.5,所以宏平均看起来得到了一个不错的精度为0.4,但是具有误导性,因为B中有一大部分并没有进行正确的分类;

在本例中,B类数据占了94.3%,很明显是存在类不平衡的,微平均能更好的反应结果。

3.计算方法

3.1在计算中,可以先计算类平均,然后是宏平均,之后给出总的标准差:

3.2另一种是使用加权计算的方法,权重是本类样本总数所占的比例:

3.3从以上可以看出,0.173标准差,意味着精度为0.4并不代表各类都是均匀分布的;第二种使用加权的计算方式正是微平均的本质。

最新文章

  1. Spring IOC容器创建对象的方式
  2. json.stringfy()和json.parse()
  3. 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
  4. asp.net中打印指定控件内容
  5. 地图坐标转换 -- 火星坐标与GPS坐标
  6. 《Java程序设计》第八周学习总结
  7. Memcached常用命令及使用说明(转)
  8. Flash AIR 保存与读取
  9. 《刺杀金正恩》1080p全高清无水印,附中文字幕 bt种子下载,附字母(百度网盘/360云盘)
  10. Dynamics CRM 2013 体验
  11. HDU X mod f(x)(题解注释)
  12. 初探OpenCL之Mac OS上的hello world示例
  13. Taskctl安装及配置Kettle插件
  14. RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解
  15. CentOS 安装最新版本 Git
  16. Redis初探-Redis安装
  17. NGUI图集字体
  18. LOJ #2473. 「九省联考 2018」秘密袭击
  19. python线程join
  20. ionic+cordova开发!

热门文章

  1. nginx实现限速
  2. [C++]Qt程式异常崩溃处理技巧(Win)
  3. CTF线下防御战 — 让你的靶机变成“铜墙铁壁”
  4. 【iCore4 双核心板_ARM】例程三十二:UART_IAP_ARM实验——更新升级STM32
  5. /usr/bin/uwsgi --http :8888 --wsgi-file wsgi.py --master --processes 4 --threads 2
  6. golang 中的指针
  7. 手机配置代理报错invalid host header
  8. iOS开发之--在UIWindow上展示/移除一个View
  9. kotlin 语法跟 java 的不同
  10. 【问题】Can't load AMD 64-bit .dll on a IA 32-bit platform