如何解释几乎完美的准确性和AUC-ROC但零f1分数,精确度和召回率

Kub*_*888 12 classification machine-learning roc precision-recall

我正在训练ML逻辑分类器使用python scikit-learn对两个类进行分类.他们的数据非常不平衡(约14300:1).我的准确度和ROC-AUC几乎达到100%,但精度,召回率和f1得分均为0%.我知道准确性通常对非常不平衡的数据没有用,但为什么ROC-AUC测量结果也接近完美?

from sklearn.metrics import roc_curve, auc

# Get ROC 
y_score = classifierUsed2.decision_function(X_test)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(false_positive_rate, true_positive_rate)
print 'AUC-'+'=',roc_auc

1= class1
0= class2
Class count:
0    199979
1        21

Accuracy: 0.99992
Classification report:
             precision    recall  f1-score   support

          0       1.00      1.00      1.00     99993
          1       0.00      0.00      0.00         7

avg / total       1.00      1.00      1.00    100000

Confusion matrix:
[[99992     1]
 [    7     0]]
AUC= 0.977116255281
Run Code Online (Sandbox Code Playgroud)

以上是使用逻辑回归,下面是使用决策树,决策矩阵看起来几乎相同,但AUC有很大不同.

1= class1
0= class2
Class count:
0    199979
1        21
Accuracy: 0.99987
Classification report:
             precision    recall  f1-score   support

          0       1.00      1.00      1.00     99989
          1       0.00      0.00      0.00        11

avg / total       1.00      1.00      1.00    100000

Confusion matrix:
[[99987     2]
 [   11     0]]
AUC= 0.4999899989
Run Code Online (Sandbox Code Playgroud)

lej*_*lot 49

必须了解AUC ROC与"精确/精确"等"逐点"指标之间的关键差异.ROC是阈值的函数.给定一个模型(分类器)输出属于每个类的概率,我们预测具有最高概率(支持)的类.但是,有时我们可以通过更改此规则获得更好的分数,并要求一个支持比另一个大2倍,以实际分类为给定的类.对于不平衡的数据集,这通常是正确的.这样,您实际上是在修改类的学习优先级以更好地适应您的数据.ROC着眼于"如果我将此阈值更改为所有可能值会发生什么",然后AUC ROC计算此曲线的积分.

所以:

  • 高AUC ROC与低f1或其他"点"指标,意味着您的分类器目前做得不好,但是您可以找到其分数实际相当不错的阈值
  • 低AUC ROC和低f1或其他"点"度量,意味着您的分类器目前做得不好,甚至适合阈值也不会改变它
  • 高AUC ROC和高f1或其他"点"度量,意味着您的分类器目前做得不错,而对于许多其他阈值值,它也会做同样的事情
  • 较低的AUC ROC与高f1或其他"点"指标,意味着您的分类器目前做得不错,但是对于许多其他阈值值 - 这是非常糟糕的

  • 您无法测量欠采样数据的指标.你只需要**重新采样** - 你必须**测试真实(有实际先验)的那些 (6认同)
  • 取决于当前的问题,但这似乎并不好。f1是精度和查全率之间的谐波平均值,因此它或多或少地转换为两者的标度(因为它始终在这两个值之间)。我会说分数低于0.6的情况很少被接受。 (2认同)