Python PR

【AutoML】Laleでパイプライン構築からハイパーパラメータ チューニングまで自動化する

データサイエンス
記事内に商品プロモーションを含む場合があります

こんにちは。

現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。

今回は機械学習のハイパーパラメータ自動チューニングからパイプラインの自動選定までを丸っと実現できる Lale|IBM の簡単な使い方を紹介します。

パイプライン構築

機械学習モデルに対し、データの入出力をシームレスに実現するため、以下のようなパイプラインを構築するのですが…

パイプライン

扱うデータやタスクに応じて、数ある前処理や機械学習モデルの最適な組み合わせを検討する必要があります。

また採用する前処理や機械学習アルゴリズム次第では、ハイパーパラメータのチューニングが必要です。

データサイエンス

多くの場合、数回の検討・調整では上手くいかず、何度も PoC を回すことになります。

くるる
くるる
ハイパーパラメータ調整やパイプライン構築を自動化したいなー

と考えているフクロウには Lale をオススメします。 

Laleとは

Lale とはデータサイエンスを半自動化するためのPythonライブラリです。

データサイエンス

具体的には複数ある前処理と機械学習モデルの最適な組み合わせを自動選定し、かつハイパーパラメータの自動チューニングまで行った上で、scikit-learn と互換性のあるパイプラインを構築できるライブラリです。

くるる
くるる
そんな都合の良いライブラリあるの~?

というフクロウのために、Lale の使い方を紹介します。

スポンサーリンク

実践!Laleによるパイプライン自動選定からハイパーパラメータ自動調整まで -基礎編-

最初に以下のコマンドで Lale をインストールします。

pip install lale

以降からコードを書いていきます。

Import

まずはimportから

最後のコードは Lale を使うときの”おまじない”です。

データセット

今回は load_breast_cancer のデータセットを使い、機械学習による2値分類を行います。

以下のコードでデータセットをロードし、学習用と評価用に分けます。

パイプライン設計から可視化まで

以下のコードで『PCA ⇒ 決定木』のパイプラインを設計できます。

可視化もできます。

パイプライン

少し複雑なパイプライン設計

前処理を選択可能なパイプライン『PCA or raw data ⇒ 決定木』も設計できます。

パイプライン

複数の前処理した結果を結合してモデルに入力する『PCA + raw data ⇒ 決定木』もできます。

パイプライン

パイプライン自動選定からハイパーパラメータ自動調整まで

今回は以下のパイプラインを設計したとします。

パイプライン

Laleを使ってパイプライン選定からハイパーパラメータの調整までを自動化します。

※パイプライン選定(Chaice)が無い場合は、上記のコードでハイパーパラメータの自動チューニングのみを行います。

パイプライン選定およびハイパーパラメータ調整の結果を確認

以下のコードでチューニング結果を確認できます。

decision_tree_classifier = DecisionTreeClassifier(
max_features=0.25040322158625117,
min_samples_leaf=0.04370434701236803,
min_samples_split=0.32229487429436415
)
pipeline = NoOp() >> decision_tree_classifier

『raw data ⇒ 決定木』が選択され、かつハイパーパラメータのチューニング結果は上記の通りでした。

推論と評価

最後に構築したパイプラインに評価用データを入力し、モデルを評価します。

推論と評価

なかなか良いスコアですね。ここまでが【基礎編】です。

くるる
くるる
すげー!でもsklearnがサポートしてる機械学習しか使えないの?

そんなことないで、以降の【応用編】で実践します。

実践!Laleによるパイプライン自動選定からハイパーパラメータ自動調整まで -応用編-

【基礎編】では前処理の選定からハイパーパラメータの調整までを自動化しました。【応用編】では複数の機械学習モデルも自動選定するパイプラインを設計します。

GBDT -LightGBMとXGBoostを比較・選定-

やっぱりGBDT (Gradient Boosting Decision Tree)使いたいですよね。また前処理に標準化なども追加・選択できるようにします。

設計したパイプラインは下図の通りです。

パイプライン

Laleをによる選定・チューニング結果は以下の通りでした。

推論と評価

良いスコアですね。

くるる
くるる
すごい!もうLaleがあればデータサイエンスで楽できるね!?

そうですね。便利なツールはどんどん取り入れれば良いと思います。ただし Lale については以下の注意点があります。

いずれも時間が解決してくれる気もしますが、Laleが使えなくても、データサイエンスできるように知識やスキルを蓄えておくと安心ですね。

まとめ

Laleでパイプライン構築からハイパーパラメータのチューニングまで自動化しました。

Lale含めAutoMLツールを上手に活用し、効率よくデータサイエンスを実践できると良いですね。

くるる
くるる
頼りにしてるよ AutoML ♪

今後もAutoMLに関する情報をキャッチしたら、記事にしたいと思います。

はやぶさ
はやぶさ
AutoMLに関する情報共有をしながら、一緒に成長できると嬉しいです。よろしくお願いします。

以下 本記事と関連のある記事を紹介。

optunaでハイパーパラメータ最適化 pytorch-ligthning編
Optunaでハイパーパラメータの自動チューニング -Pytorch Lightning編-ハイパーパラメータ自動最適化フレームワークOptunaについて、入門から実践まで学べる記事を書きました。基本的な使い方からpytorch-lightningへの適用例までソースコード付きで公開しています。ご参考までに。...
【Tune-sklearn】機械学習のハイパーパラメータを自動チューニングする -skorch(Pytorch)編-
【Tune-sklearn】機械学習のハイパーパラメータを自動チューニングする -Pytorch(using skorch)編-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。 ...

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python