近期,一直在做人脸识别方面的研究,在阅读paper的时候,发现对一些指标认识不足,因此,从新学习认识算法的评价指标,非常感谢https://blog.csdn.net/liuweiyuxiang/article/details/81259492,学习到了很多。

由于在做人脸之前,做的是工业上的检测,对于工业上检测,常用指标为TPR(True Positive Rate),FPR(False Positive Rate),TPR以及FRP是在做分类、检测常用的指标分析,TPR为真正率,FPR为假正率,他们均是基于混淆矩阵的度量标准。

混淆矩阵

真阳性(True Positive Rate):分类器正确分类且本身为正例,为图上的15

真阴性(True Negative Rate):分类器正确分类且本身为负例,为图上的118

假阳性(False Positive Rate):分类器错误分类本身为负例,为图上的12

假阴性(False Negative Rate):分类器错误分类本身为正例,为图上的47

因此,由上述所知,TPR=TP/(TP+FN),即正确识别的正例数据占据总的正例数据的比例,为召回率;FPR=FP/(FP+TN),即实际值为负例数据,将负例数据预测为正例的百分比;

在了解了TPR、FPR以及混淆矩阵后,需要了解ROC曲线,即能直观的描述分类器的优劣,根据TPR以及FPR来绘制ROC曲线,如图所示,横坐标为FPR,纵坐标为TPR:

曲线离(0,1)越近的点分类器的效果越好,同样AUC(area under thecurve)即ROC曲线的下部面积,越大分类器越好。

在了解了TPR、FPR、ROC以及AUC的相关信息后,对于人脸识别的TAR、FAR、FRR以及ERR较更容易理解。

TAR(True Accept Rate)表示正确接受比例,FAR(False Accept Rate)表示错误接受比例,所谓的接受比例即在人脸验证过程中,两张图像被认为是同一个人

FAR:即在做人脸验证过程中,通常是将两张人脸映射到高维空间的高维向量,然后计算两个高维向量的相似度以及距离。一般认为两张人脸是同一人,那么相似度较高,不是同一个人相似度较低。通过给定一个阈值T,如果两张的人脸的相似度大于T,则被认为同一人脸,反之则为不同人。无论将T设置为任何值,均会出现FAR一定的错误接受比例,FAR即在比对不同人的图像时,把其中的图像当作为同一人的比例,FAR的比例越小越好。FAR=非同人相似度>T/非同人比较的次数。

TAR:在比对相同人图像的时候,把相同人图像识别正确的比例,即正确接受比例。TAR=同人相似度>T/同人比较的次数,相比于FAR相比,TAR越高意味着模型的鲁棒性越好。

FRR:错误拒绝率,FRR=同人相似度<T/同人相似度,FRR=1-TAR

EER:即等误率,即在某一值时,FRR=FAR

在阅读论文中,经常常见的指标为:TAR @ FAR=0.00100,之所以采用这样的指标是由于如上所示,不同的阈值对应着不同的FAR以及TAR。假如增大阈值,那么FAR的比例变小,同样TAR的比例也变小,FRR的比例增大。因此在做报告的时候,需要指定FAR的比例,即在相同错误接受比例下的TAR越大,即识别鲁棒性越强。

使用python绘制ROC曲线

常用的绘制ROC曲线是通过使用sklearn.metrics,包括计算召回率,精确率等,在绘制ROC曲线时,先求得评估得指标即调用metrics下的roc_curve,auc再去绘制,代码如下所示,

from sklearn.metrics import roc_curve, auc
###得到roc数据
# 数据准备
>>> import numpy as np
>>> from sklearn import metrics
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])# roc_curve的输入为
# y: 样本标签
# scores: 模型对样本属于正例的概率输出
# pos_label: 标记为正例的标签,本例中标记为2的即为正例
>>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
# 假阳性率
>>> fpr
array([ 0. ,  0.5,  0.5,  1. ])
# 真阳性率
>>> tpr
array([ 0.5,  0.5,  1. ,  1. ])
# 阈值
>>> thresholds
array([ 0.8 ,  0.4 ,  0.35,  0.1 ])# auc的输入为很简单,就是fpr, tpr值
>>> auc = metrics.auc(fpr, tpr)
>>> auc
0.75###绘制ROC曲线
import matplotlib.pyplot as plt
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve (area = %0.2f)' % auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

参考博客:

https://blog.csdn.net/liuweiyuxiang/article/details/81259492

关于评价指标的理解(TPR,FPR,TAR,FAR,FRR,ERR)相关推荐

  1. 模型评估指标-2-ROC与PR曲线对比,TPR/FPR/Precision关系,3种特殊的评估指标

    导语:在进阶篇里面,将会讨论ROC和PR曲线的联系,在不平衡数据中的偏差问题,同时利用公式来说明TPR/FPR/Precision三者之间的关系,在第三部分结合业务场景将介绍了几个特殊指标,但是没有说 ...

  2. 业务场景是什么意思_identification的TPR@FPR是什么意思?--机器学习指标结合场景再解析...

    Arcface论文有在Trillion-Pairs的实验结果,其中有个指标叫Id (@FPR=1e-3),而[Trillion Pairs](Trillionpairs)关于它的identifitio ...

  3. 逻辑回归模型混淆矩阵评价与ROC曲线最佳阈值的好处(附Accuracy,TPR,FPR计算函数)

    一.得到阈值在0.5和0.8下模型的混淆矩阵 y_prob=result.predict(X_test)#得到概率值y_predict1=pd.DataFrame(y_prob>0.5).ast ...

  4. ROC受试曲线AUC[TPR/ FPR/截断点/StratifiedKFold/KFold]

    概念 ROC和AUC定义 ROC全称是"受试者工作特征"(Receiver Operating Characteristic).ROC曲线的面积就是AUC(Area Under t ...

  5. 人脸反欺骗中,TPR@FPR=10e-4的具体含义

    TPR@FPR=10e-4的具体含义 在论文的实验评估部分,经常会看看到TPR@FPR的情况: 它们是用来评估模型性能的指标之一,其中: TPR(True Positive Rate):在所有的真实正 ...

  6. TP,TN,FP,FN,F1,TPR,FPR (一图看懂)

    TP,TN,FP,FN,F1,TPR,FPR (一图看懂) 手画了一个图,应该挺清楚的吧,懂了吗?

  7. 如何理解误识率(FAR)拒识率(FRR),TPR,FPR以及ROC曲线

    平时在做指纹.人脸识别时,会用到一些评价算法性能评价指标.常见的当属以下几种指标: 误识率(FAR,false acceptance rate) 拒识率(FRR,false rejection rat ...

  8. 异常检测中的评价指标——TPR/FPR/P/A/F/R

    1.异常检测 相对于一般的分类问题(例如sklearn.datasets的load_iris数据集,是针对蝴蝶类型进行分类,对每一种类别同等关心),这里的"异常检测"主要指在多分类 ...

  9. 多分类TPR, FPR, ROC计算与画图

    sklearn.metrics.roc_curve() 首先,需要使用sklearn.metrics.roc_curve()函数 sklearn.metrics.roc_curve(y_true, y ...

最新文章

  1. 对标Oculus Quest2,爱奇艺奇遇VR打的什么牌?
  2. 阿里,腾讯,拼多多面试必挂:面对千万级、亿级流量怎么处理?
  3. Struts(十六):通过CURD来学习Struts流程及ModelDriven的用法
  4. 数据结构——二叉树的双序遍历
  5. java+jsp+网页制作,java+jsp+mysql网页制作总结(2)
  6. 如何在Golang中返回错误?
  7. ajax请求web服务返回json格式
  8. 什么是spring_Spring 源码第三弹!EntityResolver 是个什么鬼?
  9. 05_SpringCloud整合声明式HTTP客户端-Feign
  10. 《设计模式其实很简单》
  11. 判定2022年是否闰年c语言_闰年的来历
  12. 设计FMEA步骤四:失效分析
  13. 钣金缺口lisp_【Gu_xl】Lisp程序设计错误处理的技巧
  14. 如何关闭谷歌浏览器阅读清单(新方法)
  15. 金仓数据库 KingbaseES SQL 语言参考手册 (10. 查询和子查询)
  16. 梦熊杯-十二月月赛-白银组题解-D.智慧
  17. checkbox选中触发事件
  18. uni-app使用 (从下载到项目启动 流程 踩坑)
  19. 「技术趋势」软件开发人员应该了解的2021年技术趋势
  20. 2020美团点评暑期实习一面

热门文章

  1. myApps常用脚本API(一)
  2. 索引视图是否物理存储在数据库中以及使用索引视图的一些见解
  3. 连续16年稳居领导者象限,Aruba靠什么领跑有线和无线LAN市场?
  4. SpringBoot集成Redis报错链接超时以及无法识别的地址,存入redis中key乱码问题解决
  5. Python3 元组解包情况总结
  6. BUC算法及其Python实现
  7. Linux网络环境搭建
  8. 华为手机鸿蒙系统手机_华为鸿蒙系统迎巨大利好,世界首富正式认错,放弃第三大手机系统...
  9. 【移动通信】 01-移动通信概论
  10. sierrawireless