机器学习实战(基于scikit-learn和TensorFlow)学习心得(14)--Precision and Recall and F1

当我们考验一个classifier的好坏的时候,精准度并不是一个非常好的指标,对于不同的任务我们有两种衡量精准度的办法,precision(精确率)和recall(召回率)
假设我们想要识别一组手写数字中的5
机器学习实战(基于scikit-learn和TensorFlow)学习心得(14)--Precision and Recall and F1
从上图可知
左上角是系统识别出来不是5而且标签也不是5的图片(正确的分类也叫true negative{TN})
右上角是系统识别出来是5但是实际上不是5的图片,叫false positive(FP)
左下角是系统识别出来不是5但实际上是5的图片,叫false negative(FN)
右下角是系统识别出来是5而且实际上也是5的图片,叫true positive(TF)
那么精确度的定义是
机器学习实战(基于scikit-learn和TensorFlow)学习心得(14)--Precision and Recall and F1
精确率的含义是系统识别为正确的所有结果中,真正正确是识别数量有多少个所占的比例,也就是说识别为正的结果中,有的识别对了,有的识别错了,因此会有精确的问题.从实际应用来讲就是淘宝要用的系统,给顾客推荐商品不能太多太烦,最好是每一个推荐的商品都是顾客想要的,这样的话精确率就是100%.

而召回率的定义是
机器学习实战(基于scikit-learn和TensorFlow)学习心得(14)--Precision and Recall and F1

召回率就是在所有的真正正确的样本中,预测对了多少。我们可以理解为,对于一个预测集,我么能将其中正例的多少正确的寻找出来。举例来讲就是警察们抓逃犯的系统的召回率一定要高,不能把罪犯放走,宁肯错杀三千不放过一个,理想情况下我们把所有的罪犯都分析出来来这样的话召回率就是1了

那么这两个指标能不能综合在一起呢?答案是可以的.
F1指标
机器学习实战(基于scikit-learn和TensorFlow)学习心得(14)--Precision and Recall and F1
用上面的这个指标可以综合的看一个系统的准确度到底如何.
但F1指标并不是万能的,在同一个系统和数据的情况下,当我们想增加recall的时候precision就会下降,反之亦然.
这就是precision/recall trade-off.
所以但我们没法改变外部环境的时候我们要做出取舍,我们只能提高precision和recall当中的一项.