ROC(Receiver Operating Characteristic)曲线即受试者工作特征曲线。ROC曲线与坐标轴围成的面积被称为AUC(Area Under Curve),这两个指标和敏感性、特异性和准确性一起,是评估算法模型性能常用的指标。
在进一步介绍ROC曲线如何绘制之前,先引入几个概念。TP(True Positives),TN(True Negatives),FP(False Positives),FN(False Negatives) 分别为阳性样本正确分类数量、阴性样本正确分类数量、阳性样本错误分类数量以及阴性样本错误分类数量。
阳性样本正确分类数量占阳性样本总数的比例TPR(即敏感性,Sensitivity),阴性样本正确分类的数量占阴性样本总数的比例FPR(即1-特异性,1-Specificity)计算如下:
(阳性样本被判断为阳性/阳性样本总数)
(阴性样本被判断为阳性/阴性样本总数)
ROC曲线横坐标为FPR,纵坐标为TPR。ROC曲线直观上反映了模型在选择不同阈值的时候敏感性与1-特异性的趋势走向。
绘制ROC曲线需要得到输出结果的概率。对于普通数值型输入,模型测试时在输出部分增加softmax函数,然后取阳性概率值。
GT = torch.FloatTensor()
PD = torch.FloatTensor()
output_sfmx = torch.softmax(logits, dim=1)[:,1] # 取输出结果的概率,并取第二列
PD = torch.cat((