从女友和老妈的使用角度看精确率(precision)和召回率(recall)的不同

机器学习和深度学习中,精确率和召回率经常会被提起,但因为定义有点绕了,许久不用后,又通常容易忘记或者是搞混。

本文以一个稍显调皮的例子说明两者的不同,以便自己能够加深理解。

定义

Precision = TP / (TP + FP) Recall = TP / (TP + FN)

那么 TP、FP、FN 都代表什么呢?

记住一点,这些概念都是基于预测结果和真实结果的比对。

TP

TP 是 True Positives 的缩写,指的是真正的正样本,也可以叫做真阳性。

真实情况:正样本。 预测结果:正样本。

FN

FN 是 False Negatives 的缩写,指的是假的负样本,也叫做假阴性。

真实情况:正样本。 预测结果:负样本。

TN

TN 是 True Negatives 的缩写,指的是真的负样本,也叫做真阴性。

真实情况:负样本。 预测结果:负样本。

FP

FP 是 False Positives 的缩写,指的是假的正样本,也叫做假阳性。

真实情况:负样本。 预测结果:正样本。

精确率 (Precision)

Precision=TPTP+FP Precision = frac{TP}{TP+FP} Precision=TP+FPTP​

精确率表示的是在预测所有为正类的结果中,真实的正类的比例。

怎么理解呢?

来一个场景,这个需要妈妈的配合。

周一

周二

周三

周四

周五

妈妈

妈妈

外卖

外卖

妈妈

上面这张表是你上个月某一周晚餐的情况,妈妈代表晚餐是妈妈做的,外卖代表这一天你吃的外卖。

有一天,因为某些原因,你需要回忆一下那一周的晚餐情况。

你努力想了想,只记得 4 天的情况,然后说出了自己的答案。

周一

周二

周三

周四

周五

妈妈

妈妈

外卖

外卖

妈妈

妈妈

外卖

妈妈

妈妈

假如预测结果是妈妈代表 Positive.

那么在 4 个结果中,你预测了 3 个 Positive。

但是在这里。

TP = 2 (周一,周五)  FP = 1 ( 周四)

所以呢,精确率是多少?

Precision=TPTP+FP=22+1=0.67 Precision = frac{TP}{TP+FP}=frac{2}{2+1}=0.67 Precision=TP+FPTP​=2+12​=0.67

得知这个结果时候,你的母亲露出标志性的慈母笑。

"我儿子真棒!妈妈做的饭菜大多都记得。"

召回率 (Recall)

Recall=TPTP+FN Recall = frac{TP}{TP+FN} Recall=TP+FNTP​

召回率表示的是,在所有正样本中,被预测出来的比例。

怎么理解呢?

还是同样的场景,不过这次需要你女友的配合。

周一

周二

周三

周四

周五

周六

周日

外卖

外卖

女友

外卖

女友

外卖

女友

去年的某一周,这是你的晚餐情况。

女友代表那天晚餐她做的,外卖代表你叫的外卖自己解决。

因为某种原因,你需要回忆那一周的情况。

因为时间过得太久,你只能拍脑袋决定了。

周一

周二

周三

周四

周五

周六

周日

外卖

外卖

女友

外卖

女友

外卖

女友

外卖

外卖

外卖

外卖

女友

女友

外卖

女友选项是正样本。

你的预测结果中,有 2 个正样本。 但是,TP = 1, FP = 1。

另外,周三和周日属于 FN 的情况。

所以,召回率是多少呢?

Recall=TPTP+FN=11+2=0.33 Recall = frac{TP}{TP+FN}=frac{1}{1+2}=0.33 Recall=TP+FNTP​=1+21​=0.33

这个结果如何呢?

你自己心里应该有数。

“面对疾风吧!!!”

总结

要区分精确率和召回率要看分母。

精确率的分母是你预测的所有的正样本数量,因此精确率代表了区分负样本的能力。

召回率的分母是所有真实情况的正样本数量,召回率代表了区分正样本的能力。