限りなく院生に近いニート@エストニア

エストニアという国で一人ダラダラしてます。

簡単に Bandit Algorithm Basic

What is Bandit Algorithm....

スロットマシンをする時、気になるのは、「どのマシンが一番当たりを出しやすいか」である。

今、目の前にスロットマジンが5台あるとして、50回遊べるだけのお金を持っているとしよう。

今現在の状況として、

目的:当たる確率を最大にしたい
マシン:5種類それぞれ違う当たる確率
遊べる回数:50回

この場合、どのマシンをどのように遊べばもっとも良い結果になるのだろうか。

考えられる戦略として、
1、それぞれ均等に遊ぶ(10回ずつ)
2、一つの台で遊び続ける
3、あたりの多かった台を集中的に選ぶ

Bandit Algorithmの目的は、

限られた試行回数の中で、もっとも良い選択をする

ということだ。

例えば、旅行の時の宿選び、合コンでの恋人選び、ランチのメニュー選びなど、

世の中には腐る程選択肢が溢れている。

ビジネスについてならば、

広告のクリエイティブはどうれが良い、メールのポイント、

たくさん思い浮かばれる。

しかし、これらを100%予測して行動することは不可能に近く、

思考を繰り返しながら経験値をして蓄え、次のチョイスをするのがベストになってくる。

条件も限られており、予算がいくらだ、期限はいつまでだと、

選択をより困難にしてくる。

そこで、ダメな選択肢をできる限り選ばないで、ベストな結果を出したい

という時に有効なのがBandit Algorithmである。

このアルゴリズムは2フェーズに別れており、

現在知っている情報以外の情報を得るためのExplore(例:行ってないレストランに行ってみる)と、

持ってる情報の中で利益を最大化することのExploit(例:行きつけのレストランでいつものメニューを頼む)

である。

この二つのトレードオフとして、

良い選択肢がわかっているのに、Exploreばかりしていると、効率の無駄使いになるし、

良い選択肢がまだわからないのに、Exploitばかりしていても効率的でない。

そこのバランスが重要になってくる。

このトレードオフを解決するのに使われるのが、

Algorithm Basicであり、

ExploreとExploitを効率的に行い、一定期間で最大の利益を出すメソッドである。

Python code is here.

tishow.hateblo.jp