绘制Precision-Recall曲线。 Precision-Recall曲线的绘制非常简单,横坐标轴表示精准率的值,纵坐标轴表示召回率的值。通过上面的绘制结果可以看出,这根曲线下降的趋势非常明显。 最后值得一提的是,对于Precision-Recall曲线来说,整体是呈现下降趋势的,也就是y轴的recall值随着x轴的precision值的逐渐增大而减少。 "算法2"的Precision-Recall曲线包裹着"算法1"上的Precision-Recall曲线,很明显"算法2"要优于"算法1"。 因此一个算法模型的Precision-Recall曲线越靠外的话,这个算法模型就越好,因此这中Precision-Recall曲线可以作为模型选择、算法选择、超参数选择的指标。 虽然Precision-Recall曲线非常好理解,但是在大多数情况下我们不用Precision-Recall曲线的面积来衡量模型算法的优劣。
除此以外,还有 ROC 曲线、ROC AUC 和 Precision-Recall 曲线等等。 让我们首先简单解释这些指标和曲线的含义: 精确度Precision:所有正例中真正正例的数量。 Precision-Recall曲线:这条曲线显示了不同阈值下的精度和召回值。它用于可视化 Precision 和 Recall 之间的权衡。 一般来说,我们必须考虑所有这些指标和曲线。 为了最大化指标,我们可以移动阈值,直到我们在所有指标之间达成良好的平衡,这时就可以使用Precision-Recall曲线,当然也可以使用ROC曲线。 ', label='Logit') plt.xlabel('Recall') plt.ylabel('Precision') plt.legend() plt.title('Precision-Recall 使用Precision-Recall曲线来对一个可能的阈值进行初始选择。在下面的代码中,绘制了带有候选阈值的Precision-Recall曲线。
除此以外,还有 ROC 曲线、ROC AUC 和 Precision-Recall 曲线等等。 让我们首先简单解释这些指标和曲线的含义: 精确度Precision:所有正例中真正正例的数量。 Precision-Recall曲线:这条曲线显示了不同阈值下的精度和召回值。它用于可视化 Precision 和 Recall 之间的权衡。 一般来说,我们必须考虑所有这些指标和曲线。 为了最大化指标,我们可以移动阈值,直到我们在所有指标之间达成良好的平衡,这时就可以使用Precision-Recall曲线,当然也可以使用ROC曲线。 ', label='Logit') plt.xlabel('Recall') plt.ylabel('Precision') plt.legend() plt.title('Precision-Recall 使用Precision-Recall曲线来对一个可能的阈值进行初始选择。在下面的代码中,绘制了带有候选阈值的Precision-Recall曲线。
通常情况下,都会使用Precision-recall曲线,来显示分类模型在Precision与Recall之间的权衡。 VOC中采用的IoU阈值为0.5,而COCO中采用了一系列的IoU阈值(0.05至0.95),但是不同模型的置信度会差异很大,一个模型的0.5置信度可能等价于其它模型0.8的置信度,而置信度会影响到Precision-Recall AP是Precision-Recall Curve(PRC)曲线所覆盖的面积,用来衡量模型在每个具体类别上的好坏。mAP就是给每一分类分别计算AP,再做mean平均。
把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。这个例子的precision-recall曲线如下: ? 相应的Precision-Recall曲线(这条曲线是单调递减的)如下: ?
如图所示,左侧展示的是两个模型的ROC曲线,右侧展示的是precision-recall曲线 (PRC)。 但是右侧的precision-recall曲线却给出完全不同的结论。 模型1 (precision-recall Curve 1)下的面积为0.513,模型2 (precision-recall Curve 2)下的面积为0.038。 但precision-recall curve (PRC)曲线却差别很大。对于平衡数据集,两个模型的召回率 (recall)和精准率precision都比较好。
这个例子的precision-recall曲线如下: 实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20 把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。 计算方法如下: 相应的Precision-Recall曲线(这条曲线是单调递减的)如下: AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP
下图为不同阈值条件下,Precision与Recall的变化情况: Precision-recall 曲线 如果你想评估一个分类器的性能,一个比较好的方法就是:观察当阈值变化时,Precision 通常情况下,文章中都会使用Precision-recall曲线,来显示出分类器在Precision与Recall之间的权衡。 上图就是分类器的Precision-recall 曲线,在不损失精度的条件下它能达到40%Recall。而当Recall达到100%时,Precision 降低到50%。 PASCAL Visual Objects Challenge从2007年开始就是用这一度量制度,他们认为这一方法能有效地减少Precision-recall 曲线中的抖动。
metrics.recallByThreshold recall.foreach { case (t, r) => println(s"Threshold: $t, Recall: $r") } // Precision-Recall s"Threshold: $t, F-score: $f, Beta = 0.5") } // AUPRC val auPRC = metrics.areaUnderPR println(s"Area under precision-recall
下图是ROC曲线和 Precision-Recall曲线5的对比: ? 在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。 可以明显的看出,ROC曲线基本保持原貌,而 Precision-Recall曲线则变化较大。 说明,文中除了第一张图来自Wikipedia外,其他的图都来自论文(Fawcett, 2006)6截图.
下图是ROC曲线和Presision-Recall曲线的对比: (a)和 (c)为Roc曲线,(b)和(d)为Precision-Recall曲线。 (a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall
图片来源自:GiantPandaCV公众号 AP值是Precision-Recall曲线下方的面积,通常来说一个越好的分类器,AP值越高。 为了得到precision-recall曲线,首先要对模型预测结果进行排序(ranked output,按照各个预测值置信度降序排列)。 那么,AP就定义为在这11个recall下precision的平均值,其可以表征整个precision-recall曲线(曲线下面积)。 ? 另外:AP50,AP60,AP70等等代表什么意思?
Precision-Recall (PR) 曲线 是一种评估二分类模型在不平衡数据集上的性能的有效工具。 Precision-Recall 曲线应该怎么看 PR 曲线是在 召回率(Recall)为横轴、精确率(Precision)为纵轴的二维坐标系中绘制的。 具体来说: AUC-PR(Precision-Recall AUC):是指 PR 曲线下的面积。 precision_recall_curve(y_test, lr_pred) average_precision = average_precision_score(y_test, lr_pred) # 绘制 Precision-Recall f'PR curve (AP = {average_precision:.2f})') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall
Appearance based) 外观方法是主流 核心在于衡量图像间的相似性 朴素的想法:灰度相减 回环检测的指标 perceptual Aliasing perceptual Variability ROC曲线(Precision-Recall
下图是ROC曲线和Precision-Recall曲线的对比: 在上图中,(a)和( c )为ROC曲线,(b)和(d)为Precision-Recall(P-R)曲线。 可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。
因为这样绘制出来的precision-recall曲线下的面积比按你直接给我的pred_bbox的顺序要大。毕竟我和你的目标是一样,你希望你的得分越高,我也希望你的得分越高,所以我就这样做了。 按照1步骤,我就可以逐个bbox计算出precision和recall,进而绘制出precision-recall曲线。 Precision和Recall组成坐标,得到逐个bbox的precision-recall曲线,我就可以计算这个曲线下的面积了,得到ap了。
例如,要生成precision-recall曲线,您需要输入prec和rec。 下面的代码使用包附带的合成数据集并绘制默认的ROCR ROC曲线。在本文中,我将使用相同的数据集。
下图是ROC曲线和Precision-Recall曲线的对比: ? 5.png 在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。 可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。
摘要 文章讨论了精确率-召回率曲线(Precision-Recall Curve, PRC)和曲线下面积(Area Under the Precision-Recall Curve, AUPRC)这两个在分类性能评估中非常有用的指标
下图是ROC曲线和Precision-Recall(https://en.wikipedia.org/wiki/Precision_and_recall)曲线的对比: ? 在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。 可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。