机器学习的评价指标让人眼花缭乱。以前我写过一篇笔记总结了这个话题,有兴趣的可以参考一下:一分钟看懂深度学习中的准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP。
今天修改一份标准文件,发现算法测试指标定义有些不妥。反复思考后,感觉有必要再次梳理一下对这些概念的认识。
1. 算法预测结果的四种可能
算法模型的任何一次预测,只可能有四种情况:
简称 | 检测结果 | 英文术语 | 含义 |
---|---|---|---|
TP | 真阳性(正报) | true positive | 正确地检测到阳性结果:即检测结果正确,并且结果呈现阳性 |
FP | 假阳性(误报) | false positive | 错误地检测到阳性结果:即检测结果错误,并且结果呈现阳性 |
TN | 真阴性(正舍) | true negative | 正确地检测到阴性结果:即检测结果正确,并且结果呈现阴性 |
FN | 假阴性(漏报) | false negative | 错误地检测到阴性结果:即检测结果错误,并且结果呈现阴性 |
2. 常见的五个评价指标
下图用图形化的方式,把五个常见指标的分数表达式直观地展现出来了。
3. 五个指标的计算公式
准确率 = 正确检测次数 总检测次数 准确率=\frac{正确检测次数}{总检测次数}\\ 准确率=总检测次数正确检测次数
精度 = 正报数 正报数 + 误报数 精度=\frac{正报数}{正报数+误报数} 精度=正报数+误报数正报数
召回率 = 正报数 正报数 + 漏报数 召回率=\frac{正报数}{正报数+漏报数} 召回率=正报数+漏报数正报数
机器学习领域喜欢用精度和召回率来评价算法性能,原因是,这两个指标的计算公式的分子是相同的,而分母的差异仅在于误报和漏报。从美学角度看,更简洁优美。
4. 指标的关系
精度 + 误报率 = 1 精度+误报率=1 精度+误报率=1
召回率 + 漏报率 = 1 召回率+漏报率=1 召回率+漏报率=1
5. 深入思考
如下图所示,算法精度的提升,意味着直线A向右侧移动,减少蓝色区域的面积。
如果算法精度不变,修改算法阈值,只能改变直线B的位置,也就是误报率和漏报率会发生变换,而误报和漏报的总量不会发生变化。