Precision、Recall 和 F1 可以是相同的值吗?

Nay*_*raj 10 precision classification machine-learning scikit-learn precision-recall

我目前正在研究 ML 分类问题,我正在使用sklearn库的以下导入和相应的代码计算 Precision、Recall 和 F1 ,如下所示。

from sklearn.metrics import precision_recall_fscore_support

print(precision_recall_fscore_support(y_test, prob_pos, average='weighted'))
Run Code Online (Sandbox Code Playgroud)

结果

0.8806451612903226, 0.8806451612903226, 0.8806451612903226
Run Code Online (Sandbox Code Playgroud)

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

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

rvf*_*rvf 16

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

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,则所有三个指标都相同。