評価指標
機械学習モデルの性能を判断するうえで欠かせないのが評価指標である。とりわけ分類問題では、混同行列(Confusion Matrix)を基点として多くの重要な指標が定義される。ここでは医療の診断場面を例に、混同行列と主要な評価指標を整理する。
混同行列(Confusion Matrix)
ある医師が患者の病気について「陽性(positive)」か「陰性(negative)」かを診断している状況を考える。診断結果と実際の病気の有無を組み合わせると、以下の4通りとなる。
• TP(True Positive):医師は陽性と判定し、実際にも陽性である
• FP(False Positive):医師は陽性と判定したが、実際には陰性である
• FN(False Negative):医師は陰性と判定したが、実際には陽性である
• TN(True Negative):医師は陰性と判定し、実際にも陰性である
これらを表形式で整理したものが混同行列と呼ばれる。
| 実際の状態 \ 医師の判定 | 陽性(医師が「病気」と判断) | 陰性(医師が「健康」と判断) |
|---|---|---|
| 陽性(実際に病気) |
TP(真陽性) = 実際にも病気で、医師も「病気」と言った |
FN(偽陰性) = 実際は病気なのに、医師が「健康」と誤判定 |
| 陰性(実際に健康) |
FP(偽陽性) = 実際は健康なのに、医師が「病気」と誤判定 |
TN(真陰性) = 実際にも健康で、医師も「健康」と言った |
分類タスク
購入するかしないかといった質的変数を予測するタスク。
正解率(Accuracy)
全ての予測のうち、正解だったものの割合を示す指標である。つまり、医師がどれだけ正しい判定を行ったかを示す指標である。
※注意点
Accuracy は便利な指標である一方、陽性と陰性の比率が極端に偏っている場合はほとんど意味を持たない。
例として、患者の 99% が健康で 1% だけが重篤な病気である状況を考える。医師が全員を「陰性」と判定すれば Accuracy は 99% となるが、実際には陽性患者を一人も救えておらず、優秀な医師とは言えない。
再現率(Recall, True Positive Rate)
再現率は「陽性の患者のうち、どれだけ陽性と診断できたか」を表す指標である。
特徴
- FN(偽陰性) のコストが高い場面で重要となる
例:重病の見逃し、不正の取りこぼし、欠陥品の見落とし - 再現率を高くすると FP(偽陽性)が増える傾向がある
→ より敏感に検出するため誤検知が増える
適合率(Precision)
適合率は「医師が陽性と判定した患者のうち、実際に陽性だった割合」を示す。
特徴
- FP(偽陽性) のコストが高い場面で重要となる
例:健康な人に不必要な治療を行うなど - Precision を高めると FN(偽陰性)が増えやすい
→ より確実な陽性のみを拾うが、見逃しが増える
F値(F-measure / F1-score)
F値は適合率と再現率のバランスを評価する指標である。
どちらか一方が低いとF値も低くなるため、総合的な性能を見たい場合に用いられる。
特徴
- 適合率と再現率の均衡が重要な場面に向く
- 一方に偏った性能を持つモデルは高いF値を得られない
その他の重要指標
分類タスクでは以下の指標も広く使われる。
真陰性率(True Negative Rate)
Negative を正しく Negative と判定できている割合であり、FP を抑えたい場面で有効である。
偽陽性率(False Positive Rate)
陰性であるにも関わらず陽性と判定された割合。
ROC曲線では横軸として用いられる。
ROC曲線
真陽性率と偽陽性率の関連を表す曲線
偽陰性率(False Negative Rate)
陽性を見逃した割合を示す。見逃しによるコストが大きい場面で重要となる。
例
以下のデータを使って各数値を算出する。
| 患者ID | 実際の状態 | モデル予測確率 | 閾値0.5での予測 |
|---|---|---|---|
| 1 | 1(病気) | 0.9 | 陽性 |
| 2 | 0(健康) | 0.7 | 陽性 |
| 3 | 1 | 0.8 | 陽性 |
| 4 | 0 | 0.4 | 陰性 |
| 5 | 1 | 0.6 | 陽性 |
| 6 | 0 | 0.3 | 陰性 |
| 7 | 1 | 0.2 | 陰性 |
| 8 | 0 | 0.1 | 陰性 |
| 9 | 1 | 0.95 | 陽性 |
| 10 | 0 | 0.5 | 陽性 |
①上記の表を元に各患者を分類する
| 患者ID | 実際 | 種類 |
|---|---|---|
| 1 | 1 | TP |
| 2 | 0 | FP |
| 3 | 1 | TP |
| 4 | 0 | TN |
| 5 | 1 | TP |
| 6 | 0 | TN |
| 7 | 1 | FN |
| 8 | 0 | TN |
| 9 | 1 | TP |
| 10 | 0 | FP |
②正解率を算出する
正解率 = 0.7(= 70%)
モデルは 10件中7件を正しく判定した という意味になる。
再現率(Recall)= 0.8(80%)
実際に病気である人(陽性 5 人)のうち、その80%を正しく陽性と判定できた。
適合率(Precision)= 0.667(約66.7%)
適合率66.7% = “陽性”と言われた人の約3人に1人は本当は健康
⑤F値を算出する
病気の人を見つける能力はまあまあ良いが、誤って病気と判定するケースも多いため、総合点は72.7%
健康な人のうち60%を正しく「健康」と判定できている
本当は健康の人のうち40%を病気と誤って診断している
本当は陽性(病気)なのに、陰性と誤判定してしまったケースが20%あった
実際に健康な人(=0)を 75% の確率で正しく「健康」と判定できている
回帰タスク
売上などの量的変数を予測するタスク
MSE(Mean Squared Error)
絶対平均誤差のこと。
特長
- 最小二乗法を用いた回帰分析では、MSEを最小化するようにパラメータを調節する
- 学習データの単位の二乗となるので、評価指標の解釈が難しい(外れ値があると値が大きくなる)
RMSE(Root Mean Square Error)
特長
- RMSEの単位は学習データの単位と同じになるため解釈しやすくなる
MAE(Mean Absolute Error)
特長
- 残差の大きさはRMSEと比較すると影響小
例題
あるクラスで、5人の生徒について 1日の勉強時間(時間) と テストの点数(点) を調査した。
| 生徒 | 勉強時間(X) | テスト点数(Y) |
|---|---|---|
| A | 1 | 52 |
| B | 2 | 55 |
| C | 3 | 61 |
| D | 4 | 66 |
| E | 5 | 70 |
Y=aX+bを求め、その予測誤差から MSE, RMSE, MAE を算出する。
⑤各生徒の誤差を算出
| 生徒 | X | Y(実測) | Ŷ(予測) | 誤差 e = Ŷ−Y | eの絶対値 | e² |
|---|---|---|---|---|---|---|
| A | 1 | 52 | 51.4 | -0.6 | 0.6 | 0.36 |
| B | 2 | 55 | 56.1 | 1.1 | 1.1 | 1.21 |
| C | 3 | 61 | 60.8 | -0.2 | 0.2 | 0.04 |
| D | 4 | 66 | 65.5 | -0.5 | 0.5 | 0.25 |
| E | 5 | 70 | 70.2 | 0.2 | 0.2 | 0.04 |
参考
https://qiita.com/TsutomuNakamura/items/a1a6a02cb9bb0dcbb37f
https://zenn.dev/mamech/articles/5d46f99dc56b
https://toukei-lab.com/rmse_mae_mse#MAEMean_Absolute_Error


























