モデル評価と指標

モデル評価とは

機械学習のモデルは、プログラムのように「動く/動かない」で判断できません。どのくらい正しく予測できるかを数字で測る必要があります。これがモデル評価です。

[[自動テスト]] が「仕様どおりか」を白黒で判定するのに対し、モデル評価は「どのくらい当たるか」を割合で表すのが大きな違いです。[[機械学習の基礎]] で作ったモデルも、評価して初めて実用に足るか判断できます。

分類タスクの主な指標

迷惑メール判定のように「陽性/陰性」を当てるタスクでは、次の指標がよく使われます。

指標意味重視する場面
正解率(Accuracy)全体のうち正しく当てた割合陽性と陰性が同じくらいの量のとき
適合率(Precision)陽性と予測したもののうち、本当に陽性だった割合誤検知を減らしたいとき
再現率(Recall)本当に陽性のもののうち、拾えた割合見逃しを減らしたいとき
F1スコア適合率と再現率のバランスを1つにまとめた値両方を同時に見たいとき

正解率だけを見てはいけない

1000人に1人しかかからない病気を判定するモデルは、「全員に陰性」と答えるだけで正解率が99.9パーセントになります。しかし患者は1人も見つけられていません。データが偏っていると正解率は簡単に嘘をつくため、適合率・再現率をあわせて見る必要があります。

適合率と再現率はトレードオフ

迷惑メールフィルタの判定を厳しくすると見逃しは減りますが、大事なメールまで迷惑メール扱いされます。緩くすれば逆になります。どちらを取るかは技術ではなく業務上の損得で決めます。

  • 誤検知のコストが高い(重要メールを消したくない)→ 適合率を優先
  • 見逃しのコストが高い(病気を見落としたくない)→ 再現率を優先

評価用データの分け方

  • 訓練データ — モデルを学習させるためのデータ
  • 検証データ — 設定を調整しながら途中経過を確かめるためのデータ
  • テストデータ — 最後に一度だけ使う「本番試験」

テストデータで何度も調整すると、テストに合わせたモデルになってしまい、[[過学習と汎化]] と同じ問題が起きます。

生成AIの評価

[[生成AI・LLM]] は正解が1つに決まらないため、分類の指標だけでは測れません。実務では公開ベンチマークのスコア、人手による採点、別のLLMに採点させる方式、[[ハルシネーション]] の発生率などを組み合わせます。[[ファインチューニング]] の効果も、こうした指標を前後で比較して初めて確認できます。

初学者向けポイント

  • 指標は1つだけ見ない。正解率・適合率・再現率をセットで確認する
  • 何もしないベースラインと比べて、本当に改善しているか見る
  • 評価に使ったデータを学習に混ぜない。混ざるとスコアが不当に上がる

関連技術とのつながり

  • [[機械学習の基礎]] — 学習したモデルの良し悪しを判断する工程が評価
  • [[過学習と汎化]] — 評価によって初めて過学習に気づける
  • [[ファインチューニング]] — 改善したかどうかは指標の比較で確認する
  • [[ハルシネーション]] — 生成AIでは事実性が重要な評価軸になる
  • [[LLMアプリの評価とテスト]] — 評価セットを作りCIで回帰を検知する実践編
  • [[推論パラメータと出力のばらつき]] — 出力が毎回変わるため1回の比較では測れない
Q: 1000人に1人しか陽性がいないデータで「全員陰性」と答えるモデルの評価として正しいのはどれ?
- [ ] 正解率が低いので使えないと分かる
- [x] 正解率は非常に高くなるが、再現率は0で役に立たない
- [ ] 適合率が100%なので優秀なモデルといえる
解説: 偏ったデータでは正解率が高く出ます。陽性を1件も拾えていないため再現率で問題が露呈します。

Q: 「陽性と予測したもののうち、本当に陽性だった割合」を表す指標はどれ?
- [x] 適合率(Precision)
- [ ] 再現率(Recall)
- [ ] 正解率(Accuracy)
解説: 予測を分母にするのが適合率、実際の陽性を分母にするのが再現率です。

Q: テストデータの使い方として適切なのはどれ?
- [ ] 調整のたびに何度も使ってスコアを上げる
- [x] 最後の性能確認に使い、学習や調整には使わない
- [ ] 訓練データと混ぜて学習量を増やす
解説: テストデータは本番試験にあたります。調整に使い回すとそのデータ専用のモデルになってしまいます。