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-learning
tag info 中的介绍和注意。另外,问题实际上与python
无关,请不要发送垃圾邮件无关标签(已删除)。
【参考方案1】:
为什么recall值提高了,而precision-recall曲线没有变化?
尝试在同一张图中绘制两条训练的精确召回曲线。那么您一定会明白为什么会发生这种情况。并且为了澄清 TP 的情况是什么类 [1 或 0]?。如果它是 1,那么它是有意义的,因为类平衡通常也会增加 FP 值,我们确实调用平衡来增加分布中稀有类的召回值。
我能说如果我选择一个合适的阈值,第一个模型和第二个模型一样好吗?
这是我们进行混淆矩阵分析的原因之一。特别是在二元分类的情况下,它计算与边界 [1 和 0] 相关的损失,与实际的类分离值无关。因此,您可以使用类分离值检查召回和召回精度 AUC 值。
我应该关注哪个评估矩阵?
这取决于您的案件领域;考虑所需的敏感性和特异性值,选择最佳模型。
【讨论】:
感谢您的解释!是的,1 是正类。就我而言,我专注于稀有类(1类)。正确识别类 1 比错误地将 0 分类为 1 更重要。我可以说过度采样训练数据集并没有改进模型,因为精确召回区域没有太大变化?但是召回值增加了,看来我应该使用第二个训练模型。以上是关于Recall值与Precision-Recall曲线的关系的主要内容,如果未能解决你的问题,请参考以下文章
在 scikit-learn 中使用交叉验证时绘制 Precision-Recall 曲线