ホーム›Part 2 機械学習の基礎›2.7

Part 2 · 機械学習の基礎

2.7 評価指標

混同行列・適合率・再現率・ROC

読了目安 10分前提:1.2 条件付き確率とベイズの定理、2.4 ロジスティック回帰▶ 動画(約6分)

この回で分かること

  • 混同行列 の4つのます(正しく検出・見逃し・誤検知・正しく見送り)から、再現率や適合率を計算できる
  • 「正解率が高い」だけでは安全を語れない理由を、少数派のデータと対象の珍しさから説明できる
  • しきい値による見逃しと誤検知の入れ替わりを、ROC曲線 と AUC で説明できる

直感で理解する

歩行者検出器を、1,000件の候補で試験しました。本当に歩行者なのは100件で、残りの900件は看板や柱など、歩行者ではないものです。検出器は候補ごとに「歩行者らしさ」の点数を出し、しきい値を超えたものを「歩行者」と判定します。

結果は「正解率 90.9%」。立派に見えますが、実は「いつでも『歩行者なし』と答える」だけの役に立たない検出器でも、正解率は90%になります。歩行者が少数派だからです。安全に関わる評価では、結果を次の4つに分けて数えることから始めます。この表を 混同行列 と呼びます。

判定:歩行者判定:歩行者でない
本当は歩行者(100件)69(正しく検出:TP)31(見逃し:FN)
本当は歩行者でない(900件)60(誤検知:FP)840(正しく見送り:TN)

見逃しと誤検知が起きるのは、歩行者と歩行者でないものの点数の分布が重なっているからです。しきい値をどこに置いても、2種類の間違いを同時にゼロにはできません。

歩行者でない候補(900件) 歩行者(100件) 点線は、形が分かるよう9倍に拡大 しきい値 ← 見逃し 31件(FN) 誤検知 60件(FP)→ 検出器が出す点数(右ほど歩行者らしい)
検出器が出す点数の分布(高さは件数に比例。歩行者は100件と少ないので、山の高さは歩行者でない候補の9分の1。点線は、その山を9倍に拡大して形を見やすくしたもの)。しきい値より右を「歩行者」と判定する。しきい値より左にある歩行者(色の部分)が見逃し、しきい値より右にある歩行者でない候補(赤)が誤検知。数値は説明用の例。

数式で確かめる

① 混同行列から計算する主な指標

指標式この例意味
再現率(検出率)\(\dfrac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FN}}\)69 ÷ 100 = 69%本物の歩行者のうち、見つけられた割合
見逃し率\(\dfrac{\mathrm{FN}}{\mathrm{TP} + \mathrm{FN}}\)31 ÷ 100 = 31%本物の歩行者のうち、見逃した割合(= 1 − 再現率)
適合率\(\dfrac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FP}}\)69 ÷ 129 ≈ 53%「歩行者」と判定したもののうち、本物だった割合
誤検知率\(\dfrac{\mathrm{FP}}{\mathrm{FP} + \mathrm{TN}}\)60 ÷ 900 ≈ 6.7%歩行者でないもののうち、間違って「歩行者」とした割合
正解率\(\dfrac{\mathrm{TP} + \mathrm{TN}}{N}\)909 ÷ 1000 ≈ 91%全体(N 件)のうち、判定が合っていた割合

再現率が高いほど見逃しが少なく、適合率が高いほど誤検知が少なくなります。2つを1つの数にまとめたいときは、F1スコア を使います(P は適合率、R は再現率)。

$$F_1 = \frac{2PR}{P + R} = \frac{2 \times 0.53 \times 0.69}{0.53 + 0.69} \approx 0.60$$

F1スコアは、どちらか一方だけが高くても大きくなりません。

分母が同じ指標どうしは、足すと 1 になります。再現率と見逃し率は、どちらも本物の歩行者(TP + FN)が分母なので、再現率 99% と見逃し率 1% は同じことを言っています。安全の議論では見逃し率で書くことが多く、「再現率 99% と 99.9%」はわずかな差に見えても、見逃し率では「1% と 0.1%」で 10 倍違います。同じように、歩行者でないもの(FP + TN)が分母の誤検知率について、1 − 誤検知率を 特異度(真陰性率)と呼び、医学や統計でよく使われます。適合率だけは分母が「検出した件数」なので、②で見るように対象の珍しさで変わります。

論文や規格では、別の呼び方や英語の略称もよく出てきます。再現率=感度・真陽性率(TPR)、見逃し率=偽陰性率(FNR)、誤検知率=偽陽性率(FPR)、特異度=真陰性率(TNR)、適合率=陽性的中率(PPV)です。なお、画像の中から物体を探す物体検出(3.4)では、「歩行者でないもの」を数えきれないので TN が決まらず、誤検知率や特異度は計算できません。そのため誤検知は、1 枚あたり・1 km あたり・1 時間あたりの件数で表すのがふつうです(不要な急ブレーキの頻度など)。

② 適合率は「対象の珍しさ」で変わる

同じ検出器・同じしきい値のまま、歩行者が1,000件中10件しかいない場所で使うとどうなるでしょう。見つかる歩行者は約6.9件、誤検知は約66件で、適合率は約9.5%まで下がります。再現率も誤検知率も変わっていないのに、「歩行者」と判定したもののうち本物は1割もありません。これは 1.2 のベイズの定理そのものです。適合率を比べるときは、どんな割合のデータで測ったかをそろえる必要があります。

③ しきい値を動かす

しきい値0.51.01.52.02.5
再現率93%84%69%50%31%
適合率25%37%53%71%84%
見逃し(件)716315069
誤検知(件)27814360206

しきい値を下げると見逃しが減り、誤検知が増えます(2.4)。上げるとその逆です。これまでの表はしきい値1.5の場合でした。

④ ROC曲線と AUC

すべてのしきい値について、横に誤検知率、縦に再現率をとって結んだ曲線を ROC曲線 と呼びます。左上に近いほど、見逃しも誤検知も少ない良い検出器です。

0 0.5 1 0.5 1 再現率 誤検知率 0.5 1.0 1.5 2.0 2.5 AUC ≈ 0.92 当てずっぽう(AUC = 0.5)
この検出器のROC曲線。点の横の数字はしきい値で、しきい値を下げるほど右上に進む(見逃しは減るが誤検知は増える)。点線は、点数に意味がない当てずっぽうの場合。

曲線の下の面積を AUC と呼びます。AUC は「歩行者と歩行者でないものを1つずつ選んだとき、歩行者のほうに高い点数をつける確率」で、この検出器では約0.92、当てずっぽうなら0.5です。AUC はしきい値や歩行者の割合によらないので、検出器どうしを比べるのに便利です。ただし、車の中で実際に使うのは1つのしきい値です。安全の判断は、そのしきい値での見逃しと誤検知の数で行います。

発展:指標にも幅がある

ここまでの指標は、試験データから計算した「推定値」です。試験の件数が少なければ、たまたまの当たり外れで値が大きく動きます。歩行者 200 人の試験で再現率が 95%(190 人を検出)だったとき、1.6 の標準誤差は

$$\sqrt{\frac{0.95 \times 0.05}{200}} \approx 0.015$$

なので、95% 信頼区間はおよそ 92〜98% です。別のモデルが同じ 200 人で 96% だったとしても、この幅の中なので「良くなった」とは言えません(比べ方は 3.10 の対応のある比較を使います)。幅を ±1% に縮めるには、およそ 4 × 0.95 × 0.05 ÷ 0.01² ≈ 1,900 人が必要です。

見逃しが 1 件もなかったときは、区間の式の代わりに 1.8 の3の法則を使います。300 人で見逃しゼロなら、見逃し率の上限は 3 / 300 = 1%、つまり「再現率は 99% 以上」とまでしか言えません。適合率も同じで、分母はアラームの件数なので、アラームが少ないと幅は大きくなります。指標は「推定値・幅(区間)・件数」をセットで書きます。

自動運転との接点

  • 正解率だけで判断しない:歩行者や障害物のように、危険につながる対象はたいてい少数派です。正解率ではなく、対象ごとの再現率(見逃し)と誤検知を見ます。
  • 見逃しと誤検知の両方に要求を置く:見逃しは衝突に、誤検知は不要な急ブレーキ(追突の危険や、乗る人の不信)につながります。誤検知は「1時間あたり何回」「1万kmあたり何回」のような率でも示し、どちらにも目標を決めます(1.8)。→ 5.5 受入れ基準と妥当性確認目標
  • 場面ごと・対象ごとに分けて測る:全体の再現率が高くても、夜間・雨・子ども・遠くの歩行者で低ければ危険です。条件ごとに分けて測り、件数が少なければ信頼区間も付けます(1.6)。
  • 物体検出では「場所」も評価する:画像の中のどこにいるかまで当てる物体検出では、予測した枠と正解の枠の重なり(IoU)が一定以上のときだけ「正しく検出」と数えます。距離や大きさで分けた評価も大切です。→ 4.3 センサとフュージョン

まとめ

  • 評価はまず混同行列(TP・FN・FP・TN)で数える。正解率だけでは、少数派の危険な対象を見逃すモデルでも高く見える
  • 再現率は見逃しの少なさ、適合率は誤検知の少なさを表す。適合率は、対象がどれだけ珍しいかで大きく変わる
  • しきい値で見逃しと誤検知は入れ替わる。ROC曲線と AUC で検出器の実力を比べ、実際のしきい値は安全の要求から決める

確認クイズ

Q1. 100人の歩行者のうち90人を検出し、誤検知は30件でした。再現率と適合率は?

再現率は 90 ÷ 100 = 90%、適合率は 90 ÷ (90 + 30) = 75% です。

Q2. 歩行者が全体の1%しかいないデータで、「いつも『歩行者なし』と答える」モデルの正解率と再現率は?

正解率は99%ですが、再現率は0%です。歩行者を1人も見つけられません。少数派が大事な場面では、正解率は当てになりません。

Q3. しきい値を上げると、再現率と適合率はふつうどう変わる?

「歩行者」と判定するものが減るので、再現率は下がり(見逃しが増える)、適合率は上がります(誤検知が減る)。

Q4. 同じ検出器を、歩行者の多い市街地と少ない郊外で評価しました。再現率はほぼ同じなのに、適合率は郊外のほうがずっと低くなりました。なぜ?

郊外では歩行者が珍しく、歩行者でない候補の割合が大きいからです。誤検知率が同じでも、誤検知の件数が本物の歩行者に比べて多くなり、適合率が下がります(1.2 のベイズの定理)。

もっと知りたい人へ