AI異常検知の「評価」を、手を動かして理解する(1/4)

AI外観検査を導入するとき、いちばん誤解されやすいのが 「評価(evaluation)」 の部分です。
「F1 が最大の閾値に設定します」と言われても、F1 とは何か、なぜ閾値で結果が変わるのか、
100% という数字をどこまで信じてよいのか — ここが腹落ちしないまま話が進みがちです。

この記事では、ブラウザで動く教材アプリを 実際に操作しながら、異常検知の評価プロセスを
一歩ずつ体で理解していきます。数式の暗記は不要です。スライダーを動かして、
数字とグラフが一斉に動くのを眺めるだけで、評価の全体像がつかめます。

アプリ(無料・インストール不要)
https://anomalydetectiondemo.streamlit.app/
t02_tab1_default.png

この記事を別ウィンドウで開き、アプリを操作しながら読むのがおすすめです。
表示されるデータはすべて説明用の疑似データで、実製品のデータではありません。

このチュートリアルで分かること

  • 異常スコアと閾値の関係、そして「過検知 ⇄ 見逃し」のトレードオフ
  • 混同行列と 5 つの評価指標(Recall / Precision / F1 など)が何を表すか
  • ROC / PR / F1 曲線の読み方と、閾値の 5 つの決め方
  • 「同じ AI でも、サンプル次第で成績がブレる」という評価の落とし穴

各パートには 🖱 操作 と 👀 観察 を用意しました。実際にやってみてください。


Part 0. 前提:AI は「良品らしさ」を測っている

異常検知には、有名な言葉があります。

幸福な家庭はみな同じように似ているが、不幸な家庭は不幸なさまもそれぞれ違うものだ。
— トルストイ『アンナ・カレーニナ』

良品はどれも似ていますが、欠陥は一つひとつ違います。 キズ、打痕、汚れ、欠け…
欠陥のパターンを全部集めて教えるのは不可能です。そこで良品学習型の異常検知は、
「良品らしさ」だけを学び、そこからどれだけ外れているかを数値化 します。

この数値が 異常スコア(0〜1)です。良品らしいほど小さく、欠陥らしいほど大きくなります。
そして、あるライン(閾値)を超えたものを「NG」と判定します。

t01_overview.png

つまり AI は最初から「OK / NG」と言っているのではなく、
スコアを付け → 閾値で線引きする、という 2 段構えなのです。
この記事は、その「線引き(=評価)」を掘り下げていきます。

画面の構成:左が操作パネル(閾値スライダーと分布設定)、右が 4 つのタブです。

Part 1. 異常スコアと閾値 — トレードオフを体感する(タブ①)

タブ①には 2 つのグラフがあります。同じデータの別の見方 です。

  • 左:分布で見る — 青が良品(OK)、オレンジが欠陥(NG) のスコアの山。縦の点線が閾値。線より右が NG 判定。
  • 右:1 サンプルずつ見る — 点ひとつが製品ひとつ。横の点線が閾値。線より上が NG 判定。

グラフの下に、いちばん大事な 2 つの数字があります。

  • 過検知(かけんち):良品なのに NG と判定した数(=止めなくていい物を止めた)
  • 見逃し(みのがし):欠陥なのに OK と判定した数(=流出した)

🖱 操作 1:閾値を左(低く)へ動かす

左サイドバーの 閾値スライダー0.30 くらいまで下げてみましょう。
t03_threshold_low.png

👀 観察過検知が 67 件 に跳ね上がり、見逃しは 0 件 になりました。
線を左に寄せると欠陥は全部つかまえますが、良品まで大量に巻き込みます。

🖱 操作 2:閾値を右(高く)へ動かす

今度は 0.60 くらいまで上げてみます。

t04_threshold_high.png

👀 観察過検知は 0 件、しかし 見逃しが 62 件
線を右に寄せると良品は素通しできますが、欠陥をごっそり見逃します。

🖱 操作 3:バランス点(0.44)に戻す

t02_tab1_default.png

👀 観察過検知 11 件・見逃し 12 件。両方が少ないバランス点です。

このパートの核心

閾値 過検知 見逃し
低い (0.30) 67 0
中間 (0.44) 11 12
高い (0.60) 0 62

過検知と見逃しを同時にゼロにする閾値は存在しません(分布が重なっているため)。
片方を減らせば、必ずもう片方が増える。だから閾値は「数学的な正解」ではなく、
見逃しと過検知のどちらをより避けたいか、という品質方針で決める運用条件 なのです。

これが異常検知の評価で最初に押さえるべき、いちばん大切な感覚です。