为什么我们需要Precision(准确率)和Recall(召回率)?
首先我们仅仅只看loss的话,会出现什么问题。
举个例子:比如对于一个二分类的模型,我们通过训练得到最终loss仅为5%,也就是准确率达到了95%,这很明显我们认为这是一个比较优秀的模型。
但是,如果我们的训练数据,仅有3%的数据对应标签为0,也就是负样本,其余均为正样本,对应标签为1.
这样会发生什么?如果我们的网络只能输出1,无论输入是什么,都只能输出1,这样的模型的准确率为97%,那么这样的模型是更好的模型么?显然不是。
所以,这时候就需要用到precision和recall了
precision和reall
precision= TP / (TP + FP)
recall= TP / (TP + FN)
很多人疑惑,这两个公式到底是什么意思?
precision即为预测为正确的数据中,真实值为正确的比例,而recall即为在所有的真实值为正确的数据中,有多少能预测正确。
很难理解,那我举一个癌症的例子,现在有一批人,其中有一些人得了癌症,一些人没有得癌症。
对于precision来说,我只有有很大的把握得时候,我才会说你得癌症,意思是,只要我说你得癌症,你基本上就是得了癌症。
对于recll来说,在这一批人当中,我基本能找到所有得癌症的人,意思是,得癌症的人一定在我说得癌症的人当中。
具体一点,现在有300个人,100个得癌症,我现在预测出只有10个人得癌症,那我的precision一定非常高,如果我现在预测出300个人得癌症,那我的recall一定非常高。
但是两者都不是我们想要的,所以我们需要权衡两者,才能找到最优秀得网络模型
对recall和precision仍有疑问,可继续在评论区留言
如果错误,欢迎大家及时指正!!!