从TP、FP、TN、FN到ROC曲线、miss rate、行人检测评估

想要在行人检测的evaluation阶段要计算miss rate,就要从True Positive Rate讲起:miss rate = 1 - true positive rate

true positive rate毕竟是一个rate,是一个比值。是谁和谁比呢?P

要从TP、FP、TN、FN讲起。
考虑一个二分类问题:一个item,它实际值有0、1两种取值,即负例、正例;而二分类算法预测出来的结果,也只有0、1两种取值,即负例、正例。我们不考虑二分类算法细节,当作黑箱子就好;我们关心的是,预测的结果和实际情况匹配、偏差的情况。

TP:true positive,实际是正例,预测为正例
FP:false positive,实际为负例,预测为正例
TN:true negative,实际为负例,预测为负例
FN:false negative,实际为正例,预测为负例

也就是说:我们不仅考虑算法的预测结果对不对,还要考虑是“哪一种对”;我们还考虑算法预测错的情况,并且我们深究“是哪一种错”:

OK,既然把TP、FP、TN、FN搞清楚了,那么看几个rate的定义。
TPR:true positive rate, 等于,又叫precision rate
FPR:false positive rate,等于
TNR:true negative rate,等于
FNR:false negative rate,等于,又叫miss rate
观察后不难发现,每个rate的公式,都是前,#表示number,即统计数量。
而结合前面画的那张图,容易发现,每个rate公式还可以通过画图理解:每个rate都等于,虽然这么说起来不严谨,赫赫但是形象化的理解更容易记住。
还有一点:fnr+tpr=1, fpr+tnr=1
其实后面使用到的,更多的是fnr,俗称miss rate,作为ROC曲线的纵坐标;而横坐标则取fpr

理解阈值
再次考虑二分类问题。你说,真实世界会存在严格的二分类吗?就说人的性取向,有的人也是“徘徊不定”的,这样的人真是让人头疼但是必须想办法处理掉。因此设定一个阈值:根据这个人的一系列举动,给ta的性别累计打分并最终映射到[0,1]区间(得到score),然后比如设定阈值t为0.5,若score>t=0.5,那么ta是男的;否则是女的。
回到理论上,每一个需要预测的变量,其取值都可以根据阈值进行划分。对于二分类,我设定阈值t,当某个item取值大于t,就判定为正例(positive),否则判定为负例(negative)。
也就是说,我手头有一堆预测得到的数据(甭管我用的是哪种机器学习算法),我通过设定不同的阈值,能得到不同的TP、FP、TN、FN取值,相应的TPR、FPR、TNR、FNR取值也产生变化。那么这种变化我就可以通过图像显示出来:对于一个确定的阈值t,FPR和TPR是确定的,得到一个(fpr,tpr)元组;将阈值从0到1变化,当t=0时所有预测结果都大于0都是Positive所以FP=TP=1,FN=TN=0,fpr=tpr=1,得到(1,1)点,当t=1时所有预测结果都小于0都是Negative所以FP=TP=0,FN=TN=1,fpr=tpr=0,得到(0,0)点,t取(0,1)上的值时则fpr和tpr都在0到1之间变化,且不难发现:当t增加,#FP也减小,#TN增加,则fpr减小;当t增加,#TP减小,#FN增加,则tpr减小。也就是说,当阈值t从0变化到1,fpr和tpr也单调减小,从(1,1)减小到(0,0)

呃,这里不知道为什么,大多数我看到的文献,都是画出fpr和tpr的图像,而把阈值本身省掉了,得到ROC曲线:

Anyway,我们继续,我们的目标是搞清楚行人检测评估中的miss rate怎么算。等等,好像已经出来了:miss rate = 1 - true positive rate,那么对应的YoX图像,也就是miss rate - false positive rate图像,就应当是单调下降的曲线。

绘图
干巴巴的说什么单调增加单调下降缺少直观印象,有代码有绘图才是正道~
我使用的是Caltech行人检测数据集网站主页提供的matlab工具,因为想要搞明白的miss rate是在pedestrian检测中作为评价标准出现,而这个Caltech数据集以及matlab工具都是行人检测中会用到的工具。废话不多说,下载好这个toolbox后打开并添加到path中,进入matlab目录调用plotRoc函数就能玩了,比如:

1.k=2; x=0:.0001:1; data1 = [1-x; (1-x.^k).^(1/k)]‘;2.k=3; x=0:.0001:1; data2 = [1-x; (1-x.^k).^(1/k)]‘;3.hs(1)=plotRoc(data1,struct(‘color‘,‘g‘,‘marker‘,‘s‘));4.hs(2)=plotRoc(data2,struct(‘color‘,‘b‘,‘lineSt‘,‘--‘));5.legend( hs, {‘roc1‘,‘roc2‘} ); xlabel(‘fp‘); ylabel(‘fn‘);

图中纵坐标标记为fn,其实是fnr(false negative rate),也就是1-tnr。fnr俗称miss rate。而横坐标fpr(false positive rate),也可以用FPPI(False Positive Per Image)或者FPPW(False Positive Per Window)来表示。

OK,总算搞懂了:要想绘制行人检测的evaluation阶段的miss rate - FPPI图像(roc曲线),需要有带annotation的测试图片(提供作为ground truth的object window的bbox坐标),并且用某个算法(各种机器学习模型都行,看效果了)对每个测试图片算出若干bbox坐标:前者()作为“实际取值”,后者()作为“预测取值”,当阈值t从0变化到1,每个预测取值也会变化,从{TP,FP,TN,FN}中取值,而在任意一个t的取值上,FPR、FNR(miss rate)都可以通过统计#TP,#FP,#TN,#FN后算出,因而就能得到plotRoc绘图函数所需的参数D,进而绘制出ROC曲线勒~

时间: 2024-10-13 07:24:58

从TP、FP、TN、FN到ROC曲线、miss rate、行人检测评估的相关文章

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

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

ROC曲线 VS PR曲线

sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share https://www.plob.org/article/12476.html(原文链接)  初识ROC曲线 1. RO

R语言中绘制ROC曲线和PR曲线

接收器操作特性(ROC)曲线可能是评估评分分类器的预测性能的最常用的度量. 预测正类(+1)和负类(-1)的分类器的混淆矩阵具有以下结构: 预测/参考类 +1 -1 +1 TP FP -1 FN TN 这里,TP表示真阳性的数量(模型正确预测正类),FP表示误报的数量(模型错误地预测正类),FN表示假阴性的数量(模型错误地预测阴性类),TN表示真阴性的数量(模型正确预测阴性类). ROC曲线 在ROC曲线中,相对于假阳性率(FPR,x轴)绘制真阳性率(TPR,y轴).这些数量定义如下: TPRF

ROC曲线

ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标.(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高.在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值. ROC曲线的例子 考虑一个二分问题,即将实例分成正

【数据挖掘】朴素贝叶斯算法计算ROC曲线的面积

题记:          近来关于数据挖掘学习过程中,学习到朴素贝叶斯运算ROC曲线.也是本节实验课题,roc曲线的计算原理以及如果统计TP.FP.TN.FN.TPR.FPR.ROC面积等等.往往运用ROC面积评估模型准确率,一般认为越接近0.5,模型准确率越低,最好状态接近1,完全正确的模型面积为1.下面进行展开介绍: ROC曲线的面积计算原理 一.朴素贝叶斯法的工作过程框架图 二.利用weka工具,找到训练的预处理数据 1.利用朴素贝叶斯算法对weather.nominal.arff文件进行

【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考

ROC曲线 在网上有很多地方都有说ROC曲线对于正负样本比例不敏感,即正负样本比例的变化不会改变ROC曲线.但是对于PR曲线就不一样了.PR曲线会随着正负样本比例的变化而变化.但是没有一个有十分具体和严谨地对此做出过分析和论证(至少我没有找到). 此处记为结论1: 结论1:PR曲线会随着正负样本比例的变化而变化:但是ROC曲线不会. 此处我就这一问题进行了详细的分析论证,并在这个过程中引发了很多思考. 首先,如何分析这个问题呢? 看下ROC曲线是由TPR和FPR组成的 下面我们这样来分析这个问题

ROC曲线与AUC值

本文根据以下文章整理而成,链接: (1)http://blog.csdn.net/ice110956/article/details/20288239 (2)http://blog.csdn.net/chjjunking/article/details/5933105 1.概述 AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准.这样的标准其实有很多,例如:大约10年前在machine learning文献中一统天下的标准:分类精度:在信息检索(IR)领域中常

Precision/Recall和ROC曲线与分类

[混淆矩阵与Precision/Recall和ROC曲线的关系] Precision/Recall和ROC曲线的基本介绍可以看我的另一篇博客: http://blog.csdn.net/adminabcd/article/details/46475361 接下来我们引入混淆矩阵: 当我们对样本进行分类时,会分成正例样本(记为1)和负例样本(记为0),根据分类结果与原始分类,可以计算出相应的混淆矩阵.那么则有: Precision(pre)=true positive rate=tp/(tp+fp

机器学习之分类器性能指标之ROC曲线、AUC值

分类器性能指标之ROC曲线.AUC值 一 roc曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例:(1-Specificity) 纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率) 2针对一个二分类问题,将实例分成正类(postive