混同行列
概要
Confusion Matrix
覚え方
(Boolean) (判断)
それは正しい判断なのか、肯定的判断か否定的判断か
True ~
正しく判断できている
False ~
間違った判断になっている
「真犯人を逮捕すること」を「帰無仮説を棄却すること」に例える。 第一種過誤は「一般市民を冤罪で逮捕してしまうこと」である。 第二種過誤は「真犯人を取り逃がすこと」を意味している。
/icons/hr.icon
table:混同行列
予測F 予測T
実際F True Nagative(真陰性) False Positive(偽陽性) 実際T False Nagative(偽陰性) True Positive(真陽性) 混同行列から計算できる
正解率(Accuracy)→正解も不正解も等しく評価する→正解、不正解が不均衡なデータでは使えない
$ 正解率 = \frac{TP + TN}{全データ数}
適合率(Precision)
Positiveな予測を縦に見る→確実に当てたい時に見る
間違えてPositiveと答えると致命的な場合、適合率を追い求めます
行動から犯罪者をあぶり出すシステムなどは適合率を高くすべきでしょう。推定無罪というやつですね。
その他、フローの最後となる部分でも適合率は重要です。
出荷前の最終チェックなどは、怪しければすべて弾きたいとなるはずです。
$ 適合率 = \frac{TP}{予測がPositive}
再現率(Recall) 感度
実際のPositiveを横に見る→少しでも可能性がある人をリストしたい場合 ガン検診,PCR検査とか
適合率の逆で、すべてのデータにPositiveと答えれば100%を達成できます。
使用例としてよく挙げられるのは「精密検査に進むかどうかの判断」です。
精密検査でNegativeとわかれば十分だけれども、全量を検査したいわけではないという場合に使用します。
$ 再現率 = \frac{TP}{教師データがPositive}
/icons/point.icon適合率と再現率はトレードオフである
F値(F1-measure)
(正解/不正解が)不均衡データの時は正解率は役に立たない→F値を使用する
hiroki.iconアイディアとしては適合率と再現率を考慮したいから二つの値の平均を取ろうというもの
$ F値 = \frac{2*再現率*適合率}{再現率 + 適合率}
どんな時に使われる指標か?
→クラス分類モデルの指標を測る時
回帰モデルでも閾値で0,1変換して使ったりできる
https://gyazo.com/7457c4733e5c72a70f505f7ea95a6467
https://gyazo.com/14cb911253e6de03fc5357f143b99627
https://gyazo.com/762ee7d7ba54375eeaeb027f1a60b913
https://gyazo.com/edff5fe7d7dc33d651a37f705f7e0d7d
https://gyazo.com/1f58117a8f8d344add830fd767e1db81
コード
code:python
//混同行列
import sklearn.metrics import confusion_matrix
confmat = confusion_matrix(y_true=y_test, y_pred=y_pred)
//適合率、再現率
from sklearn.metrics import precision_score, recall_score, f1_score
precision_score(y_true=y_true, y_pred=y_pred)
recall_score(y_true=y_true, y_pred=y_pred)
f1_score(y_true=y_true, y_pred=y_pred)
参照
第一種の過誤をしてはいけない
適合人材を落としてしまうことは、機会損失とはなってしまいますが、実損は発生しません。