ベイズ的に考える — 事前・尤度・事後の実務感覚
ベイズ更新は「事後を次の事前として継ぎ足す」操作です。共役事前を使えば更新は疑似カウントの足し算に退化し、A/Bテストは『勝つ確率』と『期待損失』の2枚看板で読めるようになります。停止規則と事前の選び方の落とし穴まで、前提知識ゼロから。
ボタンの色を変えたら、本当に良くなったのか
購入ボタンを青から緑にしてみました。1週間流したところ、旧デザインは1,000回表示されて40クリック、新デザインは1,000回表示されて50クリック。率にすると4.0%と5.0%です。「25%改善しました」と報告してよいものでしょうか。
コインを10回投げて表が6回出ても、ふつう「このコインは表が出やすい」とは言いません。同じことで、1,000回程度の表示なら40と50くらいの差は偶然でも起こります。ここで多くの現場はp値を計算し、0.05を下回ったかどうかで白黒をつけます。
けれど意思決定の場で本当に知りたいのは、「差が無いとは言い切れない」かどうかではありません。新しいボタンが本当に良い確率はどれくらいか、そして間違えて切り替えたとき、どれだけ損をするかの2つです。ベイズの考え方はこの2つにそのまま答えます。定理そのものの導入はベイズの定理をAIで使うにあるので、本記事は更新を繰り返すときの手触りとA/Bテストの回し方に絞ります。
直感: 信念は「候補ごとの持ち点」
新しいボタンの本当のクリック率を と呼びます。分からないのだから1つの値に決め打ちせず、「1%かもしれない、2%かもしれない、…10%かもしれない」と候補を刻み、それぞれに持ち点を配ります。この配り方が事前分布です。
データが来るたびに、各候補の持ち点に数を掛けます。掛ける数は「この候補が正しいとしたら、いま見たデータはどれくらい自然か」で、これが尤度です。クリックが観測されたなら、10%の候補は1%の候補より大きい数を受け取る。最後に全体の合計が1になるよう割り戻すと、事後分布ができあがります。
ここで、後々効いてくる性質が2つあります。1つ目は、更新が掛け算だということ。合わない候補が削られていく彫刻のような操作なので、事前で0にした候補は、どんなデータが来ても0のままです。「ありえない」と決めた瞬間、その可能性は永久に復活しません。事前分布に0を置くのは、思っているより強い宣言です。
2つ目は、更新が継ぎ足せること。1日目のデータで作った事後分布をそのまま2日目の事前分布として使ってよく、結果は7日分をまとめて入れたときと一致します。順番にも依りません。毎日データが積み上がる現場と相性が良いわけです。
仕組み: 更新は掛け算、証拠は足し算
言葉で書いたことは、1行の比例式に収まります。
は知りたい未知の量(ここではクリック率)、 は観測したデータ、縦棒 は「〜という条件のもとで」、 は「比例する」です。定数倍を気にしないのは、最後に合計を1にそろえる操作でどうせ吸収されるから。読み下せば「事後は、尤度と事前の掛け算に比例する」だけです。
つまりこの式は、「データを見る前の見立てに、そのデータの説明のうまさを掛け直せば、見た後の見立てになる」と言っているだけです。持ち点を配って掛け算する、という先ほどの手順をそのまま記号にしたものだと思ってください。
候補が2つのときは、もっと見やすい形になります。両辺の比を取って対数を取ると、掛け算が足し算に変わります。
左辺は「データを見た後、候補1は候補2より何倍もっともらしいか」の対数。右辺の第1項は「そのデータを候補1のほうがどれだけうまく説明できるか」=証拠の重みで、第2項は見る前の見立てです。つまり証拠とは、事前の見立てに足していく点数なのです。要するに、更新後の傾き=データの言い分+最初の言い分、という足し算になっているということ。
この形にすると、よくある疑問が一目で解けます。データが増えるほど第1項は積み上がるのに、第2項はずっと同じ値のまま。だからデータが十分にあれば事前の選び方は結論を変えず、乏しいうちだけ事前が効く。「事前は恣意的だ」という批判は、データが少ない領域でだけ正しいわけです。
コメント
コメントにはログインが必要です