精确率与召回率,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

目录
相关文章
|
7月前
|
人工智能 弹性计算 Linux
OpenClaw 与 Codex 定位对比:架构差异、场景分工与OpenClaw阿里云/本地部署实战指南
OpenClaw(Clawdbot)与Codex并非同类替代产品,而是处于不同层级的AI协作组件。二者在能力覆盖上可以高度重叠,但在存在形态、运行架构、价值沉淀上有着本质区别:**Codex 擅长即时攻坚、临场推理、一次性解决复杂问题;OpenClaw 负责流程固化、长期记忆、自动化值守与个人工作系统沉淀**。理解这一定位差异,才能真正发挥两者的组合价值,实现“单次突破→持续复利”的AI工作闭环。
4647 0
|
Web App开发 监控 JavaScript
监控和分析 JavaScript 内存使用情况
【10月更文挑战第30天】通过使用上述的浏览器开发者工具、性能分析工具和内存泄漏检测工具,可以有效地监控和分析JavaScript内存使用情况,及时发现和解决内存泄漏、过度内存消耗等问题,从而提高JavaScript应用程序的性能和稳定性。在实际开发中,可以根据具体的需求和场景选择合适的工具和方法来进行内存监控和分析。
|
SQL 消息中间件 存储
巴别时代基于 Apache Paimon 的 Streaming Lakehouse 的探索与实践
巴别时代基于 Apache Paimon(Incubating) 构建 Streaming Lakehouse 的生产实践经验。
1847 0
|
物联网 测试技术 网络性能优化
MQTT常见问题之收不到MQTT消息如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
Linux
Centos7安装nvidia-container-toolkit
Centos7安装nvidia-container-toolkit
6612 0
|
数据可视化 前端开发 JavaScript
Echarts+JS实现智慧门店可视化大屏!!附源码!!
Echarts+JS实现智慧门店可视化大屏!!附源码!!
|
前端开发 数据可视化 安全
82.7K star!大气炫酷UI开源项目,超级火!
shadcn/ui 是一款基于 Radix UI 和 Tailwind CSS 构建的现代化 UI 组件库,专为追求设计品质与开发效率的开发者打造。不同于传统组件库,它提供完全可定制的组件代码模板,让开发者既能享受开箱即用的便利,又能保持对设计系统的完全掌控。
971 13
|
数据可视化
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
549 5
|
机器学习/深度学习 人工智能 算法
AI辅助医疗影像:提高诊断准确性
【10月更文挑战第2天】医学影像技术是现代医学诊断的关键手段,但传统方法依赖医生经验,存在误诊风险。AI辅助医疗影像通过自动化图像识别、疾病预测和辅助诊断决策,显著提升了诊断准确性与效率。利用深度学习、数据增强及迁移学习等技术,AI不仅能快速分析影像,还能提供个性化诊疗建议,并实时监测疾病变化。尽管面临数据质量、算法可解释性和伦理法律等挑战,但多模态影像分析、跨学科合作及VR融合等趋势将推动AI在医疗影像领域的广泛应用,助力实现更精准、高效的医疗服务。
1381 3
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
2227 4