Golangでバンディットアルゴリズムを実装した。

以下の書籍を参考にGolangでバンディットアルゴリズムを実装してみた。
書籍に載っているEpsilon-Greedy、Softmax、UCB1を実装してから、Epsilon-GreedyとSoftmaxはAnnealingを追加してみた。
書籍ではPythonでtsvファイルを生成してからRで可視化しているけれど、今回はGolangでグラフを描画した。
書籍と同じようなグラフができたので、たぶん同じように実装できているはず。
Annealingを追加したグラフは書籍には載っていないけれど、EpsilonとかTemperatureにあまり影響されない結果になった。

Bandit Algorithms for Website Optimization

Bandit Algorithms for Website Optimization

f:id:yukihir0:20150127191131p:plain

f:id:yukihir0:20150127191145p:plain

f:id:yukihir0:20150127191155p:plain

f:id:yukihir0:20150127191206p:plain

f:id:yukihir0:20150127191219p:plain

アルゴリズムを呼び出してシミュレートするコードはこんな感じ。