PR曲线原理及通过曲线判断分类器优劣
一、原理讲解
P-R曲线就是精确率precision vs 召回率recall 曲线,以recall作为横坐标轴,precision作为纵坐标轴。首先解释一下精确率和召回率。
解释精确率和召回率之前,先来看下混淆矩阵,
负 | 正 | |
---|---|---|
负 | TN | FP |
正 | FN | TP |
把正例正确分类为正例,表示为TP(true positive),把正例错误分类为负例,表示为FN(false negative),
把负例正确分类为负例,表示为TN(true negative), 把负例错误分类为正例,表示为FP(false positive)
精确率和召回率可以从混淆矩阵中计算而来,precision = TP/(TP + FP), recall = TP/(TP +FN)
那么P-R曲线是怎么来的呢?
算法对样本进行分类时,都会有置信度,即表示该样本是正样本的概率,比如99%的概率认为样本A是正例,1%的概率认为样本B是正例。通过选择合适的阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例。
通过置信度就可以对所有样本进行排序,再逐个样本的选择阈值,在该样本之前的都属于正例,该样本之后的都属于负例。每一个样本作为划分阈值时,都可以计算对应的precision和recall,那么就可以以此绘制曲线。那很多书上、博客上给出的P-R曲线,都长这样
当然,这种曲线是有可能的。但是仔细琢磨就会发现一些规律和一些问题。
根据逐个样本作为阈值划分点的方法,可以推敲出,recall值是递增的(但并非严格递增),随着划分点左移,正例被判别为正例的越来越多,不会减少。而精确率precision并非递减,二是有可能振荡的,虽然正例被判为正例的变多,但负例被判为正例的也变多了,因此precision会振荡,但整体趋势是下降。
另外P-R曲线肯定会经过(0,0)点,比如讲所有的样本全部判为负例,则TP=0,那么P=R=0,因此会经过(0,0)点,但随着阈值点左移,precision初始很接近1,recall很接近0,因此有可能从(0,0)上升的线和坐标重合,不易区分。如果最前面几个点都是负例,那么曲线会从(0,0)点开始逐渐上升。
曲线最终不会到(1,0)点。很多P-R曲线的终点看着都是(1,0)点,这可能是因为负例远远多于正例。
最后一个点表示所有的样本都被判为正例,因此FN=0,所以recall = TP/(TP + FN) = 1, 而FP = 所有的负例样本数,因此precision = TP/(TP+FP) = 正例的占所有样本的比例,故除非负例数很多,否则precision不会为0.
二、通过PR曲线判断分类器性能
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C。但是A和B的性能无法直接判断,我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点或者是F1值。平衡点(BEP)是P=R时的取值,如果这个值较大,则说明学习器的性能较好。而F1 = 2 * P * R /( P + R ),同样,F1值越大,我们可以认为该学习器的性能较好。
补充:
- ROC曲线(类似于PR曲线的另一种曲线)中,越接近左上角的曲线越好。
- AUC (Area under Curve):ROC曲线下的面积,介于0.1和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。
AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值
参考说明
版权声明:本文为CSDN博主「keep_forward」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/b876144622/article/details/80009867
作者:李_颖Biscuit
链接:https://www.jianshu.com/p/ac46cb7e6f87
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
PR曲线原理及通过曲线判断分类器优劣相关推荐
- AUC是什么?AUC的的意义是什么?AUC的判断分类器优劣标准是什么?AUC如何计算?
AUC是什么?AUC的的意义是什么?AUC的判断分类器优劣标准是什么?AUC如何计算? metrics.roc_auc_score metrics.roc_curve AUC就是曲线下面积,在比较不同 ...
- 分类器MNIST交叉验证准确率、混淆矩阵、精度和召回率(PR曲线)、ROC曲线、多类别分类器、多标签分类、多输出分类
本博客是在Jupyter Notebook下进行的编译. 目录 MNIST 训练一个二分类器 使用交叉验证测量精度 混淆矩阵 精度和召回率 精度/召回率权衡 ROC曲线 多类别分类器 错误分析 多标签 ...
- det曲线_11565 P-R、ROC、DET 曲线及 AP、AUC 指标全解析(上)
机器学习中,最「简单」的一种任务就是二分类任务了.比如,说话人验证(speaker verification)就是一个二分类任务:判断一句话是否是给定说话人说的.再比如,信息检索(informatio ...
- Bezier曲线原理及实现代码(c++)
一.原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计.贝塞尔曲线最初由 Paul de Casteljau 于 ...
- Bezier曲线原理
一.原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计.贝塞尔曲线最初由Paul de Casteljau 于1 ...
- Bezier曲线原理—动态解释
Bezier曲线原理 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖 ...
- 贝塞尔曲线原理(简单阐述)
贝塞尔曲线原理(简单阐述) https://www.cnblogs.com/hnfxs/p/3148483.html 原理和简单推导(以三阶为例): 设P0.P02.P2是一条抛物线上顺序三个不同的点 ...
- python 贝塞尔曲线,贝塞尔曲线原理分析及其Android的实现
本文主要内容为贝塞尔曲线原理解析并用 SurfaceView 实现其展示动画 关于SurfaceView 的使用,大家可以看我的上一篇文章 Android:SurfaceView 的使用(附代码模板) ...
- Bezier曲线原理及其代码实现
Bezier曲线原理及实现代码(c++) 一.原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔?贝塞尔(Pierre B?zier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计.贝塞尔曲线最初 ...
最新文章
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
- Android语音信号波形显示
- 深入了解 TabNet :架构详解和分类代码实现
- 浏览器如何渲染页面?
- java jsoup解析html标签_jsoup解析html
- RHEL7 yum源配置
- android -上传文件到服务器
- Unity工程中 .Meta 文件的来龙去脉
- repo/git下载android源码断后重新下载
- 解决idea的程序包错误:程序包XXX不存在的问题
- Mac下实现Word文档批量转换为PDF
- 【Unity】Unity Shader学习笔记(一)Unity Shader基础
- 推荐几个在线SQL编程的网站,良心!
- RDL和RDLC性能比较
- 官宣 | 首届云原生编程挑战赛报名通道正式开启
- 无法安装net framework 3.5 的解决方法
- 周期训练理论与方法pdf_周期_PDF图书下载_(美) 图德·邦帕 (Tudor O.Bompa) (美)_免费PDF电子书下载_第一图书网...
- Python遥感影像SAR分割裁剪多张小影像
- 【FOFA】fofa搜索引擎的常用搜索语法
- 文本溢出及其在angular中失效的bug
热门文章
- [附源码]计算机毕业设计JAVA基于Java小区电信计费管理系统
- vue中实现图片懒加载的方法(一)
- 传奇GOM引擎微端架设教程
- 王者荣耀微信哪个服务器人最少,王者荣耀:一句话总结q区和微信区玩家的区别,简直不要太真实...
- 斗鱼主播都在使用的可取回的CSGO开箱子网站推荐!
- C++中的类——类的定义和声明
- [经验教程]2022年淘宝天猫618超级红包预售活动是什么时候开始及2022年天猫淘宝618预售超级红包怎么领取参加活动
- oracle执行存储过程06576,Oracle中执行存储过程call和exec区别
- OSError: [Errno 22] Invalid argument错误解决方案
- RedisTemplate 分布式锁之使用守护线程为key续命