Pythonでデータ分析:機械学習の自動化
導入
何か問題を解決するにあたって機械学習を活用する場合、膨大なアルゴリズム、そのアルゴリズムに付随する多くのハイパーパラメータが存在します。分析の要件が「とにかく精度、中身は問わない」だった場合、何とかして効率的にモデルとパラメータを知りたい、という状況が起こりえます*1。
そのような要件をサポートしてくれるPythonのライブラリに、auto-sklearnというものがあります。
github.com
これは、大雑把にいうと、与えられたデータを見て、scikit-learnの中から
- 良さそうな前処理の選定
- 良さそうなアルゴリズムの選定
- 良さそうなハイパーパラメータの選定
を行い、これらのアンサンブルを取る、といったことをします。
まず、Meta Learningという、データの数、種類などから、どの手法がどのデータに向いているかをモデル化し、ベイズ的最適化により最適な組み合わせを探る、そしてアンサンブルをとる、という流れです。より詳しくは、以下の論文をご参照ください。
What is auto-sklearn? — AutoSklearn 0.0.2 documentation
インストール
pip経由でインストールします。まずは、auto-sklearnを使うために必要なライブラリをインストール後、auto-sklearnをインストールします。
pip install -r https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt pip install auto-sklearn
コードを試したいときは
例えば、auto-sklearnのページにコード例があります。これをJupyter notebookか何かにコピーして動かしてみると良いかと思います*2。
What is auto-sklearn? — AutoSklearn 0.0.2 documentation
注意
やんちゃに動かすと大量のログを吐きながら膨大な計算をします*3。少ないデータ量でも2〜3時間はかかります。オプションでモデル探索の時間などをいじれるので、すぐに結果を見たいならオプションの指定を適切に行ったほうが良いでしょう。
APIs — AutoSklearn 0.0.2 documentation
所感
ローカルPCで動かすには、やっていることと処理時間の両方の観点でオーバースペック気味かなという感想です。使いどころとしては、ハイスペックな分析環境があり、かつどうしても精度がほしいといった場合かなと思います。