锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Paper Reading - 基础系列 - 常用评价指标 ROC、PR、mAP

时间:2022-12-16 09:00:00 amp连接器936286

计算机视觉更为可见-Paper&Code - 知乎

目录

混淆矩阵 (Confusion Matrix)

准确率/准确率 Precision

召回率/检出率/检全率 Recall

过杀率 Kill Rate

漏杀率 Miss Kill Rate

PR曲线、mAP(Mean-Average-Precision)

ROC曲线(receiver operating characteristic curve)、AUC(Area under Curve)


在写了这么多之后,我突然发现我忘记了最重要的部分。如何评估模型,本文将梳理一些常见的评估指标

混淆矩阵 (Confusion Matrix)

以图为准,混淆矩阵对角线的准确性可以除以总图片的数量计算。对角线上的数字越大越好。以猫和狗为例。=1正样本,狗=0

  • True positives: 简称为 TP,也就是说,正样本被正确识别为正样本,猫图->猫。
  • True negatives: 简称为 TN,即负样本被正确识别为负样本,狗图->狗。
  • False Positives: 简称为 FP,也就是说,负样本被误识别为正样本,狗图->猫。
  • False negatives: 简称为 FN,也就是说,正样本被误识别为负样本,猫图->狗。

真正率:True Positive Rate(TPR)也叫灵敏度(Sensitivity)、召回率;

TPR = TP /(TP FN)

真负率:True Negative Rate(TNR)又称特指度(specificity);

TNR = TN /(TN FP)

假正率:False Positive Rate (FPR);

FPR = FP /(FP TN)

假负率:False Negative Rate(FNR);

FNR = FN /(TP FN)

准确率/准确率 Precision

定义为:预测为正的样本中有多少是真正的样本?(针对预测结果)。宁愿错过也不愿杀错人,只要刀出鞘杀人一定是坏人

TP / (TP FP)

召回率/检出率/检全率 Recall

定义为:预测样本中有多少例子是正确的(原始样本) 宁愿错杀一千,也不要放过一个 pr两个参数相互平衡

TP / (TP FN)

过杀率 Kill Rate

定义为:当原样本正常时=但检测结果是异常的=1,则为过杀。 被过杀的样本数占测试集中的正常样本数的比例

FN / (TP FN)

漏杀率 Miss Kill Rate

定义为:当原样本异常时=但检测结果正常=一是漏杀。 泄漏的样本数占测试集中异常样本数的比例

FP / (FP TN)

PR曲线、mAP(Mean-Average-Precision)

PR曲线与ROC通过改变识别阈值,得到相应的点。

PR 曲线聚焦于例子。在这种情况下,由于类别不平衡主要关注例子 PR 曲线被广泛认为优于 ROC 曲线。

AP就是 Precision-recall 曲线下的面积,一般来说,分类器越好,AP 值越高。mAP是多个类别 AP 平均值 mean 意思是对每一类 AP 要求平均(和ROC类似),得到的是 mAP 的值,mAP 大小一定在 [0,1] 范围越大越好。该指标是目标检测算法中最重要的。

ROC曲线(receiver operating characteristic curve)、AUC(Area under Curve

ROC曲线由高到低,将依次进行Score 一系列预置值(或定制[0,1])作为阈值 threshold,当测试样本属于正样本的概率大于或等于此时 threshold 我们认为它是正样本,否则它是负样本。

每次选择不同的 threshold,我们可以得到一组 FPR 和 TPR,即 ROC 曲线上的一点。 连接这些点,得到它们 ROC 曲线。当 threshold 取值越多,ROC 曲线越光滑。曲线越接近左上角,检测模型效果越好。

当测试集中正负样本的分布发生变化时,ROC 保持曲线不变。 TPR 以正例为重点,FPR 关注和负例。ROC成为一种比较均衡的整体评价方法

AOC表示曲线下蓝色面积,可以用numpy计算中梯形积分法。AUC 值本质上是一个概率值,当我们随机选择正样本和负样本时,算法计算得到正样本 Score 值大于负样本概率就是 AUC 值。AUC 值越大,当前的分类算法越有可能将正样本排在负样本之前,即可以更好地分类

约登指数也可以同时使用。该方法的思想是找出横坐标和纵坐标之间最大的区别,即最佳阈值

fpr=FP /(FP   TN) recall= TP /(TP   FN) # 因为是负积分,要加个- auc=-np.trapz(recall_col, fprs_col) find_best_threshold(recall,fpr,np.range(0,1,0.1)) def find_best_threshold(TPR, FPR, threshold):     y = TPR - FPR     youden_index = np.argmax(y)       optimal_threshold = threshold[youden_index]     point = [FPR[youden_index ], TPR[youden_index ]]     return optimal_threshold, point

希望你不要被绕晕~

下面可以用code来举例

y = np.array([0, 1, 0, 1])   #实际值 scores = np.array([0.1, 0.6, 0.6, 0.5])  #预测值 取0.5是阈值,大于等于0.5为真值为1 混淆矩阵如图所示 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章