首页 > 解决方案 > Precision、Recall 和 F1 可以是相同的值吗?

问题描述

我目前正在研究一个 ML 分类问题,我正在使用sklearn库的以下导入和相应的代码计算精度、召回率和 F1,如下所示。

from sklearn.metrics import precision_recall_fscore_support

print(precision_recall_fscore_support(y_test, prob_pos, average='weighted'))

结果

0.8806451612903226, 0.8806451612903226, 0.8806451612903226

对于 ML 分类问题,是否有可能为所有 3 个、精度、召回率和 F1 获得相同的值?

在这方面的任何澄清将不胜感激。

标签: machine-learningscikit-learnclassificationprecisionprecision-recall

解决方案


是的,这是可能的。让我们假设二进制分类

Pr = TP / (TP + FP);  Re = (TP + FN);  F1 = 2TP / (2TP + FP + FN)

的简单解决方案Pr = Re = F1TP = 0。所以我们知道精度、召回率和 F1 通常可以具有相同的值。现在,这不适用于您的特定结果。如果我们求解方程组,我们会找到另一个解:FP = FN。因此,如果误报的数量与误报的数量相同,则所有三个指标都具有相同的值。

对于多类分类问题,我们有

F1 = 2 * (Pr * Re) / (Pr + Re)

如果Pr = Re,那么所有三个指标都是相同的。


推荐阅读