多腕バンディットモデルについて調べた際の文献です。
バンディットアルゴリズム入門と実践
http://www.slideshare.net/greenmidori83/ss-28443892
目的
・限られた施行回数の中で、最も良い選択をすること。
背景
・大体のことはやってみないとわからない。
・何度繰り返しても100%正しく知ることはできない。
解説
・探索(Explore)→不確実だが行ったことのない店に行ってみる。
・活用(Exploit)→実績ある行きつけの店に行く。
・探索と活用のトレードオフ
・選択肢(アーム)
・引く
アームを選択して結果を得ること
・探索
アームに関する情報を増やすためいアームを引くこと
・活用
今持っている情報から最も良いアームと判断できるアームを引くこと
・epsilon-greedy
探索と活用を確率的に行う
・epsilon-first
ある一定期間完全に探索を行い、その後の期間は活用のみを行う
・softmax
当たる確率の高いアームを高い確率、当たる確率の低いアームを低い確率で引くことで、探索と活用を行う
・Upper Confidence Bounds(UCB)
アームについてどれだけ知っているかの情報を考慮に入れてアームを選択、知らないアームについて積極的に探索
・Bayes
ベイズ確率を計算して、良いアームの確率が最も高いアームを引く
・ユーザーのクラスタに応じて、バンディットアルゴリズムで施策を打てば、one to oneマーケティングに近づけるかも
バンディットアルゴリズムによる最適化手法
https://www.oreilly.co.jp/books/9784873116273/
johnmyleswhite/BanditsBook
https://github.com/johnmyleswhite/BanditsBook
バンディットアルゴリズムによる最適化手法 4章
http://hagino3000.blogspot.jp/2014/05/banditalgo4.html
A/Bテストよりすごい?バンディットアルゴリズムとは一体何者か
http://qiita.com/yuku_t/items/6844aac6008911401b19
Bayesian Bandits – optimizing click throughs with statistics
https://www.chrisstucchio.com/blog/2013/bayesian_bandit.html
Beta-distribution Bandit
https://gist.github.com/stucchio/5383015#file-beta_bandit_test-py
雑談
先日、強化学習に明るい方の話を伺ったのですが、A/Bテストはどちらが良いかノウハウが溜まる観点からすると、良い試みなので、多腕バンディットと単純比較するのはあまりしないとおっしゃられていました。それでもやはり、最終的に良い方に表示がされるようになるはずなので、無駄の多いA/Bテストよりも、強化学習を使ってサイトとしての収益を重視した方がいいのだろうという話で落ち着きました。
アイテム数が多い場合は強化学習も大変だと思いますが、2つのクリエイティブの出し分けとかならカジュアルに実装できそうですね。