人脸识别或多分类问题的性能评判指标——ROC曲线绘制

混淆矩阵

TP(真阳) FP(假阳)
FN(假阴) TN(真阴)

ROC曲线

在理解ROC曲线之前,我们需要知道FPR(False Positive Rate)和TPR(True Positive Rate):
FPR=FP/(FP+TN),即预测为正样本(实际为负样本)占所有负样本的比例。
TPR=TP/(TP+FN),即预测为正样本(实际为正样本)占所有正样本的比例。
roc曲线:就是以FPR为横坐标,TPR为纵坐标,通过设定不同的阈值而绘制出许多坐标点,用这些坐标点拟合出一条曲线,即为ROC曲线。
正常情况下ROC曲线是一条上凸曲线,越凸代表分类效果越好。
人脸识别或多分类问题的性能评判指标——ROC曲线绘制

二分类的ROC曲线

现有一个分类器对6个测试样本(3个正样本,3个负样本)做出如下分类结果:

测试样本 正样本概率
T1 0.8
T2 0.7
T3 0.6
F1 0.5
F2 0.6
F3 0.1

测试样本T代表真实是正样本,F代表真实是负样本。
1.现在我们依次将阈值T设为正样本概率值(T=0.8,0.7,…),假如此时T=0.8,此时混淆矩阵为:

1 0
2 3

注:TP={T1},FP={},FN={T2,T3},TN={F1,F2,F3}
2.通过混淆矩阵可计算出(FPR,TPR)=(0,1/3),然后将该点绘制到坐标系中。
3.设置不同的阈值,重复上述操作,即可获得多个坐标点,将这些点进行拟合即可获得ROC曲线。由于本文只选了少量样本作为示例,并不能拟合为一条光滑的曲线。

多分类的ROC曲线

多分类的ROC曲线的画法其实就是画出各个类别的ROC曲线,然后进行平均。
假如这里有一个三分类的分类器,下面是对这10个样本进行分类的结果:
人脸识别或多分类问题的性能评判指标——ROC曲线绘制
1.我们先算类别A的混淆矩阵,此时只用关注A列,A列代表所有样本分别被预测为A的概率。当阈值T=0.5,若这些样本被预测为A的概率>=0.5,则它就被分类到A类。
所以混淆矩阵=

2 2
1 5

注:TP={A1,A2},FP={B1,C4},FN={A3},TN={B2,B3,C1,C2,C3}

2.通过混淆矩阵可计算出(FPR,TPR)=(2/7,2/3)

3.同样方法算出A类的其他阈值的坐标点,这样可以画出A类的ROC曲线。

4.在重复上述步骤,画出B类,C类的ROC曲线,取平均即为该分类器的ROC曲线。

人脸识别的ROC曲线

因为人脸识别的时候,测试类别是从未训练过的类别,所以并不能将测试样本直接输入到模型得到分类结果。通常是计算人脸之间的余弦相似度来进行分类,分别计算每一个测试样本与每一个模板样本的余弦相似度,余弦相似度最高的两个样本即属于同一类别。

但画ROC曲线的方法其实与多分类的方法相同,只是将多分类中的预测概率换成余弦相似度。