1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

分類モデルの評価-混同行列(Confusion Matrix)と関連指標

Posted at

正解率(Accuracy)

正解率は、全体に対して予測が当たった割合です。

正解率が評価指標として適切でない場合があります。
例えばスパムメールの分類です。
99%のメールは本物、1%のメールはスパムだと仮定すると、全てのメールを本物と予測するモデルは99%の正解率になりますが、
実際にスパムメールを分類できていません。
この場合、正解率以外の評価指標が必要になります。

混同行列(Confusion Matrix)

混同行列は分類モデルの評価を考える際の基本となる行列で、モデルの予測値と観測値の関係を表すものです。

予測:スパム 予測:本物
実際:スパム True Positive (TP) False Negative (FN)
実際:本物 False Positive (FP) True Negative (TN)

混同行列は、sklearn.metricsモジュールのconfution_matrix関数で取得できます。

from sklearn.metrics import confusion_matrix

y_pred = model.predict(X_test)

print(confusion_matrix(y_test, y_pred))

出力

[[176  30]
 [ 52  50]]

ちなみに混同行列で正解率を計算する式は以下になります。

\frac{tp + tn}{tp + tn + fp + fn}

適合率(Precision)、再現率(Recall)、F1スコア(F1score)

適合率は、スパムと予測した中で実際にどれだけスパムであったかの割合です。

\frac{tp}{tp + fp}

再現率は、実際はスパムのうち正しくスパムと予測できた割合です。

\frac{tp}{tp + fn}

F1スコアは適合率と再現率の調和平均です。適合率と再現率のどちらを優先すべきかが決まっていない場合、モデルを統合的な評価に使用します。

\frac{2}{\frac{1}{適合率} + \frac{1}{再現率}}

高適合率は、スパムと予測された本物が少ないことを意味します。
高再現率は、ほとんどのスパムを予測できたことを意味します。

上記関連指標は、sklearn.metricsモジュールのclassification_report関数で取得できます。

from sklearn.metrics import classification_report

y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred))

出力

             precision    recall  f1-score   support

          0       0.77      0.85      0.81       206
          1       0.62      0.49      0.55       102

avg / total       0.72      0.73      0.72       308
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?