Precision、Recall和F1分别怎么计算?
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都较高时才会较高,适合同时关注误报、漏报以及类别不均衡的任务。
