機械学習理論研究室
← AI体験の一覧
800人が2種類の薬をのみました。表を見ると薬Aのほうがよく治っています。ところが軽症の人と重症の人に分けて数え直すと、どちらでも薬Bが勝ちます。同じ数字なのに勝敗がひっくり返るのです。
病院で、ある病気の患者800人に2種類の薬が使われました。薬Aが400人、薬Bが400人です。しばらくして、何人が治ったかを数えました。
| 全体 | 治った | 使った人 | 治った割合 |
|---|---|---|---|
| 薬A | 320 | 400 | 80.0% 勝ち |
| 薬B | 260 | 400 | 65.0% |
ここまでなら話は簡単です。薬Aを選べばよさそうに見えます。
800人のカルテには、薬をのむ前の症状が軽かったか重かったかも書いてありました。そこで800人を軽症と重症に分けて、もう一度同じように数えます。人を入れかえたわけではありません。合計すると、さっきの表とぴったり同じ数になります。
| 軽症の人 | 治った | 使った人 | 治った割合 |
|---|---|---|---|
| 薬A | 270 | 300 | 90.0% |
| 薬B | 95 | 100 | 95.0% 勝ち |
| 重症の人 | 治った | 使った人 | 治った割合 |
|---|---|---|---|
| 薬A | 50 | 100 | 50.0% |
| 薬B | 165 | 300 | 55.0% 勝ち |
なぜ逆転するのかは、よこ幅を見れば分かります。薬Aは400人のうち300人が軽症でした。軽症の人はもともと治りやすいので、薬Aの全体の割合はその軽症の人たちに引っぱり上げられます。いっぽう薬Bは400人のうち300人が重症です。重症の人は治りにくいので、薬Bの全体の割合はそちらに引きずり下ろされます。
つまり薬Bは、最初から不利な相手ばかりと戦っていました。2つの薬で、軽症と重症の人数の配り方がちがうこと。これが逆転の正体です。
| 薬A | 薬B | |
|---|---|---|
| 軽症の人 | — | — |
| 重症の人 | — | — |
| 全体 | — | — |
スライダーを動かしていると、逆転が起きたり消えたりします。起きる条件は、2つの数の大小だけで決まります。
| くらべる2つの数 | いまの値 |
|---|---|
| ① 配り方のちがい × 軽症と重症の治りやすさのちがい | — |
| ② 薬Bが薬Aより治しやすいポイント | — |
—
①が②より大きいと逆転します。人数の配り方がそろっている(薬Aも薬Bも軽症の割合が同じ)と①はゼロになり、逆転は決して起きません。軽症と重症で治りやすさが同じときも①はゼロで、やはり起きません。逆転は、この2つのずれが重なったときだけ生まれます。
全体の表は薬Aが勝ち、グループ別の表は薬Bが勝ちでした。ではどちらを信じればいいのでしょうか。
この問いには、数字を見ているだけでは答えが出ません。計算をやり直しても、もっと正確に数えても出ません。必要なのは、この800人にいったい何が起きたのかという筋書きです。同じ数字でも、筋書きがちがえば答えが変わります。実際に2つ並べてみます。
薬Bは新しく出た強い薬でした。医師は症状の重い人を見ると「これは強い薬でないと」と考え、重症の人に薬Bを出しました。軽症の人には、いつもどおり薬Aで十分だと判断しました。
その結果、症状の重さが2つのことに同時に効いています。ひとつは「どちらの薬を出されるか」。もうひとつは「治るかどうか」。薬Bの成績が悪く見えたのは、薬Bが弱いからではなく、重い人ばかり任されていたからです。
このように、原因のほうにも結果のほうにも同時に効いている、表に出てこない要因のことを交絡といいます。交絡があると、全体の表は薬と関係のない差を薬の差として見せてしまいます。
だから症状の重さをそろえて、軽症は軽症どうし、重症は重症どうしで比べます。この比べ方を層別といいます。層別した結果、どちらの層でも薬Bが勝っていました。薬Bを選ぶべきです。
症状の重さから、赤い矢印が2本出ています。どちらの薬を出されるかにも、治るかどうかにも効いている。だからこれをそろえてから比べます。
表の数字はさっきとまったく同じです。ちがうのは、軽症・重症という分け方を薬をのんだ1週間後に測っていたという点だけです。つまりこの「重さ」は、薬をのむ前の状態ではなく、薬がはたらいた結果です。
薬Aには、1週間後の症状を軽くするはたらきがありました。だから薬Aを使った人は軽症のグループに多く入りました。ここで軽症・重症に分けて比べるのは、薬Aがあげた成果を先に取り上げてから、薬Aの実力を測るようなものです。
徒競走にたとえると、こうなります。速い人ほど先にゴールしますが、「同じ地点を通過した人どうしで比べよう」と言えば、速さの差は消えてしまいます。分けたせいで、見たかったものが見えなくなるのです。
この筋書きでは、分けてはいけません。全体の表のまま、薬Aを選ぶべきです。
「1週間後の重さ」は、薬から出た赤い矢印の先にあります。ここでグループを分けると、点線で示した薬の効き目まで一緒に切り落としてしまいます。
| 分ける基準をいつ測ったか | 分けるべきか | 選ぶ薬 | |
|---|---|---|---|
| 筋書き1 | 薬をのむ前の症状 | 分ける(層別する) | 薬B |
| 筋書き2 | 薬をのんだあとの症状 | 分けない | 薬A |
表の数字は1文字も変わっていません。変わったのは「何が何に影響しているか」という想定だけです。データだけでは、どちらの表を信じるべきかは決まりません。決めているのは、そのデータがどうやって生まれたかについての、人間の側の知識です。
ここで見た勝敗の逆転は、19世紀から知られていて、シンプソンのパラドックスと呼ばれています。
AIは大量のデータから、うまくいった例とそうでない例の割合を数えて学びます。やっていることは、このアプリでやった数え上げとほとんど同じです。そしてAIも、データがどうやって生まれたかは知りません。渡された表の数字しか見ていないからです。
採用の書類選考を例にします。過去の応募データから「採用された人の特徴」を学ばせると、AIは過去に採用されやすかった人の特徴をそのまま覚えます。もし過去にある学部の出身者が多く採られていたなら、AIはその学部を高く評価します。学部と、応募先の職種と、採否が絡み合っていても、AIにはその絡まりがほどけません。
お金を貸すかどうかの判断でも同じことが起きます。返せなかった人の割合を住んでいる地域ごとに数えると差が出ますが、その差は地域そのものではなく、地域と結びついた収入や職業から来ているかもしれません。地域だけを見て判断すれば、その人個人とは関係のない理由で断ることになります。
だから実際の現場では、AIの出した数字をそのまま使わず、グループごとに分けて成績を確かめるという作業をします。STEP 1 でやったことと同じです。全体の成績が良くても、分けてみると特定のグループでだけ成績が落ちている、ということが起こるからです。
このアプリと 陽性の読み方 は、同じことの表と裏です。どちらも「割合は、何を分母に取るかで意味が変わる」という話でした。陽性の読み方では分母を「検査で陽性だった人」に取りかえると答えが10倍ずれました。こちらでは分母を軽症と重症に割ると勝敗がひっくり返りました。
割合という数は、それだけを見ても読めません。分母に誰が入っているかを先に確かめる。これがどちらのアプリにも共通する読み方です。
次の合わせすぎる曲線も、手元の数字に素直に従うと間違った結論にたどり着く、という点では同じです。ちがうのは、つまずく場所です。こちらは数え方でつまずきましたが、あちらは数え方ではなく、モデルを複雑にしすぎたことでつまずきます。
1. STEP 2 で、薬Aと薬Bの軽症の割合を同じ値にそろえてください。スライダーをどう動かしても逆転しなくなります。なぜでしょうか。
2. 大学の合格率でも同じことが起きます。学部ごとに見ると女子の合格率がどの学部でも高いのに、大学全体では男子のほうが高い、という状況を作るには、受験者の人数がどう偏っていればよいでしょうか。
3. 筋書き2のように「分けてはいけない」場合を見分けるには、その分け方の基準をいつ測ったかを確かめます。では、薬をのむ前に測った要因なら、いつでも分けてよいのでしょうか。