4行でモデル構築と予測ができるAutoML OSSの老舗「auto-sklearn」:AutoML OSS入門(2)(1/3 ページ)
AutoML OSSを紹介する本連載第2回は、AutoML OSSの老舗ともいえる「auto-sklearn」を解説します。auto-sklearnは、scikit-learnを拡張した形で、効率的なベイズ最適化手法を用いたAutoML機能を提供するツールです。
本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。
本連載第1回では、そもそもAutoMLとはどういうもので、どういった機能やメリットがあるのか解説しました。第2回からはAutoML OSS(オープンソースソフトウェア)を一つずつ紹介していきます。今回紹介するのは、AutoML OSSの老舗ともいえる「auto-sklearn」です。
auto-sklearnとは
auto-sklearnは2016年5月にGitHubリポジトリが作成されてからAutoMLをリードしてきたOSSの一つです。Matthias Feurer氏らが2015年に公開した論文「Efficient and Robust Automated Machine Learning」がベースになっています。
開発元 | アルベルト・ルートヴィヒ大学フライブルク |
---|---|
GitHub公開日 | 2016年5月 |
リポジトリ | https://github.com/automl/auto-sklearn |
実装言語 | Python |
ライセンス | 三条項BSDライセンス(scikit-learnと同じ) |
公式サイト | https://automl.github.io/auto-sklearn/master/ |
表1 auto-sklearnの基本情報 |
auto-sklearnは、Pythonの機械学習ライブラリであるscikit-learnに含まれる前処理や予測モデルなどから、入力データに適したものを制限された計算リソースの中で自動的に選択します。さらに、効率的なベイズ最適化手法を用いてハイパーパラメーターも自動決定します。これにより、ユーザーをアルゴリズムの選択とハイパーパラメーターの調整から解放してくれます。
auto-sklearnのアーキテクチャを図1に示します。auto-sklearnの自動化部分は、図中のAutoML systemの部分に該当します。
図1 auto-sklearnのアーキテクチャ(出典: http://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning.pdf)
auto-sklearnのアーキテクチャは、メタ学習、ベイズ最適化、アンサンブル構築の3つのフェーズで構成されています。
- メタ学習
- OpenMLで利用可能な140個のデータセットの中から入力されたデータセットと類似のデータセットを選定し、このデータセットに適したML(機械学習)フレームワーク(前処理、予測モデル)の候補を選択する。類似性の判定には38種類のメタ特徴(要約統計量、次元圧縮に関連する量やエントロピーなど)を用いる
- ベイズ最適化
- メタ学習フェーズで選択されたMLフレームワーク群を処理し、ベイズ最適化の手法を用いてハイパーパラメーターを決定する
- アンサンブル構築
- ベイズ最適化フェーズで算出した結果を保存しておき、アンサンブル平均を取る。単純な足し合わせ平均ではなく、精度向上に効果があるように重みを最適化してアンサンブルモデルを構築する
auto-sklearnでは、メタ学習とアンサンブル構築を導入することにより、AutoMLアプローチの効率性と堅牢(けんろう)性を向上させています。
主な特徴
auto-sklearnには次のような特徴があります。
- たった4行のコードでモデルの構築から予測まで可能
- メタ学習の導入
- 制限された探索時間やメモリ使用量の中で自動選択
それぞれの特徴をもう少し詳しく見ていきましょう。
たった4行のコードでモデルの構築から予測まで可能
AutoML機能を有するOSSは、どれも基本的には簡単なコードで利用できるようになっています。公開された2016年当時の機械学習で必要なコードの実装量を踏まえると、auto-sklearnは非常に簡単なコードで学習や予測ができることが特徴の一つといえます(auto-sklearnのコードの具体例は次の章で説明します)。
import autosklearn.classification cls = autosklearn.classification.AutoSklearnClassifier() # 学習 cls.fit(X_train, y_train) # 予測 predictions = cls.predict(X_test)
メタ学習の導入
機械学習モデルを自動的に構築する場合、データ前処理、特徴量前処理、分類器、ハイパーパラメーターのチューニングといった膨大な選択肢を探索する必要があります。しかし、実際にはCPUやメモリ使用量など計算リソースの制約の中で効率的にできるだけ良いモデルを探索することがほとんどです。
auto-sklearnでは、前述のアーキテクチャで紹介したメタ学習を導入し、探索を効率化しています。15種類の分類器、14種類の特徴量前処理、4種類のデータ前処理を使用して、110個のハイパーパラメーターを持つ構造化された仮説空間を生成し、効率的なベイズ最適化手法を用いてハイパーパラメーターを決定します。
図2は、auto-sklearnの論文に掲載されている分類アルゴリズムと前処理手法の一覧です。
図2 分類アルゴリズムおよび前処理手法の一覧(出典:http://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning.pdf)
制限された探索時間やメモリ使用量の中で自動選択
auto-sklearnは、ユーザーが指定した計算リソースの制限の中で、最適なアルゴリズムを選定しハイパーパラメーターを自動で決定します。
表2に、メモリ使用量や制限時間のパラメーターだけでなく、auto-sklearnモデルのインスタンス生成時に指定できるパラメーターの一部を紹介します。
パラメーター名 | デフォルト値 | 説明 |
---|---|---|
time_left_for_this_task | 3600 | モデルを探索するための制限時間(秒単位)。この値を増やすことにより、より良いモデルを見つける可能性が増す |
per_run_time_limit | time_left_for_this_taskの1/10 | 1回の呼び出しの時間制限(秒単位)。学習アルゴリズムが制限時間を越えて実行されると、モデルのフィッティングが終了 |
memory_limit | 3072 | 機械学習アルゴリズムのメモリ制限(MB単位)。メモリ制限を越えて割り当てようとすると、フィッティングが終了。Noneの場合、メモリ制限なし |
ensemble_size | 50 | アンサンブルをさせるモデルの最大数。0をセットすると、アンサンブルをしない |
ensemble_nbest | 50 | ユーザーがアンサンブルで考慮されるモデル数を直接指定 |
include_estimators | None | Noneの場合、全ての推定器を使用。それ以外の場合は、使用する推定器のセットを指定 |
exclude_estimators | None | Noneの場合、全ての推定器を使用。それ以外の場合は、使用しない推定器のセットを指定 |
include_preprocessors | None | Noneの場合、全てのプリプロセッサを使用。それ以外の場合、使用するプリプロセッサのセットを指定 |
exclude_preprocessors | None | Noneの場合、全てのプリプロセッサを使用。それ以外の場合、使用しないプリプロセッサのセットを指定 |
表2 パラメーターの一例 |
他にも複数のパラメーターがあります。詳しくは公式ドキュメント参照してください。
Copyright © ITmedia, Inc. All Rights Reserved.