评估指标 -- Precision(查准率), Recall(查全率)和F1 score; PR曲线和mAP; ROC曲线和AUC

Precision, Recall 和 F1 score

在这里插入图片描述
Precision – 查准率、精确率
Recall – 查全率、召回率

查准率和查全率是互相影响的,理想情况是希望两者都高,但是一般情况下查准率高、查全率就低,查全率高、查准率就低.
如果是做搜索,那就是保证查全的情况下提升查准率;如果做疾病监测、反垃圾,则是保证查准的条件下,提升查全率。

为了衡量在某一阈值下P和R的综合结果, 采用指标F1 score:
F 1 = 2 ∗ P ∗ R P + R F1 = \frac{2*P*R}{P+R} F1=P+R2PR

PR曲线与mAP(mean average precision)

  1. 知乎上关于mAP的解释: mean average precision(MAP)在计算机视觉中是如何计算和应用的?
  2. PR曲线, mAP具体计算过程: 深度学习-目标检测评估指标P-R曲线、AP、mAP
  3. 总结: mAP是为解决P,R,F1 score的单点值局限性的。为了得到一个能够反映全局性能的指标.

因为P, R和F1 score都只能衡量模型在一个固定阈值下的性能, 但一般情况,不同阈值下, 模型会有不同的表现, 把不同阈值下的P, R记录下来, 可以得到一条PR曲线:
在这里插入图片描述
可以看到, 只看F1 score的话, 一开始红色模型不如黑色模型, 但是全局来看, 红色模型的性能比黑色模型要出色.

PR曲线下的面积, 叫做AP(average precision), N个分类类别得到N条PR曲线得到N个AP, 求平均得到mAP(mean average precision).

具体计算过程: (目标检测为例)

  1. 先把所有bbox找出来 并加上confidence
  2. 然后每一类根据confidence从大到小排列
  3. 每一类中每个confidence计算与label对应的IOU, 根据设定的IOU阈值判断是否预测正确
  4. 每一类中每个confidence根据预测正误算出其recall和precision得到每一类的PR曲线, 曲线下的面积为对应该类的average precision
  5. 所有类取mean, 得到对应IOU阈值下的mean average precision, 如mAP50, mAP75等等(YOLO论文中叫AP50, AP75).

ROC曲线和AUC

  1. 对ROC曲线的理解: ROC和CMC曲线的理解
  2. ROC曲线和PR曲线的区别与联系: 检测率,召回率,mAP,ROC
  3. 总结: PR曲线是表现查准率与查全率的变化关系, 适用于检索问题; ROC曲线是表现模型的预测结果中正误的变化关系, 适用于分类问题.
    在这里插入图片描述
    纵轴:真正类率(true postive rate TPR)灵敏度,代表分类器预测的正类中实际正实例占所有正实例的比例, TRP的值越大,说明预测的正类中实际的正类越多 T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP横轴:负正类率(false postive rate FPR)特异度,代表分类器预测的正类中实际负实例占所有负实例的比例, FPR的值越大,说明预测的正类中实际的负类越多 F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP

ROC曲线的意义:
对模型的预测结果score排序, 然后将预测为正负类的阈值从最大的score开始逐渐减小. 当阈值最大时, TP的数量最少, TPR接近0, 并且此时FP也最少, FPR也接近0. 阈值最大时, 对应坐标为(0, 0).
随着阈值的减小,越来越多的实例被划分为正类,即TP的数量越来越多,FN的数量越来越少,通过计算公式TP/(TP+FN)可以看到,TPR的值趋近于1;同时,当越来越多的实例被划分为正类时,这些正类当中也同样掺杂着真正的负实例,并且随着阈值的减少,TN的数量越来越少,通过计算公式FP/(FP+TN)可以看到,FPR的值趋近于1。因此,阈值最小时,对应坐标为(1,1).

理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好.

AUC: ROC曲线下的面积, 取值范围在0.5和1之间. 意义是量化比较不同的ROC曲线.

ROC曲线的特性: 当测试集中的正负样本的分布变换的时候(分布不平衡),ROC曲线能够保持不变.(PR曲线会发生较大变化)

在Python中,可以使用各种机器学习库框架来实现模型预测结果的评估指标。以下是一些常用的指标相应的代码实现示例: 1. 准确率(Accuracy):预测正确的样本数占总样本数的比例。 ```python from sklearn.metrics import accuracy_score y_true = [0, 1, 1, 0, 1] y_pred = [0, 1, 0, 0, 1] accuracy = accuracy_score(y_true, y_pred) print("准确率:", accuracy) ``` 2. 错误率(Error Rate):预测错误的样本数占总样本数的比例。 ```python error_rate = 1 - accuracy print("错误率:", error_rate) ``` 3. 查准率Precision):预测为正例的样本中,真正为正例的比例。 ```python from sklearn.metrics import precision_score precision = precision_score(y_true, y_pred) print("查准率:", precision) ``` 4. 查全率Recall):真正为正例的样本中,被正确预测为正例的比例。 ```python from sklearn.metrics import recall_score recall = recall_score(y_true, y_pred) print("查全率:", recall) ``` 5. F1值(F1 Score):综合考虑了查准率查全率指标,是二者的调平均值。 ```python from sklearn.metrics import f1_score f1 = f1_score(y_true, y_pred) print("F1值:", f1) ``` 6. ROC曲线AUC(Receiver Operating Characteristic curve and Area Under the Curve):用于评估二分类模型的性能。ROC曲线是以不同的分类阈值为基础,绘制出真正例率(TPR假正例率(FPR)之间的关系曲线AUC表示ROC曲线下的面积,用于衡量模型的分类能力。 ```python from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 计算预测概率 y_score = [0.2, 0.6, 0.8, 0.3, 0.9] fpr, tpr, thresholds = roc_curve(y_true, y_score) # 绘制ROC曲线 plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc(fpr, tpr)) plt.plot([0, 1], [0, 1], 'k--') # 绘制对角线 plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver Operating Characteristic') plt.legend(loc='lower right') plt.show() # 计算AUC auc_score = auc(fpr, tpr) print("AUC:", auc_score) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值