准确率、精确率、召回率、F1-score

前言

准确率、精确率、召回率是由F1-score这个评估指标牵扯而出,而这个评估指标经常用在分类效果的评测上,所以想着学学。在学习F1-score过程中,看到F1-score的定义,然后又引出了一些其他的问题。

1. F1-score

F1-score 是一种综合度量分类模型性能的指标,将模型的精确率(precision)和召回率(Recall) 通过加权的方式合并,适用于正负样本不均衡的场景。

1. 分类问题基本概念

先要了解了解什么叫做TP、FP、FN、TN。因为后面的定义会用到。根据以下这个表格就比较好理解了,正例负例是问题一开始定义的(正 Positives,负 Negatives),然后预测正确与否就决定了True 和 False。

实际正例实际负例
预测正例True Positives(TP)False Negatives(FN)
预测负例False Positives(FP)True Negatives(TN)

2. 准确率 Accuracy 、精确率 precision 、 召回率 Recall

针对分类模型的性能,有三个主要的评估指标。我一开始从准确率和精确率的含义去看,看的晕晕的,后来先试着从词的字面去理解,然后再通过例子理解之后就通了许多。

2.1. 准确率

从字面意思上理解准确率,就是预测的准确程度。那自然包含了正例与负例,因此准确率是正例与负例都考虑,表示预测正确的正、负例占总预测数量的比例,用公式表示为:
ACC=TP+TNTP+TN+FP+FNACC = \frac{TP+TN}{TP+TN+FP+FN}ACC=TP+TN+FP+FNTP+TN

2.2. 精确率

从字面意思上理解精确率,就是精确程度,精确嘛,那一般是考虑的正面,正向的精度,因此精确率只针对正例,表示预测正确的正例数量占预测正确正、负例数量的比例,表示用公式表示:
Precision=TPTP+TN Precision = \frac{TP}{TP+TN} Precision=TP+TNTP

2.3. 召回率

从字面意思上理解召回率,就是在预测的结果里成功召回了多少,召回率也只针对正例,表示预测的正确的正例的数量占实际正例的数量的比例,用公式表示为
Recall=TPTP+NP Recall=\frac{TP}{TP+NP} Recall=TP+NPTP

3. F1-score 计算

回到一开始提到的F1值,它的定义为:将模型的精确率(precision)和召回率(Recall) 通过加权的方式合并。因此,它的公式可以表示为:
F1=2×Precision×RecallPrecision+Recall F1=\frac{2×Precision×Recall}{Precision+Recall} F1=Precision+Recall2×Precision×Recall

准确率比较好理解,就不举例了,主要举例说明Precision以及Recall。还有举例说明若有多个类别,如何计算F1值。

4. 举例说明

4.1. 红球例子

一个袋子里有 100 个球,其中:

  • 红球(正)有 20 个
  • 蓝球(负)有 80 个

你想“只”抓出红球,结果抓出了 30 个球,其中:

  • 抓到的红球(TP) = 10
  • 抓到的蓝球(误抓,FN) = 20
  • 没抓到的红球(漏抓,FP) = 10

因此精确率可以通过公式计算为 10/30 * 100% = 33%;召回率通过计算则为 10(TP)/ 20 (TP+FP) * 100% = 50%。


4.2. 情感分类任务

假设有一个情感分类任务,情感类别包括:

  1. 正面(Positive)
  2. 负面(Negative)
  3. 中立(Neutral)

实际数据分布为:

  • 正面评论:100条
  • 负面评论:100条
  • 中立评论:100条

模型的预测结果:
模型预测结果中,有 90 条正面评论(60条为实际正面、30条为实际中立),110条负面评论(80条为实际负面、30条为实际中立),100条中立评论(50条为实际中立,20条为实际正面,30条为实际负面)

此时可以将总评分改为使用多个维度的F1-score并取平均,公式为
score=1N∑i=1NF1i score = \frac{1}{N} \sum_{i=1}^{N}F1_{i} score=N1i=1NF1i
N为类别总数,总共3个类别。当正面评论为正(P)时,负面评论以及中立评论为负(N),当负面评论为正(P)时,正面评论以及中立评论为负(N),当中立评论为正(P)时,负面评论以及正面评论为负(N),因此可以计算score为

a. 正面评论的 F1-score
  • TP:60;
  • FP:30;
  • FN:40 条正面评论被漏掉了(100 - 60)。

精确率(Precision)

Precisionpositive=TPTP+FP=6060+30=6090=0.67 \text{Precision}_{\text{positive}} = \frac{\text{TP}}{\text{TP} + \text{FP}} = \frac{60}{60 + 30} = \frac{60}{90} = 0.67 Precisionpositive=TP+FPTP=60+3060=9060=0.67
召回率(Recall)
Recallpositive=TPTP+FN=6060+40=60100=0.60 \text{Recall}_{\text{positive}} = \frac{\text{TP}}{\text{TP} + \text{FN}} = \frac{60}{60 + 40} = \frac{60}{100} = 0.60 Recallpositive=TP+FNTP=60+4060=10060=0.60

F1-score
F1positive=2×0.67×0.600.67+0.60≈0.63 F1_{\text{positive}} = 2 \times \frac{0.67 \times 0.60}{0.67 + 0.60} \approx 0.63 F1positive=2×0.67+0.600.67×0.600.63

b. 负面评论的 F1-score
  • TP:80;
  • FP:30 ;
  • FN:20 条负面评论被漏掉了(100 - 80)。

精确率(Precision)
Precisionnegative=TPTP+FP=8080+30=80110≈0.73 \text{Precision}_{\text{negative}} = \frac{\text{TP}}{\text{TP} + \text{FP}} = \frac{80}{80 + 30} = \frac{80}{110} \approx 0.73 Precisionnegative=TP+FPTP=80+3080=110800.73

召回率(Recall)
Recallnegative=TPTP+FN=8080+20=80100=0.80 \text{Recall}_{\text{negative}} = \frac{\text{TP}}{\text{TP} + \text{FN}} = \frac{80}{80 + 20} = \frac{80}{100} = 0.80 Recallnegative=TP+FNTP=80+2080=10080=0.80

F1-score(负面)
F1negative=2×0.73×0.800.73+0.80≈0.76 F1_{\text{negative}} = 2 \times \frac{0.73 \times 0.80}{0.73 + 0.80} \approx 0.76 F1negative=2×0.73+0.800.73×0.800.76

c. 中立评论的 F1-score
  • TP:50;
  • FP:50;
  • FN:50 条中立评论没有被预测为中立(100 - 50)。

精确率(Precision)
Precisionneutral=TPTP+FP=5050+50=50100=0.50 \text{Precision}_{\text{neutral}} = \frac{\text{TP}}{\text{TP} + \text{FP}} = \frac{50}{50 + 50} = \frac{50}{100} = 0.50 Precisionneutral=TP+FPTP=50+5050=10050=0.50

召回率(Recall)
Recallneutral=TPTP+FN=5050+50=50100=0.50 \text{Recall}_{\text{neutral}} = \frac{\text{TP}}{\text{TP} + \text{FN}} = \frac{50}{50 + 50} = \frac{50}{100} = 0.50 Recallneutral=TP+FNTP=50+5050=10050=0.50

F1-score(中立)
F1neutral=2×0.50×0.500.50+0.50=0.50 F1_{\text{neutral}} = 2 \times \frac{0.50 \times 0.50}{0.50 + 0.50} = 0.50 F1neutral=2×0.50+0.500.50×0.50=0.50

d. 总评分(score)计算

score=13(F1positive+F1negative+F1neutral) score = \frac{1}{3} \left( F1_{\text{positive}} + F1_{\text{negative}} + F1_{\text{neutral}} \right) score=31(F1positive+F1negative+F1neutral)
score=13(0.63+0.76+0.50)=13×1.89=0.63 score = \frac{1}{3} \left( 0.63 + 0.76 + 0.50 \right) = \frac{1}{3} \times 1.89 = 0.63 score=31(0.63+0.76+0.50)=31×1.89=0.63

5. 总结

F1-score可以较好的平衡精确率和召回率,但是在不同的业务场景下可能会有重点关注精确率或召回率的情况。例如 FP 的成本高(误报正例)场景下,那就重点关注精确率,若是 FN 的成本高(假负也就是真正例),那就重点关注召回率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抹茶爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值