東京大学津田研究室で開発されたベイズ最適化計算用のライブラリCOMmon Bayesian Optimization Library ( COMBO )の導入で躓いた箇所があったのでメモを残しておきます.
はじめに
COMBOはベイズ最適化用の高速計算ライブラリでMITライセンスにより公開されているオープンソースソフトウェアになります.
ベイズ最適化を用いれば中身の分からないブラックボックスである関数の最大値(もしくは最小値)を効率的に求めることが可能になります.
ベイズ最適化そのものについての詳しい紹介は他の記事等に譲りたいと思います.概念的な部分の理解だけならば以下のスライドが参考になるかと思います.
機械学習のためのベイズ最適化入門
また,COMBOは以下のURLからダウンロードすることが出来ます.
https://github.com/tsudalab/combo
インストール方法(Anaconda以外)
GitのInstallの箇所を見れば簡単に導入できます.
Required Packagesに示されたソフトをpip等でインストールした後,
ダウンロードしたcomboファイルのディレクトリに移動して
python setup.py install
を実行することでインストールが完了します.
尚,実行環境としてpython2.7が指定されていることにご注意ください.
インストール方法(Anaconda)
躓いた部分がここになります.
COMBOにはexampleとしてtutorial.ipynbというファイルが用意されており,これを実行するためにjupyter notebookでCOMBOを実行する必要があります.
しかし,Anaconda PromptからCOMBOをインストールしようとすると,
~>python setup.py install
running install
running build
running build_py
running build_ext
skipping 'combo/misc/_src\traceAB.c' Cython extension (up-to-date)
building 'combo.misc._src.traceAB' extension
error: Unable to find vcvarsall.bat
というエラーが出てAnacondaにインストールすることが出来ないという問題が発生しました.
解決の為に行ったこと
まず,vcvarsall.batがインストールされていない可能性が有るので確認します.
以下のパッケージをインストールすることで,python2.7に対応したvsvarsallが導入されます.
Microsoft Visual C++ Compiler for Python 2.7
Windowsが標準で使用するpythonとAnacondaが使用しているpythonは別にインストールされています.
その為,上記パッケージをインストールしただけではパスが通っていない為エラーが消えません.
以下の手順でAnacondaが使用しているpythonにvcvarsall.batのパスを通してやります.
- "C:\Users\(ユーザー名)\AppData\Local\conda\conda\pkgs\python-2.7.15-he216670_0\Lib\distutils\msvc9compiler.py"をテキストエディタ等で開く(お使いの環境によって場所や名前が異なる可能性が有ります)
- 254行目辺りに
if not productdir: log.debug("No productdir found") return None
のような記述があるのでその直前にproductdir = "C:\\Users\\(ユーザー名)\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0"
(先ほどインストールしたMicrosoft Visual C++ Compiler for Python 2.7へのパス)というコードを追加します.
以上でインストールが実行できるようになると思います.
まだ問題が発生する場合は,上で示したパスがお使いの環境に合わせて設定されているかどうかや足りないパッケージがないか等を確認してください.
あとがき
標準の環境への導入は簡単に出来たのにAnacondaでは動かず,モヤモヤしたまま解決までに2日程かかってしまい非常に疲れました.
個人的には,今回のように仮想環境ゆえに融通が利かない部分があったり,ブラウザでコーディングしなければならない(私にとってブラウザはあくまで情報収集・娯楽目的のツールで,起動も遅くコーディング環境として常用したくない)という点が苦手で,Anacondaやjupyternotebookがあまり好きになれてはいないのですが,世間の潮流的には非常に活気づいている2ツールなので早く慣れておきたいところです.