A/Bテストよりちょっといい方法「バンディットアルゴリズム」
Webサイトを改善・最適化する手法としてA/Bテストはもっとも簡単で、ひろく使われています。
一方で、A/Bテストについて調べていると、バンディットアルゴリズムについてもよく目にすることがあります。
今回は、バンディットアルゴリズムとは何なのか、A/Bテストとどう違うのかを見ていきたいと思います。
A/Bテストに関する前回の記事はこちら。
A/Bテストは万能じゃない?
もしあなたがA/Bテストを行ったことがあるなら、1つのテストをどれくらいの期間実施しましたか?
また、そのときのサンプル数(ユーザ数)はどれくらいでしたか?
もしA/Bテストを行って下の結果が得られたら、あなたはどのような判断をくだしますか?
バリエーションA | バリエーションB | |
---|---|---|
サンプル数 | 1,280 | 1,600 |
コンバージョン数 | 64 | 128 |
コンバージョン率 | 5% | 8% |
A/Bテストとはより良いバリエーションを決めるためのものです。
では、この時点でバリエーションBの方が良いと決めますか?
このとき、あなたはあるジレンマを抱えることになります。
- 本当にバリエーションBの方が良いのだろうか?たまたま確率的なゆらぎで差が生まれただけではないか?
- 早く決めないといつまでも悪い方のバリエーションを表示してしまう。すると、トータルのコンバージョン数が減ってしまう。
これは、探索と活用のジレンマと呼ばれています。
ただ闇雲にA/Bテストをすればいいわけではない、その難しさが感じられるかと思います。
バンディットアルゴリズム
この探索と活用のジレンマを解消するために考えられたのが「バンディットアルゴリズム」です。
理論的な背景にもとづいて、探索と活用の間で最適なバランスをとることができるようになります。
A/Bテストとの違いは?
探索と活用のジレンマの観点でいえば、A/Bテストは「探索」全振りです。
つまり、そもそも目的が違うのです。
-
A/Bテストの目的は、良いバリエーションを決めることです。
-
バンディットアルゴリズムの目的は、利益(コンバージョン数)を最大化することです。
あなたのWebサイトではどちらの方が適切か、考えてみてください。
次は、バンディットアルゴリズムの具体例を見ていきます。
\varepsilon -greedyアルゴリズム
もっとも簡単なバンディットアルゴリズムです。
まず、ある小さな確率
そして、表示するバリエーションを以下の手順で割りあてます。
-
の一様乱数をひとつサンプリングする。0 \leq n < 1 -
ならば、バリエーションの中からランダムに選んで割りあてる。(探索)n < \varepsilon - そうでなければ、現時点で最もコンバージョン率の大きいバリエーションを割りあてる。(活用)
つまり、確率的に探索するか活用するかを切り替えているのです。
また、A/Bテストは
\varepsilon -greedyアルゴリズムの欠点
-
探索確率
をどのように設定すればよいかわからない。\varepsilon -
十分探索が済んでよいバリエーションがわかった後でも、一定確率で探索し続けてしまう。
このような欠点があるため、「利益(コンバージョン数)を最大化」という目的をはたすには不適切であり、実際に
トンプソンサンプリング
上記の
トンプソンサンプリングでは以下の手順で表示するバリエーションを割りあてます。
- それぞれのバリエーション
に対して、乱数v_{i} をサンプリングする。n_{v_{i}} \sim \mathrm{Beta} ( c_{v_{i}} + 1, n_{v_{i}} - c_{v_{i}} + 1 ) -
が最大のバリエーションn_{v_{i}} を割りあてる。v_{i}
ここで、
このように、トンプソンサンプリングは乱数をサンプリングするだけで実装できるのですが、パラメータのチューニングも不要で非常に高い性能を発揮することが知られています。
次回の記事では、これらのアルゴリズムを使ってシミュレーションを行い、実際に性能を比較してみたいと思います。
宣伝
ノーコードでバンディットアルゴリズムを使ったWebサイト(特にランディングページ)の最適化ができるツール「SAITEKI LP」を開発しています。
興味があればTwitterに連絡ください!
Discussion