精确率与召回率,RoC曲线与PR曲线

简介:

在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢?
首先,我们需要搞清楚几个拗口的概念:
1. TP, FP, TN, FN

  1. True Positives,TP:预测为正样本,实际也为正样本的特征数
  2. False Positives,FP:预测为正样本,实际为负样本的特征数
  3. True Negatives,TN:预测为负样本,实际也为负样本的特征数
  4. False Negatives,FN:预测为负样本,实际为正样本的特征数

听起来还是很费劲,不过我们用一张图就很容易理解了。图如下所示,里面绿色的半圆就是TP(True Positives), 红色的半圆就是FP(False Positives), 左边的灰色长方形(不包括绿色半圆),就是FN(False Negatives)。右边的 浅灰色长方形(不包括红色半圆),就是TN(True Negatives)。这个绿色和红色组成的圆内代表我们分类得到模型结果认为是正值的样本。

image


2. 精确率(precision),召回率(Recall)与特异性(specificity)
精确率(Precision)的定义在上图可以看出,是绿色半圆除以红色绿色组成的圆。严格的数学定义如下:

$$ P = \frac{TP}{TP + FP } $$

召回率(Recall)的定义也在图上能看出,是绿色半圆除以左边的长方形。严格的数学定义如下:

$$ R = \frac{TP}{TP + FN } $$

特异性(specificity)的定义图上没有直接写明,这里给出,是右边长方形去掉红色半圆部分后除以右边的长方形。严格的数学定义如下:

$$ S = \frac{TN}{FP + TN } $$

有时也用一个$F_1$值来综合评估精确率和召回率,它是精确率和召回率的调和均值。当精确率和召回率都高时,$F_1$值也会高。严格的数学定义如下:

$$ \frac{2}{F_1} = \frac{1}{P} + \frac{1}{R} $$

有时候我们对精确率和召回率并不是一视同仁,比如有时候我们更加重视精确率。我们用一个参数$β$来度量两者之间的关系。如果$β>1$, 召回率有更大影响,如果$β<1$,精确率有更大影响。自然,当$β=1$的时候,精确率和召回率影响力相同,和$F_1$形式一样。含有度量参数$β$的$F_1$我们记为$F_β$, 严格的数学定义如下:

$$ F_\beta = \frac{(1+\beta^2)*P*R}{\beta^2*P + R} $$

此外还有灵敏度(true positive rate ,TPR),它是所有实际正例中,正确识别的正例比例,它和召回率的表达式没有区别。严格的数学定义如下:

$$ TPR = \frac{TP}{TP + FN } $$

另一个是1-特异度(false positive rate, FPR),它是实际负例中,错误得识别为正例的负例比例。严格的数学定义如下:

$$ FPR = \frac{FP}{FP + TN } $$

我们熟悉了精确率, 召回率和特异性,以及TPR和FPR,后面的RoC曲线和PR曲线就好了解了。
3. RoC曲线和PR曲线
有了上面精确率, 召回率和特异性的基础,理解RoC曲线和PR曲线就小菜一碟了。
以TPR为y轴,以FPR为x轴,我们就直接得到了RoC曲线。从FPR和TPR的定义可以理解,TPR越高,FPR越小,我们的模型和算法就越高效。也就是画出来的RoC曲线越靠近左上越好。如下图左图所示。从几何的角度讲,RoC曲线下方的面积越大越大,则模型越优。所以有时候我们用RoC曲线下的面积,即AUC(Area Under Curve)值来作为算法和模型好坏的标准。

image


以精确率为y轴,以召回率为x轴,我们就得到了PR曲线。仍然从精确率和召回率的定义可以理解,精确率越高,召回率越高,我们的模型和算法就越高效。也就是画出来的PR曲线越靠近右上越好。如上图右图所示。
使用RoC曲线和PR曲线,我们就能很方便的评估我们的模型的分类能力的优劣了。

摘自:https://www.cnblogs.com/pinard/p/5993450.html

目录
相关文章
|
Prometheus Cloud Native 应用服务中间件
nginx 代理 prometheus
nginx 代理 prometheus
423 0
|
JavaScript
在vue3中使用markdown编辑器
在vue3中使用markdown编辑器
在vue3中使用markdown编辑器
|
9月前
|
前端开发 Cloud Native Java
通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求
el-tree用来做前端的文档目录还是挺好用的,尤其是自带的node-click事件,真的给后续功能的实现提供了很多帮助,其他的事件方法也很全面,用起来还是很舒服的。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
|
机器学习/深度学习 人工智能 算法
AI辅助医疗影像:提高诊断准确性
【10月更文挑战第2天】医学影像技术是现代医学诊断的关键手段,但传统方法依赖医生经验,存在误诊风险。AI辅助医疗影像通过自动化图像识别、疾病预测和辅助诊断决策,显著提升了诊断准确性与效率。利用深度学习、数据增强及迁移学习等技术,AI不仅能快速分析影像,还能提供个性化诊疗建议,并实时监测疾病变化。尽管面临数据质量、算法可解释性和伦理法律等挑战,但多模态影像分析、跨学科合作及VR融合等趋势将推动AI在医疗影像领域的广泛应用,助力实现更精准、高效的医疗服务。
|
机器学习/深度学习 自然语言处理 测试技术
社区供稿 | 封神榜团队揭秘大模型训练秘密:以数据为中心
近一年来,各种各样的开源和闭源的大语言模型,不断在多个中文英文的测试基准中刷新着记录。然而,大语言模型的开发仍然面临诸多挑战,比如从头开始训练大语言模型的高昂成本,以及继续预训练导致的灾难性遗忘等等。尽管许多研究致力于解决这些问题,但一个重要而且实际的限制是,许多研究过于追求扩大模型规模,没有全面分析和优化预训练数据在训练大语言模型过程中的使用。
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
1403 4
|
SQL 消息中间件 分布式计算
如何写好简历中的“个人总结”部分?
如何写好简历中的“个人总结”部分?
|
JSON 前端开发 JavaScript
Apifox,你的API接口文档卷成这样了吗?
使用过Apifox我相信都会被这个软件的细节之处,API接口文档功能强大之处给留下深刻的印象!一个软件工具的使命肯定是要为了使用者的便捷着想,处处的简化使用者的操作让工作更效率,这种才是一种好的工具的表现。
Apifox,你的API接口文档卷成这样了吗?
|
PyTorch 测试技术 TensorFlow
Modelscope-FunASR是一个开源的语音识别框架
【2月更文挑战第9天】Modelscope-FunASR是一个开源的语音识别框架
1416 2