Precision和Recall:如何评价保安的能力
本文版权属于重庆大学计算机学院刘骥,禁止转载
保安的能力评估
保安对进出公司的人员进行盘查,识别其中的小偷
。保安有可能犯两类错误:
1. 把好人
误认为小偷
,称为假小偷
(与之相反称为真小偷
)。
2. 把小偷
误认为好人
,称为假好人
(与之相反称为真好人
)。
保安优秀与否可以按照如下的两个标准来评判:
1. 抓住的小偷
中真小偷
的比例尽量的高。
2. 宁可错抓好人
也不放过小偷
。
标准1称为精准率(Precision),标准2称为召回率(Recall),对应的计算公式为:
为了更好的理解上述公式,假设某公司每天进出100人,其中80个
好人
,20个
小偷
,某保安的表现如下:
- | 实际上是小偷 | 实际上是好人 | 合计 |
---|---|---|---|
抓住的小偷 | 5 | 1 | 6 |
放走的好人 | 15 | 79 | 94 |
合计 | 20 | 80 | 100 |
从上表可以看出,保安共计抓住6个小偷
,其中5人是真小偷
,另外1人是假小偷
(好人被误抓),依据公式可知,该保安的
Precision=55+1=56≈88.3%
。看上去这名保安抓人的准确性挺强,但他是一名好保安吗?
来看看召回率的计算。
Recall=55+15=14=25%
。什么叫做放走的假好人
?换句话,也就是被保安误认为好人
的小偷
。所以Recall的分母总是等于小偷
的总数(而Precision的分母是抓住的人
的总数)。从召回率可以看出,这名保安放走了
34
的小偷
,这实在不能算优秀的保安。
再来看看另外一名保安的数据:
- | 实际上是小偷 | 实际上是好人 | 合计 |
---|---|---|---|
抓住的小偷 | 20 | 20 | 40 |
放走的好人 | 0 | 60 | 60 |
合计 | 20 | 80 | 100 |
根据上述公式计算,其
Precision=50%
,
Recall=100%
。虽然精度不高,误抓了不少好人,但这名保安抓住了全部到小偷。
理想的保安应该具有如下的表现:
- | 实际上是小偷 | 实际上是好人 | 合计 |
---|---|---|---|
抓住的小偷 | 20 | 0 | 20 |
放走的好人 | 0 | 80 | 80 |
合计 | 20 | 80 | 100 |
他的 Precision 和 Recall 都能够达到100%。
Precision、Recall在机器学习中的定义
现在我们准备用一个二分类的人工智能程序代替保安,如何对这个人工智能程序的能力进行评价呢?可以采用相同的标准。为了将评价问题泛化,使其能够针对所有的二分类问题(而不限于抓小偷),我们做出了如下定义:
1. 称小偷
为Positive
,好人
为Negative
。
2. 与之对应真小偷
为True Positive
(简写为TP),假小偷
为False Positive
(简写为FP)。
3. 与之对应真好人
为True Negative
(简写为TN),假好人
为False Negative
(简写为FN)。
于是人工智能抓小偷的表现可以用下表来表示:
- | 实际上是Positive | 实际上是Negative | 合计 |
---|---|---|---|
判定为Positive | 20 (TP) | 20 (FP) | 40 |
判定为Negative | 0 (FN) | 60 (TN) | 60 |
合计 | 20 | 80 | 100 |
对应Precision和Recall的公式表示为:
F1 及其他
将Precision和Recall放到一个公式中,就构成了
F1 Score
,其公式如下:
除此之外,还有其他评价标准,请参考其他书籍。