前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ROC曲线的通俗理解

ROC曲线的通俗理解

作者头像
全栈程序员站长
发布于 2022-08-29 05:35:39
发布于 2022-08-29 05:35:39
1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

在准备机器学习导论课程考试的过程中,发现自己根据西瓜书上的讲解总是也理解不上去ROC曲线的含义。于是在网络上寻求答案,发现一篇讲解得不错的博客【1】,说得比西瓜书好很多,通俗易懂。这里说一下自己的感想和理解对于已经有数据标签的训练样本,可以得到它们的评分:

其中class一栏表示真实值,p为正例,n为反例,这20个样本中有10个正例10个反例;score一栏则是分类器给出的分类评分。一般的二分类的实现方法就是选择一个阈值,将大于这个阈值的样本认为是正例,小于这个阈值的样本认为是反例。于是,不妨对 样本4来看,如果将样本4的评分设置为分类阈值,被分类器为正例的样本有1 2 3 4,其中真正的正例样本有1 2 4,故其TPR=3/10=0.3,FPR=1/10=0.1(分母虽然数值一样但是意义不同,前面TPR的分母是样本总体中的真正例个数,后者是样本总体中的真反例个数)。接着不妨设置样本9的评分0.51作为阈值,那么样本1~9都会被分类器认为是正例样本,其中为真正例的有1 2 4 5 6 9共6个,所以TPR=6/10=0.6,FPR=3/10=0.3.如此这样,将1~20每个样本的评分均作为分类器的判定阈值,可以得到20组TPR和FPR的有序数对;然后不妨以TPR和FPR为两个坐标轴建立一个直角坐标系,就可以得到这样的图像:

这样每一组图像在图中都会有一个坐标,可以连成一条折线。一般地我们希望分类器得到的分类结果是完全正确的,也就是正例样本全部都能够被检测出来,并且不会混入真反例样本,这个时候TPR->1且FPR->0,反应在图像上好的分类器的折线应该更加接近左上角。当样本足够多时,折线就近似为圆滑的曲线,类似于这个样子【2】:

从这个图上看,分类器A的结果肯定比分类器B要好。这个就是AOC曲线以及它的含义,通过这样的分析理解,感到自己明白了很多。

附上绘图所使用的MATLAB程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%code type:MATLAB
%绘制ROC曲线,demo

clear all;
close all;
clc;

%测试样本数据
samples=[
    1,0.9;
    1,0.8;
    0,0.7;
    1,0.6;
    1,0.55;
    1,0.54;
    0,0.53;
    0,0.52;
    1,0.51;
    0,0.505;
    1,0.4;
    0,0.39;
    1,0.38;
    0,0.37;
    0,0.36;
    0,0.35;
    1,0.34;
    0,0.33;
    1,0.30;
    0,0.1];

%首先准备绘制ROC曲线
figure;
%开始计算TPRFPR
tpr=zeros(20,1);
fpr=zeros(20,1);
%这里的i表示以第i个样本的评分作为分类阈值
for i=1:20
    %正例样本计数
    p_cnt=0;
    %这里的j表示在统计正例个数的时候,遍历到的样本的id
    for j=1:i
        %判断这个遍历到的样本是不是正例
        if(samples(j,1)==1)
            %是?计数器++
            p_cnt=p_cnt+1;
        end
    end
    
    %计算TPR FPR
    tpr(i)=p_cnt/10;    %(10)是表示样本总体中的真正例个数总数为10
    fpr(i)=(i-p_cnt)/10;    %这里的10则是样本总体中的真反例个数总数    
end

%计算完成之后需要做的事情就是……画点,连线
plot(fpr,tpr,'*b-');
xlabel('FPR');
ylabel('TPF');
title('ROC Curve');
text(fpr+0.02,tpr+0.02,num2str(samples(:,2)));

参考文献:

【1】dzl_ML.机器学习之分类器性能指标之ROC曲线、AUC值.博客园,https://www.cnblogs.com/dlml/p/4403482.html.20150408,20181105.

【2】Dengchao.博客园,ROC曲线.https://www.cnblogs.com/cdeng/p/3471527.html.20131212,20181105.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145645.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ROC曲线及AUC值[通俗易懂]
参考文献:【ROC曲线与AUC值】,【ROC,AUC最透彻的讲解(实例分析+matlab代码)】,【AUC计算方法与Python实现】,【AUC曲线计算方法及代码实现】
全栈程序员站长
2022/08/29
3.3K0
ROC曲线及AUC值[通俗易懂]
Precision, Recall, F-score, ROC, AUC
正样本就是使系统得出正确结论的例子,负样本相反。 比如你要从一堆猫狗图片中检测出狗的图片,那么狗就是正样本,猫就是负样本;反过来你若是想检测出猫的图片,那么猫就是正样本,狗就是负样本。
海天一树
2018/08/17
2.1K0
Precision, Recall, F-score, ROC, AUC
你真的了解模型评估与选择嘛
前面几讲我们基于数据分析师需要掌握的基本技能,从SQL出发,学习了统计学的基本知识,在系统层面基本讲完了数据分析师需要具备的能力。下面几讲,我们会围绕数据挖掘工程师需具备的知识体系展开,今天会着重介绍机器学习中模型评估与选择的基础知识。
数据万花筒
2020/12/30
7440
你真的了解模型评估与选择嘛
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
同见博客:http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/(对Latex公式支持更好) ---- 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。在机器学习中,有一个普遍适用的称为混淆矩阵(confusion matrix)的工具,它可以帮助人们更好地了解分类中的错误。 比如有这样一个在房子周围可能发现的动物类型的预测,这
zhwhong
2018/05/16
2.5K0
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。在机器学习中,有一个普遍适用的称为混淆矩阵
用户1332428
2018/03/09
3.6K0
机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
PR曲线、ROC曲线、AUC能干个啥
PR曲线实则是以precision(精准率)和recall(召回率)这两个变量而做出的曲线,其中recall为横坐标,precision为纵坐标。
用户3570225
2024/05/19
9350
PR曲线、ROC曲线、AUC能干个啥
受试者工作特性曲线 (ROC) 的原理及绘制方式
受试者工作特性曲线 (Receiver Operating Characteristic, ROC) 曲线是生信分析中一种常用的性能评估方法,那么他背后的原理是什么呢?他为什么会被推荐作为二分类模型的优秀性能指标呢?
叶子Tenney
2024/05/28
3K0
受试者工作特性曲线 (ROC) 的原理及绘制方式
机器学习评价指标合辑(Precision/Recall/F1score/P-R曲线/ROC曲线/AUC)
在训练模型时,我们需要使用各种评价指标评估模型的效果。然而,在我初入门时,很多概念都搞不清楚,网上大部分总结或者比较简单,或者杂糅在一起,有点凌乱,甚至可能还有错误,在此抛砖引玉,总结一下各种常用的评价指标,以备使用时查阅,如有错误欢迎指出。
枫桦
2022/08/02
2K0
机器学习评价指标合辑(Precision/Recall/F1score/P-R曲线/ROC曲线/AUC)
模型评价之混淆矩阵、ROC曲线与AUC
前面我们已经介绍了逻辑回归、决策树、随机森林这几种常用的分类模型,不知道大家有没有留意到,我们在前面做模型评价的时候都会用到一个指标--AUC,通过AUC值的大小来评判模型好坏。前面我们有简单提过AUC值越大表示模型效果越好,这到底是为什么呢?本节课就给大家详细讲解分类模型中常用的模型评价方法--混淆矩阵、ROC曲线与AUC。
用户7569543
2020/07/17
1.6K0
ROC曲线的理解
考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。
全栈程序员站长
2022/08/29
5850
ROC曲线的理解
模型评估指标AUC和ROC,这是我看到的最透彻的讲解
blog.csdn.net/liweibin1994/article/details/79462554
double
2019/09/18
2.8K0
模型评估指标AUC和ROC,这是我看到的最透彻的讲解
ROC曲线的含义以及画法
ROC的全名叫做Receiver Operating Characteristic(受试者工作特征曲线 ),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。其主要分析工具是一个画在二维平面上的曲线——ROC 曲线。ROC曲线以真正例率TPR为纵轴,以假正例率FPR为横轴,在不同的阈值下获得坐标点,并连接各个坐标点,得到ROC曲线。 对于一个分类任务的测试集,其本身有正负两类标签,我们对于这个测试集有一个预测标签,也是正负值。分类器开始对样本进行分类时,首先会计算该样本属于正确类别的概率,进而对样本的类别进行预测。比如说给出一组图片,让分类器判断该图片是否为汉堡,分类器在开始分类前会首先计算该图片为汉堡的概率,进而对该图片的类别进行预测,是汉堡或者不是汉堡。我们用概率来表示横坐标,真实类别表示纵坐标,分类器在测试集上的效果就可以用散点图来表示,如图所示
全栈程序员站长
2022/08/28
1.2K0
ROC曲线的含义以及画法
评价指标 | ROC曲线和AUC面积理解
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。例如,神经网络在一般情形下是对每个测试样本预测出一个[0.0,1.0]之间的实值,然后将这个值与阈值0.5进行比较,大于0.5则判为正例,否则为反例。这个阈值设置的好坏,直接决定了学习器的泛化能力。
OpenCV学堂
2019/10/15
1.8K0
评价指标 | ROC曲线和AUC面积理解
pr曲线 roc曲线_roc曲线与auc的含义
查准率,表示所有被预测为正类的样本(TP+FP)是真正类(TP)的比例: P = T P T P + F P P= \frac{TP}{TP+FP} P=TP+FPTP​ 查全率,表示所有真正类的样本(TP+FN)中被预测为真正类(TP)的比例: R = T P T P + F N R= \frac{TP}{TP+FN} R=TP+FNTP​
全栈程序员站长
2022/11/01
2.1K0
pr曲线 roc曲线_roc曲线与auc的含义
小白也能看懂的 ROC 曲线详解
ROC 曲线是一种坐标图式的分析工具,是由二战中的电子和雷达工程师发明的,发明之初是用来侦测敌军飞机、船舰,后来被应用于医学、生物学、犯罪心理学。
数据STUDIO
2023/10/19
1.1K0
小白也能看懂的 ROC 曲线详解
ROC及AUC计算方法及原理「建议收藏」
在大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价是不能相提并论的。例如在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件,还有在癌症检测中,宁愿误判也不漏判。在这种情况下,仅仅使用分类错误率来度量是不充分的,这样的度量错误掩盖了样本如何被错分的事实。所以,在分类中,当某个类别的重要性高于其他类别时,可以使用Precison和Recall多个比分类错误率更好的新指标。
全栈程序员站长
2022/08/27
2.8K0
ROC及AUC计算方法及原理「建议收藏」
PR曲线和ROC曲线概念及其区别
Precision=TP/(TP+FP) Recall=TP/(总的正样本)=TP/(TP+FN) # 这个时候的 TPR=TP/(TP+FN)=Recall # 真正例率 FPR=FP/(TN+FP) # PR曲线 横Recall,纵Precision PR曲线的绘制 场景:有限样本。 方法:固定分类阈值(比如0.5),对分类器的预测结果按照置信度进行降序排序,然后按此顺序对样例进行预测,每次可以计算出当前的查全率(Recall)和查准率(Precision),然后以此作图,绘制出P-R曲线。(疑惑??:P-R曲线是按照固定的分类阈值,还是按照西瓜书所讲,按照置信度降序的顺序,逐个把样本作为正例进行预测??我做商汤的笔试题,是采取固定分类阈值的策略) ROC曲线 横FPR,纵TPR,理想的情况是TPR=1,FPR=0,一般来说,FPR增大,则TPR也会跟着增大。 ROC曲线的绘制: 场景:有限样本。 方法:卡阈值,对学习器的预测结果排序,排在前面的是最可能为正例的样本,最后的是最不可能的样本,然后计算不同阈值下的TPR和FPR值,绘制出曲线。 卡阈值作为正负样本的判定依据,阈值较高时,Precision比较大,阈值较低时,Recall较大。(推荐的话,想Precision较大,用户希望排名靠前的推荐是自己想要的,刑侦的话希望Recall较大,不错过一个犯人) AUC:ROC曲线下面积。 PR和ROC曲线应用范围: 1.当正负样本比例差不多的时候,两者区别不大。 2.PR曲线比ROC曲线更加关注正样本,而ROC则兼顾了两者。 3.AUC越大,反映出正样本的预测结果更加靠前。(推荐的样本更能符合用户的喜好) 4.当正负样本比例失调时,比如正样本1个,负样本100个,则ROC曲线变化不大,此时用PR曲线更加能反映出分类器性能的好坏。 5.PR曲线和ROC绘制的方法不一样。
全栈程序员站长
2022/07/02
5900
机器学习面试题集-如何画 ROC 曲线
Receiver Operating Characteristic Curve 是评价二值分类器的重要指标
杨熹
2019/05/24
1.7K0
混淆矩阵、AUC、ROC,傻傻分不清楚?来看这篇就对了
今天是机器学习专题的第18篇文章,我们来看看机器学习领域当中,非常重要的其他几个指标。
TechFlow-承志
2020/05/05
1.4K0
ROC曲线绘制原理及如何用SPSS绘制ROC曲线
ROC曲线(Receiver operating characteristic curve),即受试者工作特征曲线,主要用来评价某个指标对两类被试(如病人和健康人)分类/诊断的效果,以及寻找最佳的指标临界值使得分类效果最好。但是ROC曲线绘制的原理是什么,或者说如何一步步画出ROC曲线,以及如何用SPSS软件快速绘制出ROC曲线呢?对于很多新手朋友来说,对上述问题并不十分清楚。笔者这里对上述问题进行详细阐述,以期大家对ROC曲线有更深入的了解。
悦影科技
2020/11/18
5.2K0
ROC曲线绘制原理及如何用SPSS绘制ROC曲线
相关推荐
ROC曲线及AUC值[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文