web-dev-qa-db-ja.com

ほぼ完全な精度とAUC-ROCを解釈する方法、ただしf1スコア、適合率、再現率はゼロ

python scikit-learn。それらは非常に不均衡なデータ(約14300:1)にあります。ほぼ100%の精度とROC-を使用して2つのクラスを分類するようにMLロジスティック分類器をトレーニングしています。 AUCですが、精度、再現率、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

上記はロジスティック回帰を使用しており、以下は決定木を使用しています。決定行列はほぼ同じように見えますが、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
13
KubiK888

AUC ROCと、精度/精度などの「ポイントごとの」メトリックとの決定的な違いを理解する必要があります。ROCは、しきい値の関数です。各クラスに属する確率を出力するモデル(分類器)が与えられると、最も高い確率(サポート)を持つクラスを予測します。ただし、このルールを変更し、特定のクラスとして実際に分類するには、一方のサポートをもう一方のサポートの2倍にすることで、より良いスコアを取得できる場合があります。 これは不均衡なデータセットによく当てはまります。このようにして、実際にクラスの学習済みの事前情報を変更して、データにさらに適合させます。 ROCは、「このしきい値をすべての可能な値に変更するとどうなるか」を調べ、AUCROCはそのような曲線の積分を計算します。

その結果:

  • 高いAUCROCと低いf1またはその他の「ポイント」メトリックは、分類子は現在悪い仕事をしていますが、スコアが実際にかなり適切であるしきい値を見つけることができます
  • aUC ROCが低く、f1またはその他の「ポイント」メトリックが低いということは、分類子は現在悪い仕事をしており、しきい値を設定しても変更されないことを意味します
  • 高いAUCROCと高いf1または他の「ポイント」メトリックは、分類子は現在適切な仕事をしており、他の多くのしきい値の場合も同じことをします
  • 低いAUCROCと高いf1またはその他の「ポイント」メトリックは、現在、分類子は適切な仕事をしていますが、他の多くのしきい値の場合はかなり悪いです
47
lejlot