各指标计算规则
考虑一个二分问题,如人脸验证,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况:如果一个实例是正类并且也被预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive),误报。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(False negative),漏报。具体如下表所示:
actual\pediction | positive | negative | rate |
---|---|---|---|
positive | TP | FN | TPR=TP/(TP+FN) |
negative | FP | TN | FPR=FP/(FP+TN) |
TPR为命中率;
FPR=FAR=FMR为误识率;
FRR=FNMR=(1-TPR)为识拒率;
ACC=(TP+TN)/(TP+FN+FP+TN),为判对准确率;
在有些文献中将误识率表达为FMR(False match rate),以及将拒识率表达为FNMR(False non-match rate)。
ROC曲线
在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。
ROC曲线(Receiver Operator characteristic Curve)是一种已经被广泛接受的系统匹配算法测试指标,它是匹配分数阈值、误识率以及拒识率之间的一种关系。它反映了识别算法在不同阈值上,拒识率和误识率的平衡关系。
下图给出了ROC曲线,其中横坐标是误识率,纵坐标是命中率,等错误率(EER Equal-Error Rate)是命中率和误识率的一个平衡点,等错误率能够取到的值越低,表示算法的性能越好:
理想情况下,TPR应该接近1,FPR应该接近0。ROC曲线上的每一个点对应于一threshold,对于一个分类器,每个threshold下会有一个TPR和FPR。比如Threshold最大时,TP=FP=0,对应于原点;Threshold最小时,TN=FN=0,对应于右上角的点(1,1)。
FAR-FRR曲线,或FMR-FNMR曲线大致示意如下:
阈值与各指标的关系如下:
随着阈值threshold增加,TP和FP都减小,TPR和FPR也减小,ROC点向左下移动。
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
EER
EER(Equal Error Rate)是相等错误率的意思,也就是把FAR、FRR两个参数统一为一个参数,来衡量指纹算法的整体性能。
FAR和FRR是同一个算法系统的两个参数,把它放在同一个坐标中,如下图所示,FAR是随阈值增大而减小的,FRR是随阈值增大而增大的。因此它们一定有交点。这个点是在某个阈值下的FAR与FRR等值的点。习惯上用这一点的值来衡量算法的综合性能。对于一个更优的算法,希望在相同阈值情况下,FAR和FRR都越小越好。
把FAR和FRR曲线都向下平移,同时相交点ERR也向下平移,所以EER值越小的时候,表示算法的整体性能越高。
由于当FRR与FAR相交时对应的阈值都很小,也就是说此时的相似度阈值连30%都不到。实际使用中的阈值至少设在80%以上,所以EER值并不被用在大众化场合来描述算法的性能,只是在竞赛排名中使用。
CMC曲线
CMC曲线就是算一种top-k的击中概率,主要用闭集测试。比如有n个注册样本,现在想测试性能,测试样本依次和n个注册样本算取一个距离,然后排序,看类类样本位于前top-k,最后统计得到CMC曲线,示意图如下,横坐标为topK中的K值,纵坐标为命中率: