Ch.10

分類評価指標:モデルの詳細な成績表

分類AIモデルが「試験」のあとにもらう『詳細な成績表』について学びます。「何問正解した?」(精度)だけでなく、「どの問題をどう間違えたか」をきちんと見る混同行列(Confusion Matrix)の考え方を身につけます。スパムフィルターやがん診断AIのように、間違え方が致命的になりうるビジネス場面で、適合率・再現率・F1といった多様な指標がモデルの本当の実力をどう証明するかを、直感的なたとえとともに説明します。

チャプター別 機械学習図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。機械学習の流れを一覧で確認できます。

実際(行)と予測(列)で2×2の混同行列を埋めたあと、精度・適合率・再現率・F1を計算します。

予測 陽性予測 陰性実際 陽性実際 陰性TPFNFPTN混同行列 (2×2)実際陽性・予測陽性 → TPTP: 真の陽性 ✓FN: 見逃し(実際陽性→予測陰性)FP: 偽陽性(実際陰性→予測陽性)TN: 真の陰性 ✓

混同行列で分類モデルの成績表を読み、目的に合った指標を選びます。

分類評価指標:混同行列とモデルの成績表

混同行列(Confusion Matrix)とは?AIの詳細な成績表 — 試験で「正解数」だけ見ても、その生徒が数学が得意か英語が得意かはわかりません。分類モデルも同じです。モデルの予測(列)実際の正解(行)を並べて2×2の表にしたものが混同行列です。4マスを見れば、モデルが何を正解し、どこで「混同」して足をすくわれているかが一目でわかります。
4マスの秘密:TP, TN, FP, FN — おなじみの「オオカミ少年」で考えましょう。ここでは「陽性」は少年がオオカミだと言うこと、「陰性」は平穏な状態です。
* TP(真の陽性・True Positive): 本当にオオカミが来た
(1) 、少年もオオカミだと言った
(1) 。村を救った最高の結末。
* TN(真の陰性・True Negative): オオカミは来なかった(0)、少年も静か(0)。平和。
* FP(偽陽性・False Positive): オオカミは来ていない(0)のに少年がオオカミだと言った
(1) 。村人が武器を持って駆けつける無駄足( false alarm)。
* FN(見逃し・False Negative): 本当にオオカミが来た
(1) のに少年は眠っていて何も言わない(0)。羊が食べられる最悪の事態(miss)。
* 全体の個数は n=TP+TN+FP+FNn = \mathrm{TP} + \mathrm{TN} + \mathrm{FP} + \mathrm{FN} です。
精度(Accuracy)の危ない落とし穴 — 全問題のうち正解した割合です。式は 精度=TP+TNn\text{精度} = \frac{\mathrm{TP}+\mathrm{TN}}{n}。直感的ですが怖い落とし穴があります。100日のうち99日は平和で、オオカミが来るのは1日だけだとしましょう。毎日目を閉じて「オオカミなんて来ない!」とだけ叫ぶバカなロボットでも、精度は99%になります。本当に検知すべき陽性がごく少ない「不均衡データ」では、精度という数字一つを信じてはいけません。
適合率(Precision)と再現率(Recall):追うべき二匹のウサギ
* 適合率(慎重さの尺度): 「オオカミだと言ったとき、その何割が本当にオオカミだった?」 モデルが陽性と予測したもののうち、本当に陽性だった割合です。適合率=TPTP+FP\text{適合率} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FP}}。嘘(FP)をつかず、確かなときだけ言うほど上がります。
* 再現率(敏感さの尺度): 「実際にオオカミが現れた出来事のうち、何回気づいて警告した?」 実際の陽性のうち、モデルが当てた割合です。再現率=TPTP+FN\text{再現率} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}。オオカミを一匹も見逃さないほど(FNが少ないほど)上がります。
F1スコア:適合率と再現率の黄金バランス — 適合率と再現率はシーソーで、一方を無理に上げると他方がガクンと下がります。この二つを一つの数字にまとめたのがF1スコアです。普通の平均ではなく調和平均を使います。F1=2TP2TP+FP+FN\text{F1} = \frac{2 \cdot \mathrm{TP}}{2\cdot\mathrm{TP}+\mathrm{FP}+\mathrm{FN}}。調和平均の性質で、適合率か再現率のどちらかがひどく低いとF1も底を打ちます。どちらかに偏らないバランスのよいモデルを探すときに主に使います。
AUC (Area Under the ROC Curve):モデルのランキング判定 — モデルが「陽性/陰性」だけでなく「90%の確率でオオカミ」のように確率スコアを出すときの指標です。0~1の値で、本当の陽性に本当の陰性よりおおむね高い確率スコアを付けられているか(識別力)を見ます。1満点なら完璧な順位付け、0.5ならコイン投げと同じ。閾値をいじる前に、モデルそのものの「基礎体力」を比較するのに便利です。
精度99%のウソにだまされないために — クレジットカードの不正検知AIを想像してください。10万件の決済のうち不正は1件だけ。AIが何もせず「全部正常決済です」とだけ出しても、精度は99.999%になります。でもこのAIは不正を一人も検知しない(再現率0%)役立たずです。混同行列を描き適合率再現率を解剖して初めて、モデルが本当に役割を果たしているのか、手抜きをしているのかが明らかになります。
実務では「どのミスを許容するか」の熾烈な戦い — ビジネス目的によって命をかける指標が違います。
* 再現率(見逃し防止)が命の現場: がん診断モデル。健康な人をがんと誤解(FP)して再検査させても、本当のがん患者を見逃し(FN)して治療時期を逃す大惨事だけは防がねばなりません。
* 適合率(誤検知防止)が命の現場: スパムフィルター。本物のスパムを一二通見逃して(FN)受信箱に入っても消せばいいですが、社長の重要メールをスパムと誤解(FP)して迷惑フォルダに放り込むと仕事に大打撃です。
AIサービスの最終合否審査(二値分類評価) — コロナ陽性/陰性判定、YouTubeの有害動画ブロック/許可、銀行の融資承認/拒否など、二者択一の実務AIプロジェクトは、リリース直前に混同行列を描き、適合率・再現率・F1を総合的に審査されます。
アラームの感度を調整する(閾値チューニング) — AIは通常0~1の確率を出します。「何%以上でアラームを鳴らすか」という基準線(閾値)をいじり、ビジネスに合わせてモデルをならします。セキュリティが極めて厳しい機関なら基準をぐっと下げて少しでも怪しければアラーム(再現率最大化)にし、反対に通知が多すぎてユーザーがうんざりするアプリなら基準を厳しくして、かなり確実なときだけアラーム(適合率最大化)にします。
分類モデルの性能を見るときは正解数だけ見ず、混同行列で実際(行)と予測(列)を2×2に分けてTP, TN, FP, FNを埋めます。精度は(TP+TN)を全体nで割った値、適合率は陽性と予測したもの(TP+FP)のうち本当の陽性(TP)の割合、再現率は実際の陽性(TP+FN)のうちモデルが陽性と正解した(TP)割合です。クラスが不均衡なときは精度だけでは誤解しやすいので、業務目的に応じて適合率(偽陽性を減らす)や再現率(見逃しを減らす)を重視し、両者のバランスはF1で見ます。
各指標の正確な意味(記述式)TP: 実際が陽性
(1) でモデルも陽性
(1) と予測した場合の個数。TN: 実際が陰性(0)でモデルも陰性(0)と予測した場合の個数。FP: 実際は陰性(0)なのにモデルが陽性
(1) と予測した場合(偽陽性)。FN: 実際は陽性
(1) なのにモデルが陰性(0)と予測した場合(見逃し)。精度: 全体のうち正解した割合。適合率: 陽性と予測したもののうち本当の陽性の割合。再現率: 実際の陽性のうちモデルが陽性と正解した割合。F1: 適合率と再現率の調和平均。AUC: 本当の陽性が本当の陰性よりおおむね高いスコアを得ているかを0~1で要約した値。