混同行列

混同行列についてザックリ理解するための個人まとめ。

# 1.混同行列とは
機械学習における「**モデルの性能評価**」に使うもの。
解きたいタスクは「**二値分類**」（「**二項分類**」「**バイナリ分類**」とも言うっぽい）

## 1-1.混同行列の分類

 - 機械学習の予測値で出て、実際の値が正解であるもの：**TP**(True Positive/真陽性)
 - 機械学習の予測値で出て、実際の値が不正解であるもの：**FP**(False Positive/偽陽性)
 - 機械学習の予測値で出ず、期待に反して、実際の値が正解であるもの：**FN**(False Negative/偽陰性)
 - 機械学習の予測値で出ず、期待通り、実際の値が不正解であるもの：**TN**(True Negative/真陰性)

:::note info
・True = 正しい
・False = 間違い
・Positive = 出てきた
・Negative = 出てこない
:::

## 1-2.混同行列の例

犬か、犬ではないかを判断するモデルが作りたい場合、
以下の二通りを判断するための**二項分類**の問題といえる。

 - 犬である=1
 - 犬ではない=0

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/8c1d4b4f-180f-1d58-afda-f7d1b9a1e287.png)


# 2.混同行列における主な指標

①正解率(Accuracy)/精度：予測クラス総数のうち正しく予想したクラスの割合
②適合率(Precision)：Positiveと予想したクラスのうち実際にPositiveだった割合
③再現率(Recall)/感度 (sensitivity)：実際のPositiveクラスのうち正しくPositiveと予想出来た割合
④特異性 (specificity)：実際のNegativeクラスのうち正しくNegativeと分類できた割合
⑤偽陽性率FPR（FP Rate）：実際のNegativeクラスのうち誤ってPositiveと予想した割合
⑥F値(F-measure)：適合率(PRE)と再現率(REC)の調和平均

## 2-1.正解率（Accuracy）/精度
①正解率(Accuracy)：予測クラス総数のうち正しく予想したクラスの割合

$正解率 = \\dfrac{正しく予測したやつの総数}{全体総数}$

小難しく書くと
$Accuracy = \\dfrac{TP + TN}{TP + FP + FN + TN}$

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/c5887d84-00f9-4930-957f-4ef4c80935e9.png)

上記例では

$Accuracy = \\dfrac{48 + 42}{48 + 4 + 6 + 42} = \\dfrac{90}{100} = 0.9$

## 2-2.適合率（Precision）/網羅性
②適合率(Precision)：Positiveと予想したクラスのうち実際にPositiveだった割合
検索結果として得られた集合のうち、どれだけが検索に適合した内容を含んでいるかの指標。

$適合率 = \\dfrac{実際の値も機械学習の予測もPositive}{機械学習の予測がPositiveだったやつの総数}$

小難しく書くと
$Precision = \\dfrac{TP}{TP + FP}$

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/1f7a11c8-559b-6d45-ca93-5b0b218a7b20.png)

上記例では

$Precision = \\dfrac{48}{48 + 4} = \\dfrac{48}{52} ≒ 0.92$

## 2-3.再現率（Recall）/感度 (sensitivity) /正確性
③再現率(Recall)：実際のPositiveクラスのうち正しくPositiveと予想出来た割合
真陽性率TPR（TP Rate）ともいう。

$再現率 = \\dfrac{実際の値も機械学習の予測もPositiveの数}{実際の値がPositiveの総数}$

小難しく書くと
$Recall = \\dfrac{TP}{TP + FN}$

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/30600de8-e925-4fb6-d5fb-2891fc674ef7.png)

上記例では
				
$Recall = \\dfrac{48}{48 + 6} = \\dfrac{48}{54} ≒ 0.89$

## 2-4.特異性 (specificity)
④特異性 (specificity)：実際のNegativeクラスのうち正しくNegativeと分類できた割合

$特異性 = \\dfrac{実際の値も機械学習の予測もNegativeの数}{実際の値がNegativeの総数}$

小難しく書くと
$specificity = \\dfrac{TN}{TN + FP}$

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/65668fd9-1ed3-d12e-6a17-ef81fd7bfab5.png)

上記例では			

$specificity = \\dfrac{42}{42 + 4} = \\dfrac{42}{46} ≒ 0.91$			

## 2-5.偽陽性率FPR（FP Rate）
⑤偽陽性率FPR（FP Rate）：実際のNegativeクラスのうち誤ってPositiveと予想した割合

$偽陽性率 = \\dfrac{機械学習の予測がPositiveだが実際にはNegativeの数}{実際の値がNegativeの総数}$

小難しく書くと
$FPR = \\dfrac{FP}{FP + TN}$

（$偽陽性率 = (1 - 特異性(specificity))$）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/26101c5d-bd3f-824e-073c-833326b19281.png)

上記例では

$FPR = \\dfrac{4}{4 + 42} ≒ 0.09$	

## 2-6.F値（F-measure）
⑥F値(F-measure)：適合率(PRE)と再現率(REC)の調和平均

$F値 = \\dfrac{2×PRE×REC}{PRE + REC}$

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/1047bd24-98c4-5b22-4032-ae042f8e02b7.png)				

上記例では

$F値 = \\dfrac{2×0.92×0.89}{0.92 + 0.89} ≒ \\dfrac{1.64}{1.81} ≒ 0.91$

			
# 3.ぼやき
再現率 (Recall)のこと感度 (sensitivity)って言ったり正確性って言ったり真陽性率TPR（TP Rate）って言ったりするのややこしすぎませんか。えっややこしくないですか？

# 参考

https://xn--cse-nj4bofsk.kyoto-su.ac.jp/~g0846020/keywords/tpfptnfn.html

https://qiita.com/TsutomuNakamura/items/a1a6a02cb9bb0dcbb37f#%E6%B7%B7%E5%90%8C%E8%A1%8C%E5%88%97%E3%81%A8%E3%81%AFconfusion-matrix-%E3%81%A8%E3%81%AF

https://vector-ium.com/ds-confusion/

https://dev.classmethod.jp/articles/aml-evaluation-measures/