データサイエンスのいろは · ⏱️ 読了目安 5分

「検知精度99%」を見て、僕はまず"元々何人"を数えることにした

コンビニでアイスコーヒーを1杯買おうとしたら、レジでカードが弾かれた。後ろに並んでる人の視線を感じながら、財布の小銭をかき集めて払った。帰り道でスマホを見たら通知が来ていた。「不正利用の可能性を検知しました」。

……アイスコーヒー1杯で?

アプリを開くと「独自AIが不正利用を検知精度99%で見抜きます」と書いてあった。すごい数字に見える。けど、その「99%」の中で自分がどっち側にいたのか——本物の不正の1人なのか、間違えられた側の1人なのか——この数字だけじゃ分からない。

何かが珍しいことなら、どれだけ精度の良い検知器でも、アラームの中身は間違いだらけになる。 これが「ベースレート」、要するに”普段どれくらいの頻度で起きるか”を先に置いておく話だ。

たとえるなら、宝くじ売り場の店員が「高額当選者を99%の精度で言い当てられます」と豪語していても、そもそも高額当選者が1万人に1人しかいないなら、店員が指さした客のほとんどは、ただの外れくじを握った人だ。

アラームの中身を数えてみる

言葉で分かった気になるより、数えたほうが早い。以下の数字は、話を分かりやすくするために僕が仮に置いた数字で、実際のカード会社の数字ではない。

仮に、ある日のカード決済が100万件あったとする。

  • 本物の不正利用:100件(1万件に1件=0.01%)
  • 普通の買い物:999,900件

検知システムが「不正の99%を捕まえる」性能だとすると、100件のうち99件を捕まえる(1件は見逃す)。同時に、普通の買い物を「不正っぽい」と間違って弾いてしまう確率が1%だけあるとする(それでもかなり優秀な部類のはずだ)。999,900件のうち1%、9,999件が誤って弾かれる。

アラームが鳴った件数は 99+9,999=10,098件。

アラームが鳴った点のほとんどは、赤く塗りつぶされていない——ただ囲まれただけだ。
アラームが鳴った点のほとんどは、赤く塗りつぶされていない——ただ囲まれただけだ。

アラームが鳴った10,098件のうち、本物の不正は99件。100件に1件もない。

「精度99%」は”見つける力”の数字であって、“珍しさ”の数字じゃない

「精度99%」が言ってるのは「不正を見つける力が99%」という意味で、「不正がどれくらい珍しいか」は言っていない。この2つは別の数字なのに、片方だけ聞くともう片方まで込みで安心してしまう。

数字何を教えてくれるか
検知率(99%)本物の不正を、どれだけ取りこぼさず捕まえられるか
ベースレート(0.01%)そもそも不正が全体の中でどれだけ珍しいか
適中率(約1%)アラームが鳴った中で、実際に本物だった割合

検知率だけ見ると安心するが、ベースレートが極端に低いと、適中率は検知率よりずっと低くなる。珍しいものを探すゲームでは、これが基本のクセだ。目立つ一件(アラームが鳴った、その1回)だけを見ず、先に母数の景色(普段どれくらいの頻度で起きることか)を置く——それだけで、数字の受け取り方が変わる。

じゃあ「精度99%」って書いてある検知システム、全部あてにならないってこと?

……あてにならないわけじゃない。1件見逃しただけで、99件は本当に捕まえてる。ただ「アラームが鳴った=ほぼ不正」だと早合点しないほうがいい、それだけだ。

今度また似たアラートを見たら、“精度”の後ろに隠れてる分母を思い出すことにする。10,098件中99件。悪くない的中率に見えて、実際は99%が外れくじだった。

アイスコーヒー1杯で弾かれたのは、僕が犯人だったからじゃない。たぶん10,098人のうち、9,999人側に僕が入っただけだ。

やあ、ここまで読んでくれてありがとう。

身近な疑問に引っかかったら、数えて確かめないと気が済まない。引っかかってから「なるほど」に辿り着くまでの過程を置く場所「猫だくさん」。