DL&ML评测之IoU,ROC,AUC和mAP详解
基本概念:
1. TP,FP,TN,FN
-
TP:True Positive
,预测为正样本_实际也为正样本的特征数 -
FP:False Positive
,预测为正样本_实际为负样本的特征数 -
TN:True Negative
,预测为负样本_实际也为负样本的特征数 -
FN:False Negative
,预测为负样本_实际为正样本的特征数
2.Accuracy和Error rate
-
Accuracy
:正确率是被分对的样本数除以所有的样本数Accuracy = (TP+TN)/(P+N)
-
Error rate
:错误率描述被分类器错分的比例,也叫误差,Error rate = (FP+FN)/(P+N)
- 对某一个实例来说,分对与分错是互斥事件,所以
Accuracy =1 - Error rate
3.Sensitivity和Specificity
-
Sensitivity =TP/P
,敏感性表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力,也叫命中率 -
Specificity = TN/N
,特异性表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力,也叫假报警率
4.Precison和Recall
-
Precison(准确率)
:当前被划分到正样本类别中,被正确分类的比例,即正样本的分类准确率 -
Recall(召回率)
:当前被分到正样本类别中,真实的正样本占所有正样本的比例
- 当一张图中存在多个种类数不定的目标时,对每种目标单独计算
Precision
和Recall
- A类目标的
Precision
就是在识别出来所有A目标中,识别正确的比率 - A类目标的
Recall
就是在测试集里所有的A目标中,识别正确的比率 -
Precision
和Recall
只是分母抽样的方式不同:
- 注:准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低, 召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。
- 准确率:找的对;召回率:找的全
5.AP和mAP
- AP,
average precision
,每一类别Precison
的平均值 - mAP,
mean average precision
,对所有类别的AP
取平均值 -
AP
是针对单个类别的,而mAP
是针对所有类别的
6.F-Measure和F1-Measure
- F指标是
Precision
和Recall
的加权调和平均 - 当
α = 1
时,则 F指标即为F1指标 - F1指标综合了
Precision 和 Recall
的结果,因此当F1/F
较高时,说明结果较为理想
ROC曲线,PR曲线和AUC
ROC曲线:接收者操作特征曲线
receiver operating characteristic curve
,是反映敏感性和特异性连续变量的综合指标,roc曲线上每个点反映着对同一信号刺激的感受性横坐标:
1-Specificity
,伪正类率False positive rate, FPR
,TPR=TP/(TP+FN)=Recall
,TPR
就是召回率,即预测为正但实际为负的样本占所有负例样本的比例,FPR越大,预测正类中实际负类越多纵坐标:
Sensitivity
,真正类率(True positive rate, TPR),预测为正且实际为正的样本占所有正例样本的比例,TPR越大,预测正类中实际正类越多理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,
Sensitivity
和Specificity
越大效果越好
AUC(Area Under Curve)
的值为ROC
曲线下面的面积,若如上所述模型十分准确,则AUC为1PR曲线:以精确率
Precison
为y轴,以召回率Recall
为x轴,我们就得到了PR曲线。仍然从精确率和召回率的定义可以理解,精确率越高,召回率越高,我们的模型和算法就越高效。也就是画出来的PR曲线越靠近右上越好。
当测试集中的正负样本的分布变化的时候,在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化,这个时候Precision-Recall
曲线会发生剧烈动荡,而ROC曲线能够基本保持不变。
目标检测评测之IoU
- 在目标检测算法中,交并比
Intersection-over-Union,IoU
是一个流行的评测方式,是指产生的候选框candidate bound
与原标记框ground truth bound
的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。一般来说,这个score > 0.5
就可以被认为一个不错的结果了。