1. HOME
  2. ブログ
  3. IT技術
  4. 機械学習の自動化を可能にする「PyCaret」の実力を把握してみる

機械学習の自動化を可能にする「PyCaret」の実力を把握してみる

機械学習パッケージ「PyCaret」とは?

「Pycaret」とは、様々な種類の機械学習を数行で実現してくれるライブラリです。

2020年4月7日に PyCaret ver.1.0.0 がリリースされると、その内容から世界中に衝撃が走りました。

公式サイトでは、以下のように説明されています。

PyCaret は Python の低コード機械学習ライブラリであり、仮説から考察までの時間短縮を目的としています。

これにより、データサイエンティストとアナリストは反復的な機械学習を効率的に実行することができ、コード実装に費やす時間が大幅に短縮されるため、結論に素早く到達できます。

【PyCaret公式サイト】
https://pypi.org/project/pycaret/1.0.0/

ワンクリックだけで、元データの分析から複数の学習結果を出力できるのです!

PyCaret のメリット

PyCaret には下記のようなメリットがあります。

  1. コード実装が非常に簡単(数行で実装可能)
  2. 使い方が簡単
  3. ハイパーパラメータの自動最適化が可能
  4. 多面的な分析結果を図で確認できる
  5. データの前処理も自動で実施する

こちらの記事もオススメ!

Pycaret の実装

それでは早速、PyCaret の実装を行っていきましょう。

実装の流れは、下記のようになります。

  1. データの読み込み
  2. データの前処理
  3. 学習モデルによる精度の比較
  4. ハイパーパラメータの最適化
  5. モデルの可視化

データの読み込み

まずは、pycaret のパッケージをインストールします。

必要なパッケージの読み込み

次に、必要なパッケージを読み込みます。

今回は、回帰を行うので pycaret.regression としました。

分類を行う場合は、 pycaret.classification としてください。

ご覧のように、必要なパッケージは非常に少ないです。

データの読み込み

次に、データを読み込みます。

手持ちのデータだけでなく、PyCaret に用意されているデータ( PyCaret’s Data Repository )も使えます。

気になる方は、下記のリンクを参照してみてください。

【PyCaret’s Data Repository】
https://pycaret.org/get-data/

PyCaret’s Data Repository では、約50種類のデータセットが提供されています。

また、scikit-learn のデータセットも7種類あるので、とても充実しています。

今回は、定番の「Boston 地価データ」を使用します。

データの前処理

次に、PyCaret を起動します。

  1. 第一引数:解析に用いる data(読み込んだデータ)
  2. 第二引数:予測に用いる目的変数の名称
  3. 第三引数:分析から外す説明変数の名称

起動すると、投入したデータに対するデータ型の予測結果が表示されます。

PyCaret の予測が必ずしも正しいとは限らないので、自身でも確認してください。

問題がなければ、下の白枠にカーソルを移動し、「Enter」を押してください。

すると、「正常に SetUp が完了しました」というメッセージが出てきます。

上の画像が、SetUP 完了後の画面です。

データを様々な角度から捉えた結果を示しています。

データによっては算出できない項目もあるため、その場合は「False」や「None」と表示されます。

回帰モデルの自動構築

コードは、下記のたった1行です。

モデルの構築結果

下の画像が、モデルの構築結果です。

「Gradient Boosting」、「RandomForest」の決定木系や「Lasso」、「Ridge」など、主要な分析モデルが多く含まれています。

同時に分析した結果を並べ、精度が高い順に並べてくれます。

これが1行で出てくるとは衝撃ですね、普通に実装したらどれだけ時間がかかることか…。

ただし、こちらの分析では、ハイパーパラメータの最適化までは行われていません。(この後、個別で最適化を進める手順を説明します。)

初期条件

では、初期条件はどうなっているのでしょうか。

訓練データ:評価データ = 7:3 で分割し、実施しています。

初期条件は、交差検証「10回」です。

下記のコードにある Abbreviated Stringのモデル略称名は、今後必要になりますので、覚えておいてください。

学習モデルによる精度の比較

今回は、決定木の王道「Random Forest」のモデルを確認してみます。

先ほどのモデルの構築結果から、モデルを選択します。

モデルの名称は、上記コードの Abbreviated String を用いる必要がありますので、注意してください。

確認

初期設定である交差検証「10回」にて、検証が行われています。

Mea(平均値)、SD(標準偏差)も、同時に表示されています。

ハイパーパラメータの最適化

次に、ハイパーパラメータの最適化を行います。

  1. 第一引数:モデルの名称
  2. 第二引数:ランダムグリッドサーチの回数
  3. 第三引数:最適化の対象

これも、コードは下記の1行のみです。

確認

最適化前後を比較してみましょう。

R2 が 0.8549 → 「0.8901」 と増加しており、しっかり最適化が行われています。

PyCaret の最適化はランダムグリッドサーチが採用されていますが、現在の主流はベイズ最適化やステップワイズ法です。

ランダムグリッドサーチは、いわば「数打ちゃ当たる」の手法なので、必ずしも最適とは限らないのです。

ベイズ最適化やステップワイズ法と比較すると、やや時代遅れではありますが、便利であることに変わりはありません。

解析結果の可視化

解析結果を確認します。

確認

「Plot Type」を選択することで、様々な視点から結果を確認することができます。

今回は、「Random Forest」を用いましたが、学習手法を変えると、Plot Type の項目も変わります。

Hyperparameters

こちらは、ハイパーパラメータを確認できる項目です。

最適化後のハイパーパラメータの値を確認することができます。

Residuals Plot

残差分析の結果を確認できる項目です。

残差のバラつきを確認することで、外れ値を視覚的に確認することができます。

外れ値が生じるケースは、以下の通りです。

  1. 回帰式が適切ではない
  2. データが不適切
  3. 学習不足

右側にはヒストグラムも表示されているため、非常に分かりやすくなっています。

Prediction Error Plot

予測精度を確認できる項目です。

identity に対するズレ(予測値と実測値の誤差)から R2 が計算されています。

best fit の傾きが identity よりも小さくなっていることなど、作成した回帰モデルの特徴が見えてきます。

Cooks Distance Plot

クックの距離を確認できる項目です。

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

【回帰分析と分散分析に外れ値を特定する方法】
https://support.minitab.com/ja-jp/minitab/18/help-and-how-to/modeling-statistics/regression/supporting-topics/model-assumptions/ways-to-identify-outliers/

図中の破線が、推奨される閾値です。

これ以上は「外れ値の可能性あり」と判断できます。

Recursive Feature

特徴量の数による予測精度を確認できる項目です。

特徴量が5個以上となると、予測精度が安定していることが分かります。

このことから、必要最小限な特徴量の数を確認することができます。

Random Forest のような決定木系では、特徴量の数が予測精度へ与える影響は小さいですが、線形回帰系では特徴量を減らすことが重要となります。

Learing Curve

学習曲線を確認できる項目です。

訓練データとテストデータの予測精度が、データ数に対してどのように推移しているかが分かります。

Cross Validation Score により、交差検証による精度の幅を示しています。

訓練データを増やすと、テストデータの予測精度が上がっていきますが、感度が鈍っていく様子が分かります。

Validation Curve

木の深さによる予測精度の変化を確認できる項目です。

精度を上げつつ、過学習にならないような最適な場所を探す際に活用できます。

Manifold Learning

高次元データの次元削減による可視化を確認できる項目です。

クラスターを探す際に使用するため、「分類問題」にて使用します。

Feature Importance

特徴量の重要度を確認できる項目です。

目的変数に及ぼす影響が大きい順に、上から表示されます。

さいごに

「PyCaret」は、初心者でも機械学習が使用できるように、様々な配慮がなされています。

また、中級者の方が用いる際には、大幅な時間短縮と作業の効率化が実現できます。

「PyCaret」を活用し、優れた解析ができるようになることを願っています。

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、「好きを仕事にするエンジニア集団」です。
機械学習でのシステム開発依頼・お見積もりはこちらまでお願いします。
また、機械学習系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事