混同行列の計算ツール
機械学習の分類モデルや検査の結果を、予測と実際の組み合わせ4通りの件数(混同行列)で表し、評価指標を計算します。どの指標を重視するかは、見逃し(偽陰性)と誤検出(偽陽性)のどちらが困るかで決まります。
評価指標
- 正解率(Accuracy)
- –
- 適合率(Precision)
- –
- 再現率(Recall・感度)
- –
- F値(F1)
- –
- Fβ値
- –
- 特異度(Specificity)
- –
- 偽陽性率(FPR)
- –
- 陰性的中率(NPV)
- –
- バランス正解率
- –
- マシューズ相関係数(MCC)
- –
- 陽性の割合
- –
- 全体の件数
- –
正解率は高いのに再現率が低く、陽性の多くを見逃しています。陽性が少ない(不均衡な)データでは、正解率だけで評価しないでください。
分母が0になる指標(陽性と予測した件数が0のときの適合率など)は「–」と表示します。MCC は −1〜1 の値で、1 が完全な予測、0 がでたらめな予測と同じ程度です。
グラフで見る
ほかの入力は今の値のまま、選んだ入力だけを今の値の1/4〜4倍の範囲で変えたときの結果です。赤い点が今の値です。
混同行列とは
2クラス分類の結果を、実際の正解(陽性・陰性)と予測(陽性・陰性)の組み合わせで4つに分けて数えた表が混同行列です。陽性を正しく陽性と予測したものを真陽性(TP)、陽性を陰性と予測した見逃しを偽陰性(FN)、陰性を陽性と予測した誤検出を偽陽性(FP)、陰性を正しく陰性と予測したものを真陰性(TN)といいます。例「迷惑メールの判定」では、迷惑メール50通のうち40通を見つけ(TP = 40、FN = 10)、普通のメール150通のうち20通を誤って迷惑メールと判定しました(FP = 20、TN = 130)。
適合率と再現率
適合率 = TP ÷ (TP + FP) は、陽性と予測したもののうち本当に陽性だった割合で、誤検出の少なさを表します。再現率 = TP ÷ (TP + FN) は、本当の陽性のうち陽性と予測できた割合で、見逃しの少なさを表します。例では適合率 40 ÷ 60 ≒ 66.67%、再現率 40 ÷ 50 = 80% です。判定の基準(しきい値)を下げると再現率は上がりますが、誤検出が増えて適合率は下がることが多く、2つはトレードオフの関係にあります。
F値と Fβ値
F値(F1)は適合率と再現率の調和平均で、2 × 適合率 × 再現率 ÷ (適合率 + 再現率) です。どちらか一方が低いと F値も低くなるので、両方のバランスを1つの数で見られます。例では 2 × 0.6667 × 0.8 ÷ 1.4667 ≒ 72.73% です。見逃しのほうが困る病気の検査などでは、再現率を β 倍重く見る Fβ値 = (1 + β²) × 適合率 × 再現率 ÷ (β² × 適合率 + 再現率) を使います。
不均衡なデータと正解率の落とし穴
正解率 = (TP + TN) ÷ 全体 は分かりやすい指標ですが、陽性がごく少ないデータでは役に立ちません。例「すべて陰性と予測する」では、陽性10件をすべて見逃しても正解率は 990 ÷ 1000 = 99% ですが、再現率は0%です。このようなときは、再現率・適合率・F値のほか、陽性と陰性それぞれの正しさを平均したバランス正解率や、4つの件数をすべて使うマシューズ相関係数(MCC)で評価します。
関連する問題を解く
- A適合率0.50、再現率0.90
- B適合率0.75、再現率0.50
- C適合率0.90、再現率0.50
答えと解説を見る
正解:C. 適合率0.90、再現率0.50
適合率(precision)は、陽性と予測したもののうち実際に陽性だった割合で、TP ÷ (TP + FP) = 45 ÷ 50 = 0.90です。再現率(recall)は、実際に陽性のもののうち陽性と予測できた割合で、TP ÷ (TP + FN) = 45 ÷ 90 = 0.50です。このモデルは、陽性と判定したものはほぼ正しいものの、陽性の半分を見逃しています。正解率は (45 + 105) ÷ 200 = 0.75です。
- A0.40
- B0.53
- C0.60
答えと解説を見る
正解:B. 0.53
まず、適合率は 20 ÷ (20 + 5) = 0.8、再現率は 20 ÷ (20 + 30) = 0.4です。F値は適合率と再現率の調和平均で、2 × 0.8 × 0.4 ÷ (0.8 + 0.4) = 0.64 ÷ 1.2 ≈ 0.53です。調和平均は小さい方の値に引っ張られるので、どちらか一方だけが高くてもF値は高くなりません。なお、正解率は (20 + 145) ÷ 200 = 0.825と高く見えますが、このモデルは陽性の6割を見逃しています。
- A0%
- B1%
- C99%
答えと解説を見る
正解:C. 99%
すべてを陰性と予測すると、陰性の990件はすべて正しく、陽性の10件はすべて誤りなので、正解率は 990 ÷ 1000 = 99%です。一方、陽性を1件も見つけられないので再現率は0%で、病気や不正の検出のように陽性を見つけることが目的なら役に立ちません。このようにクラスの割合が大きく偏ったデータ(不均衡データ)では、正解率だけで評価せず、適合率、再現率、F値などを合わせて見ます。少ない方のクラスの誤りを重く扱う重み付けや、クラスごとのデータの数をそろえるサンプリングなどの対策もあります。
よくある質問
適合率と再現率のどちらを重視すればよいですか?
誤りの種類ごとの損失で決めます。病気の検査や不正の検知のように、見逃し(偽陰性)の損失が大きいときは再現率を重視します。迷惑メールの判定のように、大事なメールを迷惑メールと誤判定する(偽陽性)損失が大きいときは適合率を重視します。
再現率と感度、偽陽性率と特異度の関係は?
再現率は医療の分野では感度(真陽性率)と呼ばれ、同じ指標です。特異度 = TN ÷ (TN + FP) は陰性を正しく陰性と判定できる割合で、偽陽性率 = 1 − 特異度 です。ROC曲線は、しきい値を変えたときの偽陽性率を横軸、再現率を縦軸にとったグラフです。
多クラス分類ではどう計算しますか?
クラスごとに「そのクラスを陽性、それ以外を陰性」とみなして2クラスの混同行列をつくり、適合率・再現率・F値を求めます。それらを単純に平均するのがマクロ平均、全クラスの TP・FP・FN を合計してから計算するのがマイクロ平均です。
試験ではどのように問われますか?
基本情報技術者試験・応用情報技術者試験や G検定では、混同行列の件数から正解率・適合率・再現率・F値を計算する問題や、不均衡なデータで正解率が当てにならない理由を問う問題が出ます。