1. ベイズ的最適化
機械学習のハイパーパラメータの最適化に、最近ベイズ的最適化が使われている。
pythonでベイズ的最適化が使えるモジュールを検索すると、たくさん出てきてどれを使えばいいかよくわからなかった。
セミナで、獲得関数にUCBを使うよりもmutual informationが使うほうがよいと聞いた。
だからmutual informationが使えるpythonのモジュールを探したところBayesOptが見つかった。
しかしインストールに苦労したのでインストール方法を記す。
2. BayesOptインストール
python2.7で以下を実施する。(python3では動かなかった。)
$ git clone https://github.com/rmcantin/bayesopt
$ cd bayesopt
$ brew install cmake
$ cmake -DBAYESOPT_PYTHON_INTERFACE=ON .
$ ccmake .
and press "t" to select advanced features. Then, look if the PYTHON_* variables point to the same install/version.
"t"を押して、advanceモードに切り替えて以下のパラメータを環境に合わせて調整。
(macでanaconda使用の場合、以下のような感じ)
PYTHON_EXECUTABLE /Users/macuser/.pyenv/versions/miniconda3-3.9.1/envs/py27/bin/python
PYTHON_INCLUDE_DIR /Users/macuser/.pyenv/versions/miniconda3-3.9.1/envs/py27/include/python2.7
PYTHON_LIBRARY /Users/macuser/.pyenv/versions/miniconda3-3.9.1/envs/py27/lib/libpython2.7.dylib
$ make
$ sudo make install
3.動作確認
cloneしたディレクトリのpython配下にテストスクリプトdemo_distance.pyがあるので
params['crit_name'] = "cSum(cEI,cDistance)"
params['crit_params'] = [1, 0.5]
params['kernel_name'] = "kMaternISO3"
を以下に修正して実行。
params['crit_name'] = "cMI"
#params['crit_params'] = [1, 0.5]
params['kernel_name'] = "kMaternISO5"