トップ OSS紹介 PyCaret

PyCaret

NRIのOpenStandiaが提供するPyCaret最新情報

バージョンアップ情報

PyCaret情報

PyCaretとは

PyCaretは、Pythonで実装されたオープンソースの機械学習ライブラリーで、機械学習の一連の作業を自動化する「AutoML」をサポートしています。他のオープンソースの機械学習ライブラリーで実装すると、数百行を超えるようなコードを、PyCaretでは数行のみに置き換えることができます。これにより、機械学習の実験サイクルを指数関数的にスピードアップし、生産性を向上させることができます。

PyCaretは基本的に、scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Rayなどのいくつかの機械学習ライブラリーとフレームワークのPythonラッパーです。PyCaretにより、以前であれば多くの専門知識を必要としていた分析タスクが、現在では専門外のユーザーでも実現可能になります。経験豊富なデータサイエンティストを見つけるのは難しく、雇用するのに費用がかかりますが、PyCaretを使いこなせれば、そのギャップを緩和し、ビジネスにおけるデータ関連の課題に効果的に対処できます。

PyCaretの素晴らしさを理解するには動かしてみるとのが一番です。ここでは、PyCaretの関数get_data()で取得可能なデータセット「credit」(※)を使用した二値分類の例を簡単に紹介します。

まず、データセットをロードします。

from pycaret.datasets import get_data
data = get_data('credit')

関数setup()にこのデータセットと目的変数のラベル名を与えると、データ型の推定と変換や欠損値の補填、カテゴリー変数のエンコーディングなどを自動的に行います。

from pycaret.classification import *
setup(data = data, target = 'default', session_id=123)

これにより、データの行数、特徴量の数、訓練データおよびテストデータの件数などが表示されます。

関数compare_models()を呼び出すと、複数のモデルを構築し、それらの精度を比較します。

best_model = compare_models()

この関数は、モデルライブラリー内のすべてのモデルを学習し、メトリック評価のための層化交差検証を使用してそれらをスコアリングします。 出力は、学習時間とともに、精度、AUC、再現率、適合率、F1、Kappa、およびMCCを出力します。ここでは、LDAが最も高い精度を出したので、変数best_modelにはLDAのモデルオブジェクトが代入されます。

ハイパーパラメーターをチューニングするには、関数tune_model()を使用します。

tuned_model = tune_model(best)

この関数は、ランダムグリッドサーチを使用してモデルのハイパーパラメーターを自動的に調整します。出力は、モデルの最高の精度、AUC、再現率、適合率、F1、kappa、およびMCCを出力します。

PyCaretは主要なグラフの表示も簡単にできます。例えば、ROC曲線は以下のようなコードで表示できます。

plot_model(tuned_model, plot = 'auc')

PR曲線は以下のようなコードで表示できます。

plot_model(tuned_model, plot = 'pr')

特徴量の重要度も簡単に表示できます。

plot_model(tuned_model, plot='feature')

混同行列も1行のコードで表示できます。

plot_model(tuned_model, plot = 'confusion_matrix')

※get_data('credit')で取得できるデータセットは、「Default of Credit Card ClientsDatase」と呼ばれるUCI(機械学習リポジトリー)のデータセットです。このデータセットには、2005年4月から2005年9月までの台湾のクレジットカードクライアントの支払い状況、人口統計学的要因、クレジットデータ、支払い履歴、および請求明細に関する情報が含まれています。24,000のサンプルと25の特徴量があります。

主な機能

主な機能は以下の通りです。

データ前処理の自動化

setup()を呼び出すだけで、データ型の推定と変換や欠損値の補填、カテゴリー変数のエンコーディングなどを自動的に行います。

モデルの比較の自動化

compare_models()を呼び出すと、すべてのモデルを比較して、それぞれの精度を高い順に表示します。

ハイパーパラメーターのチューニングの自動化

tune_model()でモデルのハイパーパラメーターのチューニングを自動的に行います。

モデルの評価

evaluate_model()で同時に複数の評価値の確認が可能です。

アンサンブリング

ensemble_model()に学習済みモデルオブジェクトを渡すだけで、バギングやブースティングができます。また、blend_models()を呼ぶことで、複数のモデルをブレンドさせることもできます。

予測

学習したモデルを使ってpredict_model()で予測ができます。

モデルの可視化

plot_model()で様々なグラフを可視化することができます。

モデルの保存とロード

save_model()でモデルを保存し、load_model()で保存したモデルをロードすることができます。

主な特徴

主な特徴は以下の通りです。

簡単

高度な機能を非常に簡単に実行することができます。学習コストも非常に低く抑えられます。インストールも簡単で以下のコマンドを実行するだけです。


pip install pycaret

短いコードで実装可能

PyCaretを使用しなければ、数百行のコードを書かなければいけないような処理を数行のコードで実現できます。

高機能

Pythonで実装された様々な機械学習ライブラリーとフレームワークのラッパーであるため、非常に高機能です。

類似プロダクト

AutoMLができるOSSの機械学習のフレームワークとして有名なものは他にH2O、AutoKeras、AutoGluonなどがあります。

PyCaretのライセンス

PyCaretのライセンスは、MITライセンスです。MITライセンスは、X Window System (X11)などのソフトウェアに適用されていることから、X11ライセンス、またはXライセンスとも表記されます。MITライセンスは、数あるソフトウェ アライセンスの中で最も制約が少なく、ソースコードの無償の使用のほか、改変、再配布することも認められています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • TensorFlow

    TensorFlow

    テンソルフロー。Googleが開発を行っている機械学習/ディープラーニング/多層ニューラルネットワークライブラリです。

  • H2O(機械学習プラットフォーム)

    H2O(機械学習プラットフォーム)

    エイチツーオーは、線形スケーラビリティーで拡張可能な分散型インメモリー機械学習プラットフォームです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。