Я обучаю логистический классификатор ML для классификации двух классов с помощью 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
0
. - person cel   schedule 09.01.2016