1. ホーム
  2. スクリプト・コラム
  3. パイソン

Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成

2022-01-02 05:02:01

機械学習モデルの説明は、通常、ほとんどのモデルがブラックボックスであり、モデルの内部で何が起こっているのか分からないため、難しいプロセスとなっています。様々な種類の可視化を作成することは、モデルがどのように動作するかを理解するのに役立ちますが、モデルがどのように動作するかを説明するためのライブラリはほとんどありません。

Evidentlyは、検証や予測中の機械学習モデルの分析に役立つ、インタラクティブな可視化レポート、ダッシュボード、JSONプロファイルを作成するためのオープンソースPythonライブラリです。データドリフト、分類や回帰のモデルパフォーマンスなどに関連する6種類のレポートを作成します。

はじめに

1. パッケージのインストール

パッケージマネージャのpipを使用してインストールし、以下を実行します。

$ pip install evidently


このツールは、インタラクティブなレポートをJupyter notebookと個別のHTMLファイルとして構築することができます。インタラクティブなレポートをHTMLファイルとして生成したい、またはJSON設定ファイルとしてエクスポートしたいだけであれば、これでインストールは完了です。

Jupyter notebookでインタラクティブなレポートを作成できるようにするために、Jupyter nbextensionを使用します。Jupyter notebookでレポートを作成する場合は、インストール後にターミナルで以下の2つのコマンドを実行してください。

jupyter Nbextionをインストールするために、実行します。

$ jupyter nbextension install --sys-prefix --symlink --overwrite --py evidently


実行

jupyter nbextension enable evidently --py --sys-prefix


注意点としては、インストール後に1回実行すれば十分です。最後の2つのコマンドを毎回繰り返す必要はありません。

2. 必要なライブラリのインポート

このステップでは、MLモデルを作成するために必要なライブラリをインポートします。また、モデルのパフォーマンスを分析するためのダッシュボードを作成するためのライブラリもインポートします。さらに、データセットをロードするためにpandasをインポートします。

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from evidently.dashboard import Dashboard
from evidently.tabs import RegressionPerformanceTab
from evidently.model_profile import Profile
from evidently.profile_sections import RegressionPerformanceProfileSection


3. データセットの読み込み

このステップでは、データをロードし、参照データと予測データに分離します。

raw_data = pd.read_csv('/content/day.csv', header = 0, sep = ',', parse_dates=['dteday'])
ref_data = raw_data[:120]
prod_data = raw_data[120:150]
ref_data.head()


4. モデルの作成

このステップでは、機械学習モデルを作成します。この特定のデータセットには、ランダムフォレスト回帰モデルを使用します。

target = 'cnt'
datetime = 'dteday'
numerical_features = ['mnth', 'temp', 'atemp', 'hum', 'windspeed']
categorical_features = ['season', 'holiday', 'weekday', 'workingday', 'weathersit',]
features = numerical_features + categorical_features
model = RandomForestRegressor(random_state = 0)
model.fit(ref_data[features], ref_data[target])
ref_data['prediction'] = model.predict(ref_data[features])
prod_data['prediction'] = model.predict(prod_data[features])


5. ダッシュボードの作成

このステップでは、モデルのパフォーマンスを説明するダッシュボードを作成し、MAE、MAPE、誤差分布など、モデルのさまざまなプロパティを分析します。

column_mapping = {}
column_mapping['target'] = target
column_mapping['prediction'] = 'prediction'
column_mapping['datetime'] = datetime
column_mapping['numerical_features'] = numerical_features
column_mapping['categorical_features'] = categorical_features
dashboard = Dashboard(tabs=[RegressionPerformanceTab])
dashboard .calculate(ref_data, prod_data, column_mapping=column_mapping)
dashboard.save('bike_sharing_demand_model_perfomance.html')


上の画像では、モデルのパフォーマンスを示すレポートをはっきりと見ることができます。このレポートは、上記のコードを使用してダウンロードし、HTMLレポートとして作成することができます。

6. 利用可能なレポートの種類

1)データドリフト

特徴量分布の変化を検出する

2) 数値目標ドリフト

数値目標や特徴の挙動の変化を検出する。

3)クラス分けのターゲットドリフト

分類対象や特徴の振る舞いの変化を検出する

4) 回帰モデルの性能

回帰モデルの性能とモデル誤差の分析

5) 分類モデルの性能

分類モデルの性能と誤差を分析する。バイナリーモデルとマルチクラスモデルに適用する

6) 確率的分類モデルの性能

確率的分類モデルの性能、モデルのキャリブレーションの品質、およびモデルの誤差を分析します。バイナリクラスとマルチクラスモデルに適用されます。

上記は、機械学習モデルダッシュボードを作成するためにEvidentlyを使用してパイソンデータマイニングの詳細であり、機械学習モデルダッシュボードを作成するEvidentlyについての詳細は、スクリプトハウスの他の関連記事に注意を払うしてください