ベイジアンA/Bテスト

英語名 Bayesian A/B Testing
読み方 ベイジアン エービー テスト
難易度
所要時間 1〜2時間
目次

ひとことで言うと
#

頻度論の「p値で有意かどうか」ではなく、ベイズ統計を使って「Bが勝っている確率は何%か」を直接計算し、柔軟に意思決定するA/Bテスト手法。途中経過を見ながら判断でき、ビジネス側にも結果が伝わりやすい。

押さえておきたい用語
#

押さえておきたい用語
事前分布(Prior Distribution)
テスト開始前に持っている事前の信念や知識を確率分布で表したもの。過去データやドメイン知識から設定する。
事後分布(Posterior Distribution)
テストデータを観測した後に更新された確率分布。事前分布+観測データから計算される判断の根拠になる分布を指す。
勝利確率(Probability of Being Best)
「BパターンがAパターンより優れている確率」のように、各パターンが最良である確率を直接示す値を指す。
信用区間(Credible Interval)
事後分布から計算される、真の値が含まれる確率的な範囲。頻度論の信頼区間とは解釈が異なり「95%の確率でこの範囲に入る」と直感的に読める。

ベイジアンA/Bテストの全体像
#

ベイジアンA/Bテスト:事前分布をデータで更新し勝利確率で判断する
事前分布過去データやドメイン知識を反映+テストデータA/Bテストの実測データを収集事後分布更新された確率で勝敗を判断A勝利: 12%B勝利: 88%CVRリフト: +1.2pt(95%信用区間: +0.3 〜 +2.1pt)意思決定勝利確率が閾値(例: 90%)を超えたら勝者を採用。途中での判断も可
ベイジアンA/Bテストの進め方フロー
1
事前分布設定
過去データから事前の信念を確率分布にする
2
テスト実行
A/Bパターンにトラフィックを割り振る
3
事後分布更新
データが溜まるたびに分布を更新する
勝利確率で判定
閾値を超えたら勝者を採用しリリース

こんな悩みに効く
#

  • 従来のA/Bテストで「p値が0.05を切らないから判断できない」と停滞する
  • テスト結果を非エンジニアに説明しても「で、どっちがいいの?」と伝わらない
  • サンプルサイズが小さい状況でも早く意思決定したい

基本の使い方
#

事前分布を設定する

テスト対象の指標について、過去データやドメイン知識をもとに事前分布を設定する。

  • 情報が少ない場合: 無情報事前分布(Beta(1,1)など)を使う。データに判断をすべて任せる
  • 過去データがある場合: 過去のCVRが3%前後なら、その付近にピークを持つBeta分布を設定
  • 事前分布が間違っていてもデータが十分あれば事後分布は収束するので、過度に悩まなくてよい
テストを実行しながら事後分布を更新する

データが溜まるたびに事前分布を更新し、A/B各パターンの事後分布を算出する。

  • Beta-Binomialモデル: CVRなど二値の指標に最適。事後分布がBeta分布になり計算が速い
  • 途中で確認OK: ベイジアンアプローチでは途中経過を見ても多重比較の問題が頻度論ほど深刻にならない
  • ただし「毎日見て、よさそうなら止める」だけでは偶然の揺れに引っかかる。勝利確率の閾値は事前に決めておく
勝利確率で意思決定する

「BがAに勝っている確率」が事前に決めた閾値を超えたら勝者を採用する。

  • 閾値の例: 「勝利確率90%以上 かつ 期待リフトが最小実用差を超える」
  • 損失関数: 誤った選択をしたときの期待損失を計算し、ビジネスインパクトも加味して判断する
  • 頻度論より早く結論が出ることが多いが、サンプルが少なすぎると信用区間が広くなるので注意

具体例
#

例1:旅行予約サイトが検索結果のUIを比較する

月間訪問者200万人の旅行予約サイト。検索結果ページのリスト表示(A)とカード表示(B)でCVR(予約完了率)を比較した。

事前分布は過去6ヶ月のCVR 2.8% をもとにBeta(28, 972)を設定。2週間でA群5万人、B群5万人のデータを収集。

パターンCVR事後分布勝利確率
A(リスト)2.7%Beta(1,378, 49,622)8%
B(カード)3.1%Beta(1,578, 49,422)92%

Bの勝利確率 92% で閾値90%をクリア。CVRリフトの95%信用区間は +0.2pt 〜 +0.6pt で、全区間がプラス。カード表示を全ユーザーに適用し、月間予約数は約4,000件増加した。

例2:SaaS企業が料金ページの価格表記テストを短期で判断する

従業員35名のプロジェクト管理SaaS。料金ページで「月額表記」(A)と「年額を12で割った月額換算表記」(B)を比較。トラフィックが少なく月間ページ訪問が8,000件のため、頻度論では有意差が出るまで2ヶ月以上かかる試算だった。

ベイジアンアプローチを採用し、無情報事前分布Beta(1,1)で開始。3週間後の中間チェック時点でB群の勝利確率が 95% に到達。

A群のCVR(無料トライアル開始率)は 4.2%、B群は 5.8%。期待損失を計算すると、Bを選ばなかった場合の月間逸失トライアル数は 約130件。3週間で判断でき、残りの期間を次のテストに充てられた。頻度論で2ヶ月待っていた場合と比べ、年間で 約3テスト分 多く実験を回せた計算になる。

例3:コンビニチェーンが新商品の陳列位置をテストする

全国1,200店舗のコンビニチェーン。新商品のスイーツをレジ横(A)と冷蔵棚の目線高さ(B)のどちらに置くべきかを50店舗ずつで2週間テスト。

1店舗あたりの1日販売個数の事前分布は、類似商品の実績からNormal(15, 5)を設定。

テスト結果、A群の平均販売個数は 18.2個/日、B群は 14.7個/日。Aの勝利確率は 97% で、リフトの95%信用区間は +1.8 〜 +5.2個/日

1,200店舗に展開した場合、レジ横陳列で月間 約12.6万個 の上積みが期待できる。単価280円で月間約3,500万円の売上差。50店舗での2週間テストから全店舗の意思決定ができた。

やりがちな失敗パターン
#

  1. 事前分布に強い信念を入れすぎる — 「過去のCVRは絶対3%前後」と狭い事前分布を設定すると、データと矛盾したとき事後分布の収束が遅くなる。確信がないなら弱い事前分布を使う
  2. 勝利確率の閾値を決めずにテストを始める — 「80%でもう十分では」「いや95%まで待つべき」と後から議論になる。テスト開始前に関係者と合意する
  3. 途中で判断できることを「早期打ち切りOK」と混同する — ベイジアンでも少ないサンプルでは信用区間が広い。勝利確率が高くても期待リフトの区間に実用上の最小差が含まれているか確認する
  4. 頻度論の結果と混ぜて報告する — 「p値は0.08で有意じゃないけどベイジアンだと勝利確率92%」と並べると混乱する。どちらのフレームワークで判断するか統一する

まとめ
#

ベイジアンA/Bテストは「Bが勝つ確率は何%か」をそのまま計算できるので、ビジネス判断に直結しやすい。頻度論よりも柔軟にテスト期間を調整でき、サンプルが少ない状況でも意思決定を前に進められる。ただし「ベイジアンだから何でも早く判断できる」わけではなく、事前分布の設定と勝利確率の閾値設計がテストの質を左右する。