メインコンテンツまでスキップ

ちょっと賢いABテスト

powered by 強化学習

前提

  • ABテスト: 2つのバリエーションを比較して、どちらが良いかを検証する手法
  • カナリアリリースにおける段階的なリリースとは別
  • 今回はECサイトでN種類のデザインを比較する例を考える

普通のABテスト

  1. ユーザーにランダムにA, B...Nのどれかを割り当てる
  2. それぞれのグループに対して異なるデザインを表示
  3. 一定期間後にカートイン率を比較

問題点

  1. 実施期間の決め方(1週間?1ヶ月?)
  2. 期間中に損失が発生する可能性 →悪いデザインを表示してコンバージョンが悪化する

商品詳細画面のデザインを刷新する場合

  • A: 既存のデザイン (カートイン率: 5%)
  • B: 新しいデザイン (カートイン率: ??)

この時のABテストによる起こりうる損失

  1. Bの方が良い場合: ABテスト期間が長引くとBへの移行が遅れる
  2. Aの方が良い場合: Bの割合が多いと損失が増える

解決法

  1. 実施期間の決め方
  • →必要なサンプル数が集まった時点で終了する
  1. 期間中に損失が発生する可能性
  • →より良いデザインを高い比率で表示する

強化学習

探索と活用のジレンマ

  • 探索: 新しいデザインを試す
  • 活用: 現状の最善のデザインを表示する

探索にはリスクが伴うが活用だけでは改善も無い

Multi-Armed Bandit Problem

  • N個のパチンコ台
  • それぞれに当たる確率pnp_nが決まっている
  • 最小の試行で最も当たりやすい台を見つけたい

bg right contain

Multi-Armed Bandit Problem

ABテストだと...

  • N個のデザインA,B,C...A, B, C...
  • それぞれにカートイン率pA,pB...p_A, p_B ...が決まっている
  • 最小の表示回数(最短のテスト期間)で最もカートイン率の高いデザインを見つけたい

Banditアルゴリズム

  • 詳細は難しいのでサクッと説明
  • N個のデザインA,B,C...A, B, C...に対するABテストとする
  • CVR = カートイン率

Banditアルゴリズム

  1. ε-greedy
  2. Softmax
  3. Thompson Sampling
  4. UCB1

※ グラフの見方

  • x軸: 表示回数(新規来訪者数)
  • y軸: ベストデザインを表示した割合

bg contain right

1. ε-greedy

  • εの確率で探索する
    • 完全ランダムにデザインを表示
  • 1-εの確率で活用する
    • 現時点でのベストデザインを表示
  • デザイン毎の暫定CVRでベストデザインを決定する
  • εは0.1から0.3程度が一般的

1. ε-greedy

bg 80%

ε-greedy

  • 強いランダム性
  • ε依存

bg right:67%

2. Softmax

  • デザイン毎の暫定CVRを元に確率でデザインを選択
  • CVRが高いデザインを選択する確率が高い
  • 無駄な探索を減らす

2. Softmax

  • あらゆる数字の集まりを確率に変換する関数

Softmax(xi)=exp(xi)jexp(xj)\text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}

h:300

2. Softmax

  • εは全てのデザインを試す
  • Softmaxでは期待値の高いデザインを優先的にテスト

h:300

Softmax

  • 収束が早い

bg right:70%

3. Thompson Sampling

  • デザイン毎にCVRをベイズ推定し分布を作成、サンプリングしてデザインを選択
  • Softmaxの弱点を克服
  • SEO会社とかが使うガチなやつ

3. Thompson Sampling

  • デザイン毎のCVRを元にイカサマサイコロを作る
  • CVRが高いデザインは良いサイコロを持つ
  • サイコロを振って最も高い目がでたデザインを選択
  • デザイン表示後にCVRとサイコロを更新

h:300

3. Thompson Sampling

  • ベイズ推定についてはまた別の機会に
  • Softmaxでは12\frac{1}{2}50100\frac{50}{100}を等しいCVRとして扱うが後者の方が12\frac{1}{2}から外れる可能性が低い
  • Thompson Samplingでは同CVRでも試行回数が違う場合は異なったサイコロの挙動になる(BETA分布)

Thompson Sampling

  • 収束が遅い
  • 安定性が高い

bg right:65%

4. UCB1

  • 信頼区間を使ってデザインを選択
  • ランダム性が無い
  • Softmaxの弱点を克服

4. UCB1

  • 信頼区間: ある予測値の真の値が収まってそうな範囲
  • デザイン毎のCVRの信頼区間を計算してその上限値が高いデザインを表示する

h:400

UCB1

  • 無駄な探索が多い
  • チューニングが不要

bg right:64%

損失は?

通常のABテストの様にA/B 50%ずつ表示した場合と比べてどれくらい累計コンバージョンを稼げたか

bg right:65%

Banditの良いところ

  • 最速で最適なデザインへ収束
  • 事前にシミュレーションができる
    • 必要なサンプル数(期間)がわかる
    • どの程度の損失が発生するかわかる

Banditの欠点

  • データソースとの連携が必要
  • CVRに差が無い場合収束しない(通常のABテストになる)
  • パラメータの調整が必要

まとめ

  • 従来のABテストの問題点
    1. 実施期間の決め方
    2. 期間中に損失が発生する可能性
  • 強化学習を使ったABテスト
    • 最短のテスト期間
    • 最適なデザインを表示し続ける

次回はロジスティック回帰を使った

コンポーネント単位のCVRへの影響度分析

を紹介します