HPOlib2はブラックボックス関数最適化問題のアルゴリズムをいくつか実装したベンチマークです。Anacondaでの仮想環境にて利用するまで。ドキュメントのインストール方法が失敗してしまったのでメモ。HPOlib2の前身となるHPOlibのドキュメントはこちら。
インストールまで
環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
git リポジトリをクローン
# openmlのインストール用 $ git clone https://github.com/openml/openml-python.git # HPOlibのインストール用 $ git clone https://github.com/automl/HPOlib2.git # ConfigSpaceのインストール用 $ git clone https://github.com/automl/ConfigSpace.git
環境の作成
本日時点では Ubuntu, python3.5 でしか動作チェックsがされていないのでpython3.5を利用します。
$ conda create hpolib_env python=3.5 anaconda $ source activate hpolib_env
関連ライブラリのインストール
$ curl https://raw.githubusercontent.com/automl/HPOlib2/master/requirements.txt | xargs -n 1 -L 1 conda install $ curl https://raw.githubusercontent.com/automl/HPOlib2/master/optional-requirements.txt | xargs -n 1 -L 1 conda install
※上のコマンドはエラー結構出ます。
さらに
$ conda install numpy scipy pandas scikit-learn
を実行。
HPOlibのインストール
クローンしたHPOlib2ディレクトリ以下で
$ python setup.py install
ConfigSpaceのインストール
クローンしたConfigSpaceディレクトリ以下で
$ python setup.py install
openmlのインストール
クローンしたopenmlディレクトリ以下で
$ python setup.py install
最後にサンプルが実行できるかを確認(python test.py)して、終了。
test.py
from hpolib.benchmarks.ml import svm_benchmark b = svm_benchmark.SvmOnMnist() # Evaluate one configuration res = b.objective_function(configuration=[5, -5]) # Evaluate one configuration on a subset res = b.objective_function(configuration=[5, -5], dataset_fraction=0.5)
pynisherのインストール
実験の時のリソースの制限などをつけるために利用。研究での計算時間測定などには欠かせない。
pyrfrのインストール
pip install pyrfr
でのインストールができなくなっているので、こちらを参考にしてインストール。
その他エラーなど
Not foundとなったライブラリは適宜インストールしたのですが、
File "/home/XXXX/lib/python3.4/site-packages/smac/epm/rf_with_instances.py", line 124, in _train self.rf.fit(data, rng=self.rng) TypeError: fit() got an unexpected keyword argument 'rng'
のエラーがどうしても解決せず。
121 self.rf = regression.binary_rss_forest() 122 self.rf.options = self.rf_opts 123 data = self.__init_data_container(self.X, self.y) 124 self.rf.fit(data, rng=self.rng) 125 return self
となっていますが、pyrfrでは the_forest.fit(data, rng)
としてランダムフォレストを訓練してます。 適宜コードの中で訓練をする箇所のrng=...
を書き換えて動作しました。バージョン変わったらまたここの仕様で詰まりそうなのでメモ。