最近在回顾机器学习的相关知识,突然忘记了为什么精确率与召回率是成反比的关系,查阅许多资料后,也发现很多都晦涩难懂,思考清楚后,在此记录一下。
1.精确率与召回率公式:
精确率: precision = (模型判断的所有正例中,实际为正例的比例)
召回率:recall = (实际的所有正例中,模型判断为正例的比例)
正例 P | 反例 N | |
模型正确判断 T | TP | TN |
模型错误判断 F | FP | FN |
TP:True Positive,模型预测结果为正样本,实际也为正样本,即正确判断为正
TN:True Negative,模型预测结果为负样本,实际也为负样本,即正确判断为负
FP:False Positive,分类器预测结果为正样本,实际为负样本,即错误判断为正,实际为负
FN:False Negative,分类器预测结果为负样本,实际为正样本,即错误判断为负,实际为正
各值表示如上表所示,通常都会说 精确率 与 召回率 是成反比的,那么原因是什么呢?举例如下:
假设我们有100个数据需要模型判断,模型输入每个数据后,输出对应的概率(假设此处指该数据为正例的概率),那么就会有一个阈值(即模型中的参数),输出概率大于这个阈值,我们判定它为正例,小于这个阈值我们判定它为反例。
按以上的规定来看,我们可以明确知道,当阈值设置较大,比如95%时,只有跟正例很相似的数据会被判定为正例,那么此时:
精确率会很高,接近100%,因为阈值较高,只要模型比较好,那么模型判断出来为正例的这数据,基本都会是真实的正例。
召回率会较低,因为会有很多数据虽然也是正例,但是模型输出概率达不到95%,可能有91%,92%这个概率也很高,但是却都被判作反例,即FN较大,所以recall较小。
同样的,如果降低阈值为60%,那么实际的正例可能会被模型全部判断为正例,此时召回率可能接近100%,但也会有很多实际的反例被模型判断为正例,即FP较大,那么precision就会较低。
综上所述,精确率和召回率在整体上是呈现一种此消彼长的关系。
2.记录一个常见的平衡P和R的F-Measure——F1
F1=
由于P(Precision)和R(Recall)通常很难根据主观臆断来平衡P和R,因此会引入一些公式来平衡二者的关系,用得比较多的一个判断值就是F1
随笔记录,有什么问题请指出