機械学習理論研究室
← AI体験の一覧
検査を受けたら、陽性でした。その検査は 99% の精度だといいます。では、病気である確率は 99% でしょうか。1万人の町を1人ずつ点で描いて数えてみると、答えはまったくちがうところにあります。
検査で陽性と言われました。自分は病気なのでしょうか。これを自分ひとりで考えても答えは出ません。同じ検査を町の全員が受けたらどうなるかを、1人ずつ数えてみます。
人口1万人の町を考えます。この病気にかかっている人は 1000人に1人(0.1%)、町全体で 10人です。全員が 精度99% の検査を受けました。精度99%とは、病気の人の99%が陽性になり、健康な人の99%が陰性になる、という意味です。
理由は、もとの人数を見れば分かります。病気の人はたった10人しかいないのに、健康な人は9990人もいます。健康な人の1%がまちがって陽性になるだけで、9990 × 0.01 = 約100人。この100人が、本物の10人を数で押し流してしまうのです。
| 検査は陽性 | 検査は陰性 | 合計 | |
|---|---|---|---|
| 病気の人 | 10 | 0 | 10 |
| 健康な人 | 100 | 9890 | 9990 |
| 合計 | 110 | 9890 | 10000 |
「陽性のうち何割が本当に病気か」を知りたいのですから、見るべきは「検査は陽性」の列だけです。その列は 10人 と 100人 に分かれていて、上の10人が本物、下の100人がまちがいです。10 ÷ 110 = 9.1% がその答えになります。
横軸は病気の人の割合(左ほど珍しい)、縦軸は「陽性の人のうち本当に病気だった割合」です。横軸は珍しさの幅が広いので、10倍きざみの目盛りにしてあります。
同じ検査なのに、病気が珍しいほど左下へ落ちていきます。検査そのものは何も変わっていないのに、陽性の意味だけが変わるのがこの曲線の要点です。だから病院では、症状や年齢から「怪しい人」をしぼりこんでから検査をします。しぼりこむとは、この曲線の上で右へ移動するということです。
1回目に陽性だった人を集めると、その集団の中で病気の人の割合は、もはや町全体の有病率ではありません。9.1% です。この集団にもう一度同じ検査をかけると、こんどはこの割合が「もとの珍しさ」として効いてきます。
ただしこれは、2回の検査のまちがい方がたがいに無関係(独立)である場合の話です。同じ理由でいつも誤判定される体質の人もいます。その場合、2回目も同じように陽性になるだけなので、ここまで信用は上がりません。
ここまで、わたしたちは人数を数えていただけです。その数え方をそのまま記号にしたものが、ベイズの定理とよばれる式です。
P(病気 | 陽性) = P(陽性 | 病気) × P(病気) ÷ P(陽性)
P(病気 | 陽性) は「陽性だったと分かっている人の中で、病気である割合」という意味です。たてぼう | の右側が「もう分かっていること」、左側が「知りたいこと」です。順番を入れかえた P(陽性 | 病気)(病気の人が陽性になる割合=感度)とは、まったく別の数になります。この2つを取りちがえることが、直感が外れる正体です。
割り算の意味だけを見ると、こう読めます。
陽性の人のうち病気の割合 = 病気で陽性の人数 ÷ 陽性の人全体の人数
式の分子は「病気で陽性」の1マスだけ、分母は「陽性」の列ぜんぶ、つまり「病気で陽性」+「健康で陽性」です。分母に何を取るかを「1万人全体」や「病気の人だけ」とまちがえると、答えは大きくずれます。
| 式の中の記号 | 言いかえると | 1万人なら | 値 |
|---|---|---|---|
| P(病気) | もとの珍しさ | 10 人 | 0.0010 |
| P(陽性 | 病気) | 感度 | 10 / 10 人 | 0.9900 |
| 分子:P(陽性|病気)×P(病気) | 病気で陽性の人 | 10 人 | 0.0010 |
| 分母:P(陽性) | 陽性の人ぜんぶ | 110 人 | 0.0110 |
| P(病気 | 陽性) | 陽性的中率 | 10 / 110 人 | 0.0909 |
| 検査は陽性 | 検査は陰性 | 合計 | |
|---|---|---|---|
| 病気の人 | 10 | 0 | 10 |
| 健康な人 | 100 | 9890 | 9990 |
| 合計 | 110 | 9890 | 10000 |
迷惑メールの判定も同じ形です。届くメール1万通のうち迷惑メールが100通しかない受信箱で、「99%の精度」のフィルタを使うと、迷惑と判定された通数のうちかなりの割合が、ふつうのメールになります。大事なメールが迷惑フォルダに落ちる事故が起きるのは、フィルタの出来が悪いからだけではなく、もともと迷惑メールが少ないからでもあります。
AI が出す「〇〇の疑いあり」という警告も同じです。不正利用の検知、故障の予兆、防犯カメラの人物照合。いずれも「めったに起きないこと」を当てにいく仕組みです。
めったに起きないことを当てる警報は、性能をいくら上げても、鳴った警報の大半が誤報になる。
これは AI の欠陥ではなく、割合の計算からくる避けられない性質です。だから現実の仕組みでは、警報を最終判断にせず次の検査へ進む合図として使います。STEP 2 で見た「2回目の検査」が、まさにその考え方です。
1. 上の電卓で、特異度だけを 99% から 99.9% に上げてみてください。感度をどれだけ上げるよりも、陽性的中率が大きく変わるはずです。なぜでしょうか。
2. 有病率を 0.1% のまま、感度を 100% にしてみてください。それでも陽性的中率は 10% 前後にしかなりません。「見逃しゼロ」の検査でも、陽性の意味が強くならないのはなぜでしょうか。
3. 健康診断で全員に検査をするのと、症状のある人だけに検査をするのとでは、同じ陽性でも意味がちがいます。STEP 2 の曲線のどこが動くからでしょうか。
ズレの測り方とこのアプリは、どちらも「同じデータなのに、見方を決めると答えが変わる」という話です。ちがうのは変える場所で、あちらは損の測り方を変え、こちらは分母の取り方を変えました。
分けると逆転は、その分母をもう一歩進めます。こちらは分母を「検査で陽性だった人」に取りかえて答えがずれましたが、あちらは分母をグループごとに割ると、勝ち負けそのものが入れかわります。