トレーニングの視覚化 (プレビュー)
ハイパーパラメーター試用版または AutoML 試用版では、機械学習モデルの最適なパラメーターが検索されます。 各試用版は複数の実行で構成され、各実行は特定のパラメーターの組み合わせを評価します。 ユーザーは、Fabric の ML 実験アイテムを使用して、これらの実行を監視できます。
flaml.visualization
のモジュールには、FLAML で実行をプロットおよび比較する関数が用意されています。 ユーザーは Plotly を使用して、AutoML 実験プロットを操作できます。 これらの関数を使用するには、ユーザーが最適化された flaml.AutoML
または flaml.tune.tune.ExperimentAnalysis
オブジェクトを入力する必要があります。
この記事では、flaml.visualization
モジュールを使用して AutoML 試用版の結果を分析および調査する方法について説明します。 ハイパーパラメーター評価版でも同じ手順に従うことができます。
重要
この機能はプレビュー中です。
AutoML 試用版を作成する
AutoML には、データセットに最適な機械学習パイプラインを識別できる一連の自動化されたプロセスが用意されており、モデリング プロセス全体がより簡単に、多くの場合はより正確になります。 本質的に、さまざまなモデルとハイパーパラメーターを手動でチューニングする手間を省きます。
次のコード セルでは、次の手順を実行します。
- Iris データセットを読み込みます。
- データをトレーニングおよびテスト セットに分割します。
- トレーニング データに合わせて AutoML 試用版を開始します。
flaml.visualization
の視覚化を使用して、AutoML 試用版の結果を確認します。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from flaml import AutoML
# Load the Iris data and split it into train and test sets
x, y = load_iris(return_X_y=True, as_frame=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7654321)
# Create an AutoML instance and set the parameters
automl = AutoML()
automl_settings = {
"time_budget": 10, # Time limit in seconds
"task": "classification", # Type of machine learning task
"log_file_name": "aml_iris.log", # Name of the log file
"metric": "accuracy", # Evaluation metric
"log_type": "all", # Level of logging
}
# Fit the AutoML instance on the training data
automl.fit(X_train=x_train, y_train=y_train, **automl_settings)
実験結果を視覚化する
AutoML 試用版を実行したら、結果を視覚化して、モデルのパフォーマンスと動作を分析する必要があります。 このドキュメントのこの部分では、この目的で FLAML ライブラリの組み込みユーティリティを使用する方法について説明します。
視覚化モジュールのインポート
これらの視覚化ユーティリティにアクセスするには、次のインポート コマンドを実行します。
import flaml.visualization as fviz
最適化の履歴
最適化履歴プロットには、通常、x 軸に試行回数/反復回数が、y 軸にパフォーマンス メトリック (精度、RMSE など) が表示されます。 試行回数が増えると、各試用版のパフォーマンスを示す折れ線グラフまたは散布図が表示されます。
fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()
結果のプロットは次のようになります。
特徴の重要度
特徴量の重要度プロットは、モデルの予測を決定する際のさまざまな入力特徴の重要性を理解できる強力な視覚化ツールです。
fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()
結果のプロットは次のようになります。
平行座標プロット
平行座標プロットは、変数またはハイパーパラメーターに対応する複数の垂直線 (軸) を描画し、データ ポイントをこれらの軸に接続された線としてプロットすることで、多次元データを表す視覚化ツールです。 AutoML またはチューニング実験のコンテキストでは、さまざまなハイパーパラメーターの組み合わせのパフォーマンスを視覚化および分析する際に役立ちします。 パフォーマンスの高い構成のパスをトレースすることで、ハイパーパラメーターの選択肢とその相互作用のパターンや傾向を識別できます。 このプロットは、最適なパフォーマンスにつながる組み合わせを理解し、さらに探索する可能性のある領域を特定し、異なるハイパーパラメーター間のトレードオフを特定するのに役立ちます。
このユーティリティは次の他の引数を取ります。
learner
: 実験で学習する学習器を指定します。 このパラメーターは、AutoML 実験の結果にのみ適用されます。 この空白のままにすることで、システムは実験全体で最適な学習器を選択します。params
: 表示するハイパーパラメーターを指定するリスト。 この値を空白のままにすると、使用可能なすべてのハイパーパラメーターが表示されます。
fig = fviz.plot_parallel_coordinate(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "parallel_coordinate", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
結果のプロットは次のようになります。
コンター プロット
コンター プロットは 3 次元データを 2 次元で視覚化します。x 軸と y 軸は 2 つのハイパーパラメーターを表し、輪郭線または塗りつぶされた輪郭はパフォーマンス メトリックのレベル (精度や損失など) を表します。 AutoML またはチューニング実験のコンテキストでは、コンター プロットは、2 つのハイパーパラメーター間の関係と、モデルのパフォーマンスに対するそれらの組み合わせの影響を理解するために役立ちます。
輪郭線の密度と位置を調べることで、パフォーマンスが最適化されているハイパーパラメーター空間の領域を特定し、ハイパーパラメーター間の潜在的なトレードオフを確認し、それらの相互作用に関する分析情報を得ることができます。 この視覚化は、検索領域とチューニング プロセスを絞り込むのに役立ちます。
このユーティリティは次の引数も取ります。
learner
: 実験で学習する学習器を指定します。 このパラメーターは、AutoML 実験の結果にのみ適用されます。 この空白のままにすることで、システムは実験全体で最適な学習器を選択します。params
: 表示するハイパーパラメーターを指定するリスト。 この値を空白のままにすると、使用可能なすべてのハイパーパラメーターが表示されます。
fig = fviz.plot_contour(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "contour", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
結果のプロットは次のようになります。
経験分布関数
経験分布関数 (EDF) プロットは、多くの場合、ステップ関数として視覚化され、特定の値以下のデータ ポイントの累積確率を表します。 AutoML またはチューニング実験内では、EDF プロットを使用して、さまざまなハイパーパラメーター構成にわたるモデルパフォーマンスの分布を視覚化できます。
曲線の急度や平坦度を様々な点で観察することで、それぞれモデルのパフォーマンスが良好または不良であることを理解することができます。 この視覚化は、チューニング プロセスの全体的な有効性に関する分析情報を提供し、試行された構成のほとんどが満足のいく結果を生み出しているかどうか、または少数の構成だけが目立っているかどうかを強調します。
Note
AutoML 実験の場合、トレーニング中に複数のモデルが適用されます。 各学習者の試行は、最適化シリーズとして表されます。 ハイパーパラメーター チューニング実験の場合、評価される学習器は 1 つだけです。 ただし、追加のチューニング実験を提供して、各学習器の傾向を確認できます。
fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()
結果のプロットは次のようになります。
タイムライン プロット
多くの場合、ガント チャートまたは一連のバーとして表されるタイムライン プロットでは、時間の経過に伴うタスクの開始、期間、完了が視覚化されます。 AutoML またはチューニング実験のコンテキストでは、タイムライン プロットは、時間に対してプロットされたさまざまなモデル評価の進行状況とそれぞれの期間を示すことができます。 このプロットを観察することで、ユーザーは検索プロセスの効率を把握し、潜在的なボトルネックやアイドル期間を特定し、さまざまなハイパーパラメーター評価の時間的ダイナミクスを理解できます。
fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()
結果のプロットは次のようになります。
スライス プロット
スタディのスライス プロットとしてパラメーター リレーションシップをプロットします。
このユーティリティは次の引数も取ります。
learner
: 実験で学習する学習器を指定します。 このパラメーターは、AutoML 実験の結果にのみ適用されます。 この空白のままにすることで、システムは実験全体で最適な学習器を選択します。params
: 表示するハイパーパラメーターを指定するリスト。 この値を空白のままにすると、使用可能なすべてのハイパーパラメーターが表示されます。
fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()
結果のプロットは次のようになります。
ハイパーパラメーターの重要度
ハイパーパラメーターの重要度プロットでは、AutoML またはチューニング実験におけるモデルのパフォーマンスへの影響に基づいて、ハイパーパラメーターが視覚的にランク付けされます。 通常は横棒グラフとして表示され、各ハイパーパラメーターがターゲット メトリックに与える影響を定量化します。 このプロットを調べることで、専門家はどのハイパーパラメーターがモデルの結果を決定する際に重要であり、どのハイパーパラメーターが最小限の効果を持つのかを識別できます。
このユーティリティは次の引数も取ります。
learner
: 実験で学習する学習器を指定します。 このパラメーターは、AutoML 実験の結果にのみ適用されます。 この空白のままにすることで、システムは実験全体で最適な学習器を選択します。params
: 表示するハイパーパラメーターを指定するリスト。 この値を空白のままにすると、使用可能なすべてのハイパーパラメーターが表示されます。
fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()
結果のプロットは次のようになります。