目标检测、图像分类中的模型效果指标precision与recall的本质探索
要想理解一个事情的本质,首先要抽丝剥茧,把复杂的逻辑变得简单。——CoolMan
理解TP\FP\FN\TN
举一个简单的例子,我训练了一个图片分类模型(目标检测最后一步也就是图像分类)。这个模型做的事情非常简单,就是判断这张图中有没有马。好的,现在我准备了1000张图片,其中有300张中有马,另外700张没有马。这时我们期望模型能够达到的最好效果就是准确的找出这300张有马的图。很遗憾,我们的模型找出了400张它认为有马的图,这400张图中有250张是真的有马的,另外150张是模型的“误检”,可想而知,另外600张我们的模型认为没有马的图片中其实有50张是有马的,也就是说我们的模型“漏检”了50张有马的图。
其实,通过上述文字表达,我们很容易得到一些易于理解的指标(我相信各位能够看懂下列的三个式子)
- 准确率:250/400 = 62.5%
- 误检率:150/400 = 37.5% (其实就是100%-准确率 )
- 漏检率:50/300 = 16.67%
我个人很喜欢这些指标,因为不会那么晦涩难懂,简直就像在做小学时期的应用题。
下面,我们再来看看高端大气的TP\FP\FN\TN在这个例子中分别代表什么。
TP = True Positive = “预测准确” 的 “预测结果为有马的图片” = 250
FP = False Positive = “预测错误” 的 “预测结果为有马的图片” = 150
这里暂停一下,聪明的发现,TP+FP=400,也就是预测结果为有马的图片的数量。好了,继续
TN = True Negative = “预测准确” 的 “预测结果为没有马的图片” = 550
FN = True Positive = “预测错误” 的 “预测结果为没有马的图片” = 50
在暂停一下,TN+FN=600,也就是预测结果为没有马的图片的数量。
好好消化一下,下面在讲Precision和Recall
Precision 和 Recall
Precision =TP/(TP+FP) = 62.5%
Recall = TP/(TP+FN) = 83.3%
聪明的你发现了吗,Precision不就是上面说的准确率嘛。而Recall呢,就是(1-漏检率)嘛。小学的应用题硬生生的变成了大学的奥数题,我的天。
也就是说,Precision和Recall都是越大越好,而最大不会超过100%。
Precision,对应误检率,Precision高了,误检就少了。
Recall,对应漏检率,Recall高了,漏检就少了。