このブログをご覧のみなさん、こんにちは。

Bundit Algorithms とは何か?

もともとギャンブルに対する最適な戦略を考えることから始まったデータに基づいた意思決定手法です。

Q. 目の前に5つのスロットマシンがある。
それぞれのスロットマシンの当たる確率とその時の報酬は異なる。
さて、手元に100枚のコインがある時、
どのようにコインを配分すれば得られる報酬を最大化できるだろうか?

一般的なスロットマシンには腕と呼ばれる棒がついており、コインを投入してその棒を引くとドラムが回転し始めます。 つまり上の問題は最も効率的なスロットマシンの腕の引き方を考えるということです。

そういった理由から Bundit Algorithms では一つ一つのデザインを腕と呼びます。

実際、Wikipedia でもMulti-armed bandit – Wikipedia, the free encyclopediaという名前で説明されています。

ちなみに 2015/03/19 執筆時点では日本語版の Wikipedia は見つかりません。

上の問題の Bundit Algorithms を Web サイトに当てはめると五つのスロットマシンは五つのデザインに、百枚のコインは百人のユーザになります。 つまり、これは、『どのようにユーザに五つのデザインを表示させれば得られる報酬(=コンバージョン)を最大化できるだろうか?』、ということを意味しています。

詳細が知りたい方は以下の書籍に記載されているので一読してみても良いかもしれません。

どうやって導入するの?

前回導入した Split の A/B テストアルゴリズムに Bundit Algorithms を適用するだけで導入できます。

# config/initializers/split.rb
Split.configure do |config|
  config.algorithm = Split::Algorithms::Whiplash
end

関連情報