Recall值与Precision-Recall曲线的关系

Posted

技术标签:

【中文标题】Recall值与Precision-Recall曲线的关系【英文标题】:Relationship between Recall value and precision-recall curve 【发布时间】:2021-05-19 20:07:40 【问题描述】:

我迷失了召回值和精确召回曲线下面积之间的关系。我正在使用二进制分类器对不平衡的数据集进行分类。我用默认的sklearn python包记录了recall值和precision-recall曲线值下的面积。就我而言,1 类是稀有类,0 类是另一个类。

我训练了两个模型。第二个模型我使用过采样方法来平衡训练数据集。测试数据集从未在两个模型中被触及。这是测试数据集的记录值。

    使用不平衡数据集进行训练。

    召回率:0.629,精确召回率:0.8828

    使用平衡数据集进行训练

    召回率:0.8426,精确召回率:0.884

我的问题是:

    为什么recall值提高了,而precision-recall曲线没有变化?

    我能说如果我选择一个合适的阈值,第一个模型和第二个模型一样好吗?我应该关注哪个评估矩阵?

    我可以肯定地说这个模型可以容忍不平衡的数据集,因为精确曲线下的区域变化不大?

【问题讨论】:

请注意,SO 是关于特定编码的问题;关于机器学习理论和方法的非编码问题在这里是题外话,应该在Cross Validated 上发布。请参阅machine-learningtag info 中的介绍和注意。另外,问题实际上与python无关,请不要发送垃圾邮件无关标签(已删除)。 【参考方案1】:

为什么recall值提高了,而precision-recall曲线没有变化?

尝试在同一张图中绘制两条训练的精确召回曲线。那么您一定会明白为什么会发生这种情况。并且为了澄清 TP 的情况是什么类 [1 或 0]?。如果它是 1,那么它是有意义的,因为类平衡通常也会增加 FP 值,我们确实调用平衡来增加分布中稀有类的召回值。

我能说如果我选择一个合适的阈值,第一个模型和第二个模型一样好吗?

这是我们进行混淆矩阵分析的原因之一。特别是在二元分类的情况下,它计算与边界 [1 和 0] 相关的损失,与实际的类分离值无关。因此,您可以使用类分离值检查召回和召回精度 AUC 值。

我应该关注哪个评估矩阵?

这取决于您的案件领域;考虑所需的敏感性和特异性值,选择最佳模型。

【讨论】:

感谢您的解释!是的,1 是正类。就我而言,我专注于稀有类(1类)。正确识别类 1 比错误地将 0 分类为 1 更重要。我可以说过度采样训练数据集并没有改进模型,因为精确召回区域没有太大变化?但是召回值增加了,看来我应该使用第二个训练模型。

以上是关于Recall值与Precision-Recall曲线的关系的主要内容,如果未能解决你的问题,请参考以下文章

SGD 分类器 Precision-Recall 曲线

在 scikit-learn 中使用交叉验证时绘制 Precision-Recall 曲线

Precision-Recall曲线或ROC曲线是不是可能是一条水平线?

R中PRROC包的Precision-Recall曲线计算

Precision-Recall Curve

如何在 MATLAB 中为基于内容的图像检索绘制 Precision-Recall 图?