モデル評価 — 「正解率99%」を疑う技術
モデルは作ることより測ることのほうが難しい。閾値を動かすと4つの結果(TP/FP/TN/FN)がどう変わるか、閾値を全部試すと何が見えるか(ROC/AUC)、そして1回の測定を信じないための交差検証まで — 評価の道具箱を動かしながら身につけます。
1. 「正解率99%」のワナ
1万人に1%しかいない病気を検出するモデルを考えます。全員を「陰性」と答えるだけのプログラムでも正解率は99%です。学習など一切していないのに、数字の上では優秀に見えてしまう。これが不均衡データにおける正解率の落とし穴です。
つまり「どれくらい当たったか」は1つの数では表せません。何をどう間違えたかまで分解して初めて、モデルの実力が見えます。その分解表が次の混同行列です。
2. 閾値が4つの結果を決める — 混同行列
分類モデルの生の出力は「陽性らしさ」のスコア(確率)です。スコアが閾値 θ を超えたら陽性と判定する — つまり判定結果は θ の置き方ひとつで変わります。下のデモで θ を左右に動かし、4つの領域と右の混同行列が連動する様子を見てください。
閾値スライダーと混同行列 — 4つの領域のせめぎ合い
水色=陰性クラス、ピンク=陽性クラスのスコア分布。閾値の右側が「陽性と判定」される領域で、緑=TP(正しく検出)、赤=FP(誤検出)、オレンジ=FN(見逃し)、青=TN。θ を右に寄せると FP は減るが FN が増える — Precision と Recall のバーが逆方向に動くのを確認してください。「重なり」を上げるとどこに θ を置いても間違いが消えないことも分かります。
POINT — 閾値はモデルの外で選ぶもの
モデルが出すのはスコアであって、判定ではない。見逃し(FN)が致命的な病気スクリーニングでは θ を下げ、誤検出(FP)が高コストなスパム判定では θ を上げる — 同じモデルでも、用途に合わせて θ を選び直せる。評価とは「θ をどこに置いても成り立つ性能の姿」を知ることでもある。
Precision = TP ⁄ (TP + FP) Recall = TP ⁄ (TP + FN) F1 = 2·P·R ⁄ (P + R)
Precision=「陽性と言った中の的中率」、Recall=「本物の陽性を拾えた率」。F1 は両者の調和平均で、片方だけ高くても伸びない
3. 閾値を全部試す — ROC曲線とAUC
θ をどこに置くかで指標が変わるなら、θ を端から端までスイープした軌跡でモデルを評価すればいい。横軸に FPR(偽陽性率)、縦軸に TPR(真陽性率=Recall)を取り、θ を動かしたときに描かれる軌跡が ROC曲線、その下側の面積が AUC です。
ROC曲線ライブ — 閾値スイープが1本の曲線を描く
左=スコア分布の上を閾値(白い破線)が右から左へスイープ。右=そのときの (FPR, TPR) が白い点となって ROC 曲線上を移動し、通った跡が緑の曲線と面積(AUC)になります。「重なり」を 0% にすると曲線は左上に張り付き AUC ≈ 1.0、100% にすると対角線(ランダムと同じ、AUC = 0.5)に潰れます。
一歩先へ — AUCの確率的な意味と、不均衡データでの注意
AUC には「ランダムに選んだ陽性サンプルのスコアが、ランダムに選んだ陰性サンプルより高い確率」というきれいな解釈がある。ただし FPR は陰性の総数で割るため、陰性が圧倒的に多い不均衡データでは大量の FP が出ても FPR がほとんど動かず、ROC は楽観的に見えがち。そういう場面では Precision–Recall 曲線(AUPRC)のほうが実態を映す。
4. 1回の測定を信じない — 交差検証
データを訓練用とテスト用に1回だけ分けて測った数字は、「たまたまその分け方だったから」の運を含みます。そこでデータを k 個に分割し、交代で1つを評価用に回して k 回測り、平均とばらつきで報告するのが k-分割交差検証です。
5-fold 交差検証 — 交代で測って平均する
上の帯がデータ全体(青=陰性、ピンク=陽性)。オレンジ枠の fold だけを評価に使い、残り4つで学習 — を5回繰り返して精度バーが1本ずつ立ち、最後に「平均±ばらつき」が出ます。不均衡データにすると全 fold で精度99%前後になりますが、右の比較パネルの通り「常に陰性」と答えるだけのモデルとほぼ同じ — 正解率ではなく再現率を見るべき場面です。
POINT — ばらつきも成績のうち
「精度 84.2% ± 2.1%」のように±付きで報告すれば、2つのモデルの差が誤差の範囲か本物かを判断できる。fold 間のばらつきが大きいモデルは、データが少し変わると性能が揺れる「不安定なモデル」だというサインでもある。なお分類ではクラス比率を保ったまま分割する層化(stratified)分割が基本。
5. 評価が嘘をつくとき — データリーク
ここまでの道具がすべて正しく動く前提は、評価用データの情報が学習に一切漏れていないことです。この前提は驚くほど簡単に壊れます。
注意 — リークの典型パターン
①標準化・欠損補完などの前処理の統計量を全データで計算してから分割する(テストの平均・分散が学習に漏れる)。②時系列データをシャッフルして分割し、未来の情報で過去を予測してしまう。③同一患者・同一ユーザーのデータが訓練とテストの両方に入る。リークした評価値は本番投入まで気づけないことが多く、「分割 → 前処理 → 学習」の順番を守ることが唯一の防御になる。
6. まとめ — 評価のチェックリスト
- 正解率だけで判断しない:不均衡データでは「常に多数派」のダミーと必ず比較する。
- 混同行列:TP/FP/TN/FN への分解がすべての出発点。Precision と Recall はトレードオフ。
- ROC/AUC:閾値に依存しない性能。完全分離で1.0、ランダムで0.5。強い不均衡では PR 曲線も見る。
- 交差検証:k 回測って平均±ばらつきで報告。1回の分割は運を含む。
- リーク対策:前処理はテストと分離してから。時系列・グループ構造に沿った分割を。