AutoML(PyCaret)を使ってみた


  • 製造業出身のデータサイエンティストがお送りする記事
  • 今回はDataRobotみたいなライブラリー(PyCaret)があったので使ってみました。

はじめに

過去に回帰モデルの手法を実装してみましたが、複数のモデルを簡単に比較できると楽だなと思っておりました。世の中のツールではDataRobotと呼ばれるツールがあるのですが、高くて買えないためPythonで似たようなライブラリーが無いかなと思って探していたらPyCaretという機械学習のモデル開発においてデータ前処理や可視化、モデル開発を数行のコードで出来てしまうライブラリを発見しました。

PyCaretを使ってみた

ライブラリーのインストールは下記で簡単にできます。

pip install pycaret

必要なライブラリーとデータを読み込んで、PyCaretを起動させます。
今回もUCI Machine Learning Repositoryで公開されているボストン住宅の価格データを用いて実施しますが、PyCaret’s Data Repository では、約50種類のデータセットが提供されています。

PyCaretの引数は下記です。

  • 第一引数:解析に用いる data(読み込んだデータ)
  • 第二引数:予測に用いる目的変数の名称
  • 第三引数:分析から外す説明変数の名称
# 必要なライブラリーのインポート
import pandas as pd
from pycaret.regression import *

# データセットの読込み
from pycaret.datasets import get_data 
boston_data = get_data('boston')

# PyCaretを起動
exp1 = setup(boston_data, target = 'medv', ignore_features = None, session_id=1498)

起動すると、投入したデータに対するデータ型の予測結果が表示されます。
きちっと中身を自分でも確認する必要があります。
問題がなければ、下の白枠にカーソルで「Enter」を押します。

セットアップが完了します。session_idで乱数シードを固定できます。

次にモデルを構築します。

# モデルの構築
compare_models()

「CatBoost Regressor」や「Gradient Boosting Regressor 」、「Ridge Regression」など主要な回帰モデルを自動で作成し、評価指標も自動で計算してくれます。

ただし、現状はハイパーパラメータのチューニングまでは実施されていません。

次にモデル構築時に交差検証をデフォルトでは10回実施してくれておりますので、その結果を確認してみようと思います。
今回は一番精度の良かったcatboostを選択します。

# catboostのモデルを確認
catboost = create_model('catboost')

次にハイパーパラメータのチューニングを実施します。
パラメータのチューニング方法はランダムグリッドサーチになります。

# catboostのモデルを最適化
catboost_tuned = tune_model(catboost, optimize = 'MAE')

次に解析結果を確認します。

# 解析結果の確認
evaluate_model(catboost_tuned)

「Hyperparameters」で最適化後のハイパーパラメータの値を確認することができます。
「Residuals」で残差分析の結果を確認できます。

「Prediction Error」で予測精度を確認できます。

「Cooks Distance」でクックの距離を確認できます。クックの距離とは、「i番目の観測値を使用して計算された係数と、観測値を使用しないで計算された係数との間の距離に対する測度」です。

他に「Feature Importance:変数重要度」や「Learing Curve:学習曲線」、「Validation Curve:木の深さによる予測精度の変化」等を確認できます。選択した手法によって分析できる内容は異なります。

最後にアンサンブル学習などもできます。

# アンサンブル学習
lgbm = create_model('lightgbm')
xgboost = create_model('xgboost')

ensemble = blend_models([lgbm, xgboost])

さいごに

最後まで読んで頂き、ありがとうございました。
こんな便利なライブラリーがあるとは知りませんでした。DataRobot無くても十分満足できる解析ができますね。

訂正要望がありましたら、ご連絡頂けますと幸いです。