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

问题描述 投票:0回答:1

IAM训练ML Logistic分类器使用Python Scikit-Learn对两个类进行分类。它们处于极度不平衡的数据中(大约14300:1)。我的准确性几乎为100%和ROC-AUC,但精确度为0%,召回和F1得分。我了解准确性通常在非常不平衡的数据中没有用,但是为什么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
上面正在使用逻辑回归,以下是使用决策树,决策矩阵看起来几乎相同,但是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

	
machine-learning classification roc precision-recall
1个回答
87
投票
功能。给定一个模型(分类器)输出属于每个类的概率的模型(分类器),我们预测类具有最高概率(支持)的类。但是,有时我们可以通过更改此规则来获得更好的分数,并要求一个支持比另一个支持大2倍,以实际分类为给定类。

对于不平衡的数据集通常是正确的。这样,您实际上是在修改课堂的先验,以更好地适合您的数据。 ROC着眼于“如果我将此阈值更改为所有可能的值会发生什么”,然后AUC ROC计算这种曲线的积分。 结果: High Auc Roc vs Low F1或其他“点”度量标准,意味着您的分类器当前的工作不好,但是您可以找到其得分实际上相当体面的阈值

-Low AUC ROC和Low F1或其他“点”度量 High Auc Roc和高F1或其他“点”度量指标,意味着您的分类器当前从事不错的工作,对于许多其他阈值值,它将做同样的工作

lowauc roc vs高f1或其他“点”度量标准,意味着您当前的分类器目前从事不错的工作,但是对于许多其他阈值值

© www.soinside.com 2019 - 2025. All rights reserved.