QUESTION

Precision、Recall和F1分别怎么计算?

A

Precision关注预测为正的结果有多准,Recall关注真实正类找回多少,F1综合二者。

DETAILED ANSWER

直接结论

Precision衡量“预测为正的样本中有多少是真的”,Recall衡量“所有真实正类中找回了多少”,F1是二者的调和平均,只有Precision和Recall都较高时才会较高。

先理解TP、FP和FN

  • TP:预测为正,实际也是正。
  • FP:预测为正,实际不是正,也就是误报。
  • FN:实际是正,但没有预测出来,也就是漏报。

Precision

Precision = TP ÷ (TP + FP)

它回答:

模型报告出来的正类结果中,有多少是正确的?

误报越多,Precision越低。

Recall

Recall = TP ÷ (TP + FN)

它回答:

所有真正的正类中,有多少被模型找到了?

漏报越多,Recall越低。

F1

F1 = 2 × Precision × Recall ÷ (Precision + Recall)

也可以写成:

F1 = 2TP ÷ (2TP + FP + FN)

F1使用调和平均,因此某一个指标很低时,另一个指标再高也难以得到很高的F1。

多分类中的Macro-F1

Macro-F1先分别计算每个类别的F1,再对所有类别做等权平均。每个类别贡献相同,因此少数类不会被大量多数类样本完全掩盖,适合观察类别不均衡任务中的整体分类能力。

面试口述

Precision等于TP除以TP加FP,关注预测为正的结果有多准确;Recall等于TP除以TP加FN,关注真实正类找回了多少。F1是二者的调和平均,只有Precision和Recall都较高时才会较高,适合同时关注误报、漏报以及类别不均衡的任务。