東京大学津田研究室で開発されたベイズ最適化計算用のライブラリCOMmon Bayesian Optimization Library ( COMBO )の導入で躓いた箇所があったのでメモを残しておきます.
はじめに
COMBOはベイズ最適化用の高速計算ライブラリでMITライセンスにより公開されているオープンソースソフトウェアになります. ベイズ最適化を用いれば中身の分からないブラックボックスである関数の最大値(もしくは最小値)を効率的に求めることが可能になります. ベイズ最適化そのものについての詳しい紹介は他の記事等に譲りたいと思います.概念的な部分の理解だけならば以下のスライドが参考になるかと思います. [機械学習のためのベイズ最適化入門](https://www.slideshare.net/hoxo_m/ss-77421091)また,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](https://www.microsoft.com/en-us/download/details.aspx?id=44266)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へのパス)というコードを追加します.
以上でインストールが実行できるようになると思います.
まだ問題が発生する場合は,上で示したパスがお使いの環境に合わせて設定されているかどうかや足りないパッケージがないか等を確認してください.