Golangでバンディットアルゴリズムを実装した。
以下の書籍を参考にGolangでバンディットアルゴリズムを実装してみた。
書籍に載っているEpsilon-Greedy、Softmax、UCB1を実装してから、Epsilon-GreedyとSoftmaxはAnnealingを追加してみた。
書籍ではPythonでtsvファイルを生成してからRで可視化しているけれど、今回はGolangでグラフを描画した。
書籍と同じようなグラフができたので、たぶん同じように実装できているはず。
Annealingを追加したグラフは書籍には載っていないけれど、EpsilonとかTemperatureにあまり影響されない結果になった。
Bandit Algorithms for Website Optimization
- 作者: John Myles White
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/12/10
- メディア: Kindle版
- この商品を含むブログを見る
アルゴリズムを呼び出してシミュレートするコードはこんな感じ。
GolangでMeCabを使う。
GolangでSVMを実装した。
パーセプトロンに続き、SVMを実装した。
書籍を参考に劣勾配法とFOBOSの2つを試してみた。
ただ、書籍の更新式のとおりに実装するとうまく分離できなかったので、更新式を変えている。
学習数や学習率などのパラメータをいじるとうまく分離できないこともある。
根本的に間違っているのか、パラメータの選び方が悪いのかはわからない。
劣勾配法
FOBOS
日本語入力を支える技術 ?変わり続けるコンピュータと言葉の世界 (WEB+DB PRESS plus)
- 作者: 徳永拓之
- 出版社/メーカー: 技術評論社
- 発売日: 2012/02/08
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 322回
- この商品を含むブログ (34件) を見る