次の方法で共有


Fabric の AutoML (プレビュー)

AutoML (自動マシン ラーニング) は、機械学習モデルのトレーニングと最適化を自動化する方法とツールのコレクションであり、人間の関与はほとんどありません。 AutoML の目的は、特定のデータセットに最適な機械学習モデルとハイパーパラメーターを選択するプロセスを簡素化し、高速化することです。通常、このプロセスには多くのスキルとコンピューティング能力が必要です。

重要

この機能はプレビュー中です。

Fabric では、データ サイエンティストは、機械学習タスクを自動化するために flaml.AutoML を使用できます。

AutoML は、さまざまなセクターの ML 専門家や開発者が以下を行うのに役立ちます。

  • 最小限のコーディングで ML ソリューションを構築する
  • 時間とコストを削減する
  • データ サイエンスのベスト プラクティスを適用する
  • 迅速かつ効率的に問題を解決する

AutoML ワークフロー

flaml.AutoML は、タスクに基づく AutoML のクラスです。 通常の適合メソッドと予測メソッドを使用して、Scikit-learn スタイルの推定器として使用できます。

AutoML 試用版を開始するには、ユーザーはトレーニング データとタスクの種類のみを指定する必要があります。 Fabric の統合された MLflow エクスペリエンスを使用すると、ユーザーは試用版で試行されたさまざまな実行を調べて、最終的なモデルがどのように選択されたかを確認することもできます。

トレーニング データ

Fabric では、ユーザーは次の入力の種類を AutoML fit 関数に渡すことができます。

  • Numpy 配列: 入力データが Numpy 配列に格納されると、X_train および y_train として fit() に渡されます。

  • Pandas データフレーム: 入力データが Pandas データフレームに格納されると、X_trainとy_trainとして、またはデータフレームとラベルとして fit() に渡されます。

  • Pandas on Spark データフレーム: 入力データが Spark データフレームとして格納されると、そのデータは、Pandas を使用して Spark on to_pandas_on_spark() データフレームに変換することができ、データフレームとラベルとして fit() に渡すことができます。

    from flaml.automl.spark.utils import to_pandas_on_spark
    psdf = to_pandas_on_spark(sdf)
    automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
    

機械学習の問題

ユーザーは、task 引数を使用して機械学習タスクを指定できます。 次のようなさまざまな機械学習タスクがサポートされています。

  • 分類: 分類モデルの主な目的は、トレーニング データから学習した知識に基づいて、新しいデータがどのカテゴリに分類されるかを予測することです。 一般的な分類の例には、不正行為の検出、手書き認識、オブジェクトの検出などがあります。
  • 回帰: 回帰モデルは、独立した予測子に基づいて数値の出力値を予測します。 回帰の目的は、1 つの変数が他の変数にどのように影響するかを推定することによって、独立した予測変数間の関係を確立することです。 たとえば、自動車の価格は、燃費効率や安全性の評価などの特徴量に基づきます。
  • 時系列予測: これは、時間順に並べ替えられた履歴データ ポイントに基づいて将来の値を予測するために使用されます。 時系列では、日単位、週単位、月単位、年単位など、特定の期間にわたって一定の間隔でデータが収集および記録されます。 時系列予測の目的は、データ内のパターン、傾向、季節性を特定し、この情報を使用して将来の価値に関する予測を行うことです。

FLAML でサポートされているその他のタスクの詳細については、FLAML での AutoML タスクに関するドキュメントを参照してください。

省略可能な入力

AutoML 試用版を構成するためのさまざまな制約と入力を提供します。

制約

AutoML 試用版を作成する場合、ユーザーは、AutoML プロセスの制約、潜在的な推定器のコンストラクター引数、AutoML で試行されたモデルの種類、および AutoML 試用版のメトリックに対する制約を構成することもできます。

たとえば、次のコードを使用すると、ユーザーは AutoML 試用版でメトリックの制約を指定できます。

metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)

これらの構成の詳細については、FLAML の構成に関するドキュメントを参照してください。

最適化メトリック

トレーニング中に、AutoML 関数は多くの試用版を作成し、さまざまなアルゴリズムとパラメーターを試します。 AutoML ツールは、ML アルゴリズムとハイパーパラメーターを反復処理します。 このプロセスでは、イテレーションごとにトレーニング スコアを持つモデルが作成されます。 最適化するメトリックのスコアが高いほど、モデルはデータに "適合している" と見なされます。 最適化メトリックは metric 引数を使用して指定されます。 組み込みのメトリックを参照する文字列またはユーザー定義関数のいずれかを指定できます。

AutoML 最適化メトリック

並列チューニング

場合によっては、Apache Spark を使用してトレーニングを並列化することで、AutoML 試用版を迅速化することをお勧めします。 Spark クラスターの場合、既定では、FLAML は Executor ごとに 1 つの試用版を起動します。 n_concurrent_trials 引数を使用して、同時試行回数をカスタマイズすることもできます。

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

AutoML の軌跡を並列化する方法の詳細については、並列 Spark ジョブの FLAML ドキュメントを参照してください。

MLflow を使用した追跡

Fabric MLflow 統合を使用して、メトリック、パラメーター、探索された軌跡のメトリックをキャプチャすることもできます。

import mlflow
mlflow.autolog()

with mlflow.start_run(nested=True):
    automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")

# You can also provide a run_name pre-fix for the child runs

automl_experiment = flaml.AutoML()
automl_settings = {
    "metric": "r2",
    "task": "regression",
    "use_spark": True,
    "mlflow_exp_name": "test_doc",
    "estimator_list": [
        "lgbm",
        "rf",
        "xgboost",
        "extra_tree",
        "xgb_limitdepth",
    ],  # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
    automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)

サポートされているモデル

Fabric の AutoML では、次のモデルがサポートされています。

分類 Regression (回帰) 時系列予測
(PySpark) 勾配ブースティング ツリー (GBT) 分類器 (PySpark) 加速故障時間 (AFT) 生存回帰 Arimax
(PySpark) 線形 SVM (PySpark) 一般化線形回帰 AutoARIMA
(PySpark) Naive Bayes (PySpark) 勾配ブースティング ツリー (GBT) 回帰 Average
(Synapse) LightGBM (PySpark) 線形回帰 CatBoost
CatBoost (Synapse) LightGBM デシジョン ツリー
デシジョン ツリー CatBoost ExponentialSmoothing
Extremely Randomized Trees デシジョン ツリー Extremely Randomized Trees
勾配ブースティング Elastic Net ForecastTCN
K ニアレスト ネイバー Extremely Randomized Trees 勾配ブースティング
Light GBM 勾配ブースティング Holt-Winters 指数平滑法
Linear SVC K ニアレスト ネイバー K ニアレスト ネイバー
ロジスティック回帰 LARS Lasso LARS Lasso
L1/L2 正則化によるロジスティック回帰 Light GBM Light GBM
Naive Bayes L1/L2 正則化によるロジスティック回帰 Naive
ランダム フォレスト ランダム フォレスト 軌道
Spark 上のランダム フォレスト Spark 上のランダム フォレスト Prophet
確率的勾配降下法 (SGD) 確率的勾配降下法 (SGD) ランダム フォレスト
サポート ベクター分類 (SVC) XGBoost SARIMAX
XGboost 深度が制限された XGBoost SeasonalAverage
深度が制限された XGBoost SeasonalNaive
テンポラル フュージョン トランスフォーマー
XGBoost
時系列の XGBoost
時系列の深度が制限された XGBoost
ElasticNet

結果を視覚化する

この flaml.visualization モジュールには、Plotly を使用して最適化プロセスをプロットするためのユーティリティ関数が用意されています。 Plotly を利用することで、ユーザーは AutoML の実験結果を対話的に調べることができます。 これらのプロット関数を使用するには、最適化された flaml.AutoML または flaml.tune.tune.ExperimentAnalysis オブジェクトを入力として指定します。

ノートブック内で次の関数を使用できます。

  • plot_optimization_history:実験内のすべての試行の最適化履歴をプロットします。
  • plot_feature_importance: データセット内の各特徴の重要度をプロットします。
  • plot_parallel_coordinate: 実験内の高次元パラメーターのリレーションシップをプロットします。
  • plot_contour: 実験のコンター プロットとしてパラメーター リレーションシップをプロットします。
  • plot_edf:実験の目標値EDF(経験分布関数)をプロットします。
  • plot_timeline: 実験のタイムラインをプロットします。
  • plot_slice: スタディのスライス プロットとしてパラメータ リレーションシップをプロットします。
  • plot_param_importance:実験のハイパーパラメーターの重要度をプロットします。