二分类-混淆矩阵
理解三步走
- 一看到头字母缩写,想到这几个单词
第一位:True正确的,False 错误的
第二位:Positive 肯定的(正类), Negative 否定的(负类) - 理解代表的含义
第一位:模型判断的对错(形容词,对了or错了)
第二位:模型判断的结果(名词,正类or负类) -
混淆组合
模型预测是否正确.预测的结果
TP:判断对,判断结果是正类
TN:判断对,判断结果是负类
FP:判断错,判断结果是正类,误识(正类)
FN:判断错,判断结果是负类,漏识(正类)
-------------基于混淆矩阵,衍生的一揽子指标--------------------------------------
先看这个,明白了这部分可以跳过了
TPR(真正率)+ FNR(漏识率) = 1
TNR(真负率)+ FPR(误识率) = 1
TPR(Recall)
True Positive Rate ,正类被报正类的比率,真正率
TPR = TP/(TP+FN) , 被上报为正/ 所有的正类
又叫recall,召回率,真正类率,真阳率,灵敏度(Sensitivity)
值越大越好
FNR
False Negative Rate,正类错报为负类,漏识率(假负率)
FNR = FN /(TP+FN),错预测为负类/所有正类
值越小越好
TNR
True Negative Rate,负类被报为负类的比率,真负率
TN = TN(TN+FP)
又叫Specific,值越大越好
FPR
False Positive Rate,负类被误报的比率,误识率(假正率)
FRP = FP/(TN+FP),被误报为正/所有的负类
又叫特异度,等价于1-Specific
值越小越好
Precision
精确率,正类的比率,分子预测正确的正类,分母预测出来的正类(包含True &false)
Precision = TP / (TP + FP)
注意和TPR的区别,TPR分母是实际正类
Accuracy
正确率,与精确率的区别,不只是考虑正类,也考虑负类,整体的正确率
A = (TP+TN)/(TP+TN+FP+FN)
ROC曲线(待补充)
不同阈值下,FP-TP曲线
-------------业务扩展使用的常用指标---------------------------------------------------
FAR
False Accept Rate,错误通过率,误识率
类FPR(false positive rate),误识率
类 IAR(imposter Accept rate),“冒名”通过率
FRR
False Reject Rate,正确未通过率,漏识率
类FNR,False Negative Rate,正类错报为负类,拒识率(假负率)
类SAR,Spoofing Accept Rate,“欺骗”接受率,常用于活体检测
相似度和阈值
如对比两张照片,算法会出一个相似度值,范围0~100
实际产品会设置阈值T,1e-6 = 1*10^(-6),即百万分之一,1e-5 十万一
相似度值>阈值T则判定为一个人,反之则不是
阈值和指标
一般阈值越高,误识率越低,漏识率越高
误识率FAR(T), 漏识率FRR(T) 都是基于T的单调函数
求逆,将FRR表示成关于FAR的函数FRR(FAR),就是ROC曲线
如百万一指标:就是FAR= 1e-5 时,对应的FRR(或TP)
千一95%的意思是指在FAR=0.1%的时候,可以做到TP=95%
-------------实际业务场景下理解指标---------------------------------------------------
易用性看正类的比率,真正、漏识
安全性看负类的比率,真负、误识
人脸识别
- 描述通过指标(看易用性)
对外:FRR
参考:通过率、TPR、Recall - 描述误判率(看安全性)
对外:FAR
参考:误识率、FPR
活体检测
- 描述对真人的通过率(看易用性)
对外:FRR
参考:真人误检率(真人误杀率)、真人通过率 - 描述对攻击的防御能力(看安全性)
对外:SAR
参考:攻击检出率、攻击漏检率 - 补充关于活体
活体攻击,一般是想要识别出攻击(图片、头模型、假人等),所有攻击被定义为正类,术语常用真人误杀、攻击漏检
在采集时,需采集算法容易错的样本
睁闭眼检测
- 描述睁眼判断准确率
对外:FRR(睁眼误判为闭眼)、FAR(闭眼误判为睁眼)
参考:双百率(当正闭眼误判率调节相同的情况下,误判率为百分多少)
描述更贴切场景,少用术语类,通过率、准确率;一般睁眼为正类
注意力检测
- 描述注意力判断的准确率
对外:FRR(注视误判非注视)、FAR(非注意误判为注视)
参考:双百率(当注和非注判率调节相同的情况下,误判率为百分多少)
描述更贴切场景,少用术语类,通过率、准确率;一般注视为正类
眼嘴鼻遮挡检测
- 描述遮挡判断准确率,一般非遮挡为正类
对外:FRR(非遮挡误判遮挡)、FAR(遮挡误判为遮挡)
注意场景类的,要明确好哪种场景是正类
一般期望的场景是正类
如,注视、非遮挡(虽然有个非,但是不遮挡是想要的结果)
-------------衍生衍生再衍生的可用指标------------------------------------------------
FPPI
False Positive num Per Image 每张图中错误检索的数目,值越小越好
FPPV
FP num per Video
FPPH
FP num per Hour
FPPD
FP num per day
-------------还有什么呢,包含但不限于------------------------------------------------
存储指标
一般指的是模型站内存大小,常见单位兆M
速度
计算速度,模型训练和预测需要的时间,处理1次需要的时间,常见单位ms(毫秒)
鲁棒性
处理缺失值和异常值的能力
可拓展性
处理大数据集的能力
可解释性
模型预测标准的可解释性,比如决策树产生的规则容易理解,而神经网络黑盒有大量参数不好理解
易集成性
模型是为了实现某种场景,比如手机人脸识别,要集成到手机平台
集成的难易程度,也是甲
方考虑的因素之一
其他
比如人脸检测,看可以兼容的角度范围、最小人脸的pixel值、可检测的人力数目
-------------如果指标异常,来找找原因------------------------------------------------
测试数据量不够?
人脸比对示例:
100人,每人1张底库(100张底图)10张查询图(1000张查询图)
总共对比100*1000次= 100000次
其中1000对正样本(自己对比自己),99000对负样本(自己对比别人)
可以看万一的指标,但侧十万一就不太可信了
正负样本是否均匀采样?
正负样本要均衡
底库质量不好?
这个很好理解,模糊、遮挡、跨年龄等等
数据标注错误?
同个人标注为不同人,会出现相似分比较高的误识别
非采集人员的人脸混入数据集离,导致同一人的数据有其他的脸,出现相似分低的拒识别
train和val集是否干净?
- val的干净程度决定了模型选取的标准,train集的感觉程度决定了模型的优劣,
- 一般train比val量大,有点noise影响不大,有问题优先check val集->train集
- train集清洗,可以重采样把loss最大的部分挑出重标注
- 清洗val集时,应该让数据定义更纯粹,把有歧义的(需要仔细分别或凭干净判断)的样本去除,除非要故意设立hard_case集
- 清洗train集时,应该让数据定义更符合需求,如眯眼定义为睁眼,那就标注为睁眼,而非去掉歧义样本
看badcase
从难到易,定位原因
用线上demo(成熟模型基线)跑识别分数,对分
哪些情形容易出错
大角度、遮挡(口罩、墨镜、刘海、帽子)、模糊、低信噪比、化妆