不均衡データの実務 — 99%が正常のとき何を最適化するか
陽性が1%しかないデータでは正解率が嘘をつく。混同行列からPR曲線、重み付け・サンプリング・確率の較正、そして期待コストから閾値を逆算するところまでを、前提知識なしで積み上げる。
「全員シロ」と書いた紙を配る機械
1000人に1人がかかる病気があるとします。この病気を見つける装置を作れと言われて、こういう機械を作ったとしましょう。中身は空っぽで、誰が来ても「陰性です」と印刷した紙を出すだけ。
この機械の正解率は99.9%です。1000人検査して999人は本当に陰性なのですから、間違えたのは1人だけ。数字だけ見れば、どんな高度な医療AIより優秀に見えます。そして当然、この機械は1人の患者も見つけません。
不正なクレジットカード取引、工場の設備故障、サーバーへの侵入、退会しそうな顧客、まれな疾患。実務で本当に見つけたいものは、たいてい全体のごく一部です。探しているものが少ないほど、「よく当たっている」という感覚は当てにならなくなる。この記事は、その状況で何を測り、何をいじり、最後に何を決めるのかを順番に組み立てていきます。
まず4つのマスに分けて数える
指標の話をする前に、数え方を決めます。予測が陽性か陰性か、正解が陽性か陰性か。その組み合わせは4通りしかありません。
| 実際は陽性 | 実際は陰性 | |
|---|---|---|
| 陽性と予測 | TP(正しく捕まえた) | FP(誤検知・空振り) |
| 陰性と予測 | FN(見逃し) | TN(正しく見送った) |
この表を混同行列と呼びます。あらゆる評価指標は、この4つの数の組み合わせでできています。よく使う2つはこれです。
つまり、適合率(Precision)は「陽性だと騒いだもののうち、当たっていた割合」、再現率(Recall)は「本物のうち、拾えた割合」です。分子はどちらも同じ「正しく捕まえた数」で、違うのは分母だけ。適合率の分母は自分が鳴らした警報の総数、再現率の分母は世の中に存在する本物の総数です。
この違いは実務上そのまま意味を持ちます。警報を減らせば適合率は上げられます — 自分の側でコントロールできるからです。一方、再現率の分母は自分では変えられません。閾値をどれだけ動かしても、世界にある本物の件数は動かないのです。
そして冒頭の「全員シロ機械」を混同行列に当てはめると、何が起きていたかが一目でわかります。TP = 0、FP = 0、FN = 1、TN = 999。正解率 は TN が支配していて、TN は「見つけなくてよかったものを見つけなかった」というだけの数です。正解率は、答えの大半を占めるクラスの成績表になってしまう。
1%は「実質的にデータが少ない」ということ
もう一つ、見落としやすい事実があります。10万件のデータがあり陽性率が1%なら、陽性は1000件です。つまりあなたが本当に学習させたい現象について、手元にあるのは10万件ではなく1000件です。
この1000件を、モデルは簡単に覚えてしまいます。少数クラスの例だけを丸暗記して、訓練データ上では完璧な成績を出すのに、新しい陽性はまったく捕まえられない。データが少ない状況で複雑なモデルを使ったときの、典型的な壊れ方です。
指標のブレも同じ理由で大きくなります。テストセットの陽性が100件しかなければ、再現率は1件の当たり外れで1ポイント動きます。小数点以下の差で「モデルAが勝った」と言い切るのは、この時点でもう危ういわけです。
ROCとPRの、決定的な違い
ここから、不均衡データで最もよく起きる誤解に入ります。ROC曲線のAUCが0.98でも、実運用の適合率が3%ということは普通に起こります。
ROC曲線は、縦軸に再現率、横軸に偽陽性率をとります。
言い換えると、偽陽性率の分母は「実際に陰性だったものの総数」です。陰性が9万9000件ある世界では、誤検知を1000件出しても FPR は 0.01 しか動きません。グラフの上ではほとんど左端に張り付いたままです。ところがその1000件の誤検知は、適合率の分母に直撃します。陽性を100件捕まえて誤検知が1000件なら、適合率は約9%。現場では「10回に9回は空振りの警報」です。
- ROC曲線のベースライン(でたらめに予測したときのAUC)は、陽性率がいくつでも 0.5
- PR曲線のベースラインは、陽性率 そのもの。陽性率1%なら 0.01
つまりROCは不均衡を「見なかったこと」にする性質があり、PR曲線は不均衡の厳しさをそのまま映します。探しているものが少ないときは、PR曲線を主指標にする。 PR曲線の下の面積は Average Precision(平均適合率、AP)として計算するのが標準で、これは「閾値を動かしながら、再現率が伸びた分だけその時点の適合率を足し込んだ値」です。
コメント
コメントにはログインが必要です