准确率、召回率、精确率、F值

准确率、召回率、精确率、F值

  • TP, True Positive
  • FP, False Positive
  • TN, True Negative
  • FN, False Negative
    精确率: precision = TP / (TP + FP)
    召回率:recall = TP / (TP + FN)
    准确率:accuracy = (TP + TN) / (TP + FP + TN + FN)
    F值 : F1 Score = P * R / 2(P + R),其中P是precision ,R是recall
    准确率、召回率、精确率、F值_第1张图片

借用女票爆炸理论来解释

小伙(Supasate Choochaisri ) 你是个人才了!!!感谢在理解上的倾情相助,笔芯

问题:
null假设你的女票在过去10年里,每年都会送一份生日礼物给你,有一天,她突然问你:
“记得这十年里你生日我都送过什么吗?”
(真了解女生,女生常问问题之一,显然是一颗雷),强烈的求生欲让你在自己的大脑中地毯式搜索了一遍
此时召回率(recall)= 你回答正确的礼物数 和 你女票在你生日时送你的礼物数的总和的比值
eg:

  • 你准确地回答出 10件礼物,那么召回率就是 10 / 10 = 100%,
  • 如果只 准确地回忆起了7件,那么召回率(recall)就是70%

但是,你所有的回答中可能有错误的回答,eg:你一共给出了15个答案,其中5个是错误的,这证明,你虽然可以打出所有礼物,但却不精确,因此 ,精确率:
Precision = 10 / 15 , 约67%
recall = 10 / 10 = 100%

So:尽管给出了所有的答案,但是总共回答了15次,虽然100%召回了。但是精确率却只有66.67%,如果你回答了不止15次呢,100次呢,200次呢, 你会被女票丢出去的吧哈哈哈~
(来源:知乎硅谷密探的回答)
同理,可以百分百召回的算法不一定是最优的算法

再举个例子:
我开了条汽车生产线,有故障比较少,真有故障(Positive),正常是没故障(Negative)

我觉得有故障 我觉得没故障
真故障 TP FN
真没故障 FP TN

precision = 我觉得故障中的真故障 / 我觉得故障 = TP / (TP + FP)

召回:生产完成后,有些没检测出来的问题车(False Negative) 也卖给客人了,有一天发现问题要召回FN的车,
按字面意思:
召回率 = 召回 / 真故障 = FN / (TP + FN)

但实际上却是:
召回率 = 1 - (召回 / 真故障)= 1 - FN /(TP + FN) = TP / (TP + FN)
Recall = 我觉得故障中的真故障 / 真故障 = TP / (TP + FN)

这时F1 Score就尤为重要啦(下面欢迎F1 Score 隆重出场)
F值 为精确率和召回率的调和平均值

在评价的时候,当然是希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下是矛盾的。

比如:
假设此时想吃香蕉,实验室每天都会安排10个水果,水果分类6个香蕉,3个句子,1个菠萝,抽取5个,在极端的情况下,抽取的只有香蕉,那么Precision是100%,但是recall就是1/6很低,如果抽取10个水果,那么recall就是100%,但是precision为6/10,相对来说就会很低
所以针对P和 R指标的矛盾可通过F值来化解:

F1 Score = P * R / 2(P + R) = (1 * 6 / 10) / 2(1 + 6/ 10) = 3 / 16

你可能感兴趣的:(自然语言处理)