机器学习学习笔记(4)——macro-F1与micro-F1

本文以我自己的实验数据来作为样例说明何为macro F1与micro F1

对了宝贝儿们,卑微小李的公众号【野指针小李】已开通,期待与你一起探讨学术哟~摸摸大!

1 前置知识

关于F1 score的内容如果还不清楚的朋友,可以参考我的上一篇博客:《机器学习学习笔记(1)——错误率、精度、准确率、召回率、F1度量

这里就只简单的提一下核心的混淆矩阵与公式:

混淆矩阵
F1 score的公式:

F 1 = 2 P R P + R F1 = \frac{2 P R}{P + R} F1=P+R2PR

其中: P P P是查准率(precision), R R R是查全率(recall),相关公式如下:

P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP

R = T P T P + F N R = \frac{TP}{TP+FN} R=TP+FNTP

2 macro-F1与micro-F1

可能许多刚看到这里的同学会有疑问:macro-F1,micro-F1与F1的区别何在呢?他们的区别在于macro-F1与micro-F1是针对多类别的任务,而F1只针对单个类的任务

以我实验为例:

实验数据
这是一个情感分析的任务,我做的是三分类,i.e. 情感值给分为positive,neural,negative。

大家看到这里估计有头绪了,就是说每一个类别都要计算相应的TP,FN,FP值。我们以positive来举例,就是说:

  1. 真实值为positive,预测值为positive的数据有1502条(TP);
  2. 真实值为neural或negative,预测值为positive的数据有1188条(FP);
  3. 真实值为positive,预测值为neural或negative的数据有1025条(FN);

其他两个类别同理。

我们由此可以构建出三个混淆矩阵(由于F1 score中不需要TN,所以我没有统计):

positive的混淆矩阵

neural的混淆矩阵
negative的混淆矩阵

如果我们只考虑某一个类别(比如positive),那么直接将positive这个类别中的数据代入到F1 score的公式计算即可;但是如果我们要考虑这三个类别的F1 score,那么就要用到macro-F1或者micro-F1

这里先说两者的使用场景,再说计算方式:

2.1 使用场景

  • micro-F1:在计算公式中考虑到了每个类别的数量,所以适用于数据分布不平衡的情况;但同时因为考虑到数据的数量,所以在数据极度不平衡的情况下,数量较多数量的类会较大的影响到F1的值;
  • macro-F1:没有考虑到数据的数量,所以会平等的看待每一类(因为每一类的precision和recall都在0-1之间),会相对受高precision和高recall类的影响较大

2.2 计算方法

  • micro-F1:将每个类别的TP、FP、FN分别对应求和,计算总的P和R,最后求得的F1值时micro-F1。以上面的实验栗子来看:
    T P = 1502 + 112 + 1685 = 3299 F P = 1188 + 281 + 1656 = 3125 F N = 1025 + 1370 + 730 = 3125 P = 3299 3299 + 3125 = 0.5135 R = 3299 3299 + 3125 = 0.5135 m i c r o F 1 = 2 × 0.5135 × 0.5135 0.5135 + 0.5135 = 0.5135 TP=1502 + 112 + 1685=3299 \\ FP=1188 + 281 + 1656=3125 \\ FN=1025+1370 + 730 = 3125 \\ P=\frac{3299}{3299 + 3125}=0.5135 \\ R = \frac{3299}{3299 + 3125} = 0.5135 \\ microF1=\frac{2×0.5135×0.5135}{0.5135+0.5135}=0.5135 TP=1502+112+1685=3299FP=1188+281+1656=3125FN=1025+1370+730=3125P=3299+31253299=0.5135R=3299+31253299=0.5135microF1=0.5135+0.51352×0.5135×0.5135=0.5135
  • macro-F1:分别计算每个类别的F1,最后求算数平均数得到的值就是macro-F1。以上面的实验栗子来看:
    P ( n e g a t i v e ) = 1502 1502 + 1188 = 0.5584 R ( n e g a t i v e ) = 1502 1502 + 1025 = 0.5944 F 1 ( n e g a t i v e ) = 2 × 0.5584 × 0.5944 0.5584 + 0.5944 = 0.5758 . . . F 1 ( p o s i t i v e ) = 0.5855 . . . F 1 ( n e u r a l ) = 0.1195 m a c r o F 1 = 1 3 × ( 0.5758 + 0.5855 + 0.1195 ) = 0.4269 P(negative)=\frac{1502}{1502+1188}= 0.5584 \\ R(negative)=\frac{1502}{1502+1025}= 0.5944 \\ F1(negative)=\frac{2×0.5584×0.5944}{0.5584+0.5944}=0.5758 \\ ... \\ F1(positive) = 0.5855 \\ ... \\ F1(neural) = 0.1195 \\ macroF1 = \frac{1}{3} × (0.5758+0.5855+0.1195)=0.4269 P(negative)=1502+11881502=0.5584R(negative)=1502+10251502=0.5944F1(negative)=0.5584+0.59442×0.5584×0.5944=0.5758...F1(positive)=0.5855...F1(neural)=0.1195macroF1=31×(0.5758+0.5855+0.1195)=0.4269

3 总结

macro-F1与micro-F1用在多类别任务中计算总体的F1 score,F1 score是单纯的应用在某一个类别中。而macro-F1不考虑数量,受高recall和高precision影响;micro-F1考虑了数量,受数据数量影响。

4 参考

[1]谢为之.对多分类数据的模型比较选择,应该参考什么指标?[EB/OL].https://www.zhihu.com/question/51470349/answer/439218035,2018-7-10.
[2]dazhuanlan.com.关于如何计算多分类任务中的 precsion、recall、F1 指标[EB/OL],2019-11-17.
[3]田海山.Macro-F1 Score与Micro-F1 Score[EB/OL].https://zhuanlan.zhihu.com/p/64315175,2019-4-30.
[4]TroyeJcan.macro-F1和micro-F1得分分别适用于什么场景?[EB/OL].https://www.zhihu.com/question/332571344,2020-5-4.

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值