トレーニングする 機械学習 models with Databricks Auto機械学習 Python API

この記事では、API を使用して Databricks AutoML でモデルをトレーニングする方法について説明します。 詳細については、「 AutoML とは」を参照してください。 Python API には、AutoML の実行の分類、回帰、予測を開始する関数が用意されています。 各関数は、一連のモデルをトレーニングし、モデルごとに試用版ノートブックを生成します。

次のステップ では、API を使用して AutoML エクスペリメントを設定する一般的な方法について説明します。

  1. ノートブックを作成し 、機械学習 Databricks Runtime を実行しているクラスターにアタッチします。

  2. 既存の DATA から使用するテーブルを特定するか 、データ ファイルを DBFS にアップロード してテーブルを作成します。

  3. AutoML の実行を開始するには、テーブル名を適切な API 仕様 ( 分類回帰、または 予測) に渡します。

  4. AutoML の実行が開始されると、MLflow エクスペリメント URL がコンソールに表示されます。 この URL を使用して、実行の進行状況を監視します。 MLflow エクスペリメントを更新して、完了した試用版を確認します。

  5. AutoML の実行が完了したら、次の操作を行います。

    • 出力の概要のリンクを使用して、MLflow エクスペリメントまたは最良の結果を生成したノートブックに移動します。

    • データ探索ノートブックへのリンクを使用して、AutoML に渡されるデータに関する知識を取得します。 このノートブックを同じクラスターにアタッチし、ノートブックを再実行して結果を再現したり、追加のデータ分析を行ったりすることもできます。

    • AutoML 呼び出しから返されたサマリー オブジェクトを使用して、トライアルの詳細を調べたり、特定のトライアルによってトレーニングされたモデルをロードしたりします。 AutoMLSummary オブジェクトの詳細については、こちらを参照してください。

    • 試用版から生成されたノートブックを複製し、同じクラスターにアタッチしてノートブックを再実行し、結果を再現します。 また、必要な編集を行って再実行し、追加のモデルをトレーニングし、同じエクスペリメントに記録することもできます。

要件

「AutoML エクスペリメント の要件 」を参照してください。

分類仕様

次のコード例では、分類モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加のパラメーターについては、「分類パラメーター と回帰パラメーター」を参照してください。

max_trials パラメーターは Databricks Runtime 10.4 機械学習では非推奨となり、 Databricks Runtime 11.0 機械学習以降ではサポートされていません。 timeout_minutes を使用して、AutoML の実行時間を制御します。

databricks.automl.classify(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  pos_label: Optional[Union[int, bool, str] = None,                 # <DBR> 11.1 ML and above
  primary_metric: str = "f1",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
  split_col: Optional[str] = None,
) -> AutoMLSummary

回帰仕様

次のコード例では、回帰モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加のパラメーターについては、「分類パラメーター と回帰パラメーター」を参照してください。

max_trials パラメーターは Databricks Runtime 10.4 機械学習では非推奨となり、 Databricks Runtime 11.0 機械学習以降ではサポートされていません。 timeout_minutes を使用して、AutoML の実行時間を制御します。

databricks.automl.regress(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  primary_metric: str = "r2",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
  split_col: Optional[str] = None,
) -> AutoMLSummary

予測仕様

次のコード例では、予測モデルをトレーニングするための AutoML 実行を構成します。 AutoML 実行のパラメーターの詳細については、「 予測パラメーター」を参照してください。 Auto-ARIMA を使用するには、時系列に一定の頻度が必要です (つまり、任意の 2 点間の間隔が時系列全体で同じである必要があります)。 頻度は、API 呼び出しで指定された頻度単位と一致する必要があります。 AutoML は、欠落している時間ステップを、それらの値に前の値で入力することで処理します。

databricks.automl.forecast(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  time_col: str,
  country_code: str = "US",                                         # <DBR> 12.0 ML and above
  data_dir: Optional[str] = None,
  exclude_frameworks: Optional[List[str]] = None,
  experiment_dir: Optional[str] = None,
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 12.2 LTS ML and above
  frequency: str = "D",
  horizon: int = 1,
  identity_col: Optional[Union[str, List[str]]] = None,
  output_database: Optional[str] = None,                            # <DBR> 10.5 ML and above
  primary_metric: str = "smape",
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

分類と回帰のパラメーター

分類と回帰の問題に対してのみ、次のことができます。

  • トレーニングに含める列を指定します。

  • カスタム補完方法を選択します。

フィールド名

タイプ

説明

データセット

str pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame

トレーニングの特徴とターゲットを含む入力テーブル名または DataFrame 。

テーブル名は、 Unity Catalog 以外のテーブルの場合は ".." または "." の形式にすることができます。

target_col

str

ターゲット ラベルの列名。

data_dir

フォーマットのstr dbfs:/<folder-name>

(オプション)トレーニング データセットの格納に使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方に表示されます。

Databricks では、AutoML でトレーニング データセットを MLflow 成果物として保存できるように、このフィールドを空のままにすることをお勧めします。

カスタム パスが指定されている場合、データセットは AutoML エクスペリメントのアクセス権限を継承しません。

exclude_cols

リスト[str]

(オプション)AutoML の計算中に無視する列のリスト。

デフォルト: []

exclude_フレームワーク

リスト[str]

(オプション)AutoML がモデルを開発する際に考慮してはならないアルゴリズム フレームワークのリスト。 可能な値: 空のリスト、または "sklearn"、"lightgbm"、"xgboost" の 1 つ以上。

デフォルト: [] (すべてのフレームワークが考慮されます)

エクスペリメント

str

(オプション)生成されたノートブックとエクスペリメントを保存するためのワークスペース内のディレクトリへのパス。

デフォルト: /Users/<username>/databricks_automl/

エクスペリメント

str

(オプション)AutoML によって作成される MLflow エクスペリメントの名前。

デフォルト: 名前が自動的に生成されます。

feature_store_ルックアップ

リスト[辞書]

(オプション)データ拡張のための Feature Store の特徴を表すディクショナリのリスト。 各ディクショナリで有効なキーは次のとおりです。

  • table_name (str): 必須です。 特徴量テーブルの名前。

  • lookup_key (リストまたは str): 必須です。 特徴量テーブルを dataset パラメーターで渡されたデータと結合するときにキーとして使用する列名。 列名の順序は、特徴量テーブルの主キーの順序と一致する必要があります。

  • timestamp_lookup_key (str): 指定したテーブルが 時系列特徴テーブルの場合に必須です。 dataset パラメータで渡されたデータを使用してフィーチャ テーブルに対してポイントインタイム ルックアップを実行するときに使用する列名。

デフォルト: []

インピュータ

Dict[str, Union[str, Dict[str, Any]]]

(オプション)各キーが列名で、各値が補完戦略を説明する文字列またはディクショナリであるディクショナリ。 文字列として指定する場合、値は "mean"、"median"、または "most_frequent" のいずれかである必要があります。 既知の値で代入するには、値を辞書 {"strategy": "constant", "fill_value": <desired value>}として指定します。 文字列オプションをディクショナリとして指定することもできます (例: {"strategy": "mean"})。

列に補完方法が指定されていない場合、AutoML は列の型と内容に基づいて既定の方法を選択します。 既定以外の補完方法を指定した場合、AutoML は セマンティック タイプの検出を実行しません。

デフォルト: {}

max_trials

整数

(オプション)実行する試行の最大数。

このパラメーターは Databricks Runtime 10.5 機械学習以前で使用できますが、 Databricks Runtime 10.3 機械学習以降は非推奨です。 Databricks Runtime 11.0 機械学習以降では、このパラメーターはサポートされていません。

デフォルト: 20

timeout_minutes=None の場合、AutoML は最大数の試行を実行します。

pos_label

Union[int, bool, str]

(分類のみ)ポジティブクラス。 精度や再現率などのメトリクスを計算する場合に便利です。 二項分類の問題に対してのみ指定する必要があります。

primary_metric

str

メトリクス モデルのパフォーマンスを評価およびランク付けするために使用されます。

回帰でサポートされるメトリクス: "r2" (デフォルト), "mae", "rmse", "mse"

サポートされている分類メトリクス: "f1" (デフォルト), "log_loss", "精度", "精度",ROC"

split_col

str

(オプション)分割列の列名。

API ワークフローでは、Databricks Runtime 15.2 ML 以降でのみ使用できます。

指定されている場合、 AutoMLトレーニングする/検証/テスト セットをユーザー指定の値で分割しようとし、この列はトレーニング機能から自動的に除外されます。

受け入れられる列タイプは文字列です。 この列の各エントリの値は、「トレーニングする」、「validate」、または「test」のいずれかである必要があります。

time_col

str

Databricks Runtime 10.1 機械学習以降で使用できます。

(オプション)時間列の列名。

指定した場合、AutoML は、最も古いポイントをトレーニング データとして使用し、最新のポイントをテスト セットとして使用して、データセットをトレーニング セット、検証セット、テスト セットに時系列で分割しようとします。

受け入れられる列の型は、タイムスタンプと整数です。 Databricks Runtime 10.2 機械学習以降では、文字列列もサポートされています。列の型が文字列の場合、AutoML はセマンティック検出を使用してタイムスタンプに変換しようとします。 変換が失敗した場合、AutoML の実行は失敗します。

timeout_minutes

整数

(オプション)AutoML トライアルの完了を待機する最大時間。 タイムアウトを長くすると、AutoML はより多くのトライアルを実行し、より正確にモデルを識別できます。

デフォルト: 120分

最小値: 5 分

タイムアウトが短すぎて少なくとも 1 つの試行を完了できない場合は、エラーが報告されます。

予測パラメーター

フィールド名

タイプ

説明

データセット

str

pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame

トレーニングの特徴とターゲットを含む入力テーブル名または DataFrame 。

テーブル名は、 Unity Catalog 以外のテーブルの場合は ".." または "." の形式にすることができます。

target_col

str

ターゲット ラベルの列名。

time_col

str

予測の時間列の名前。

周波数

str

予測の時系列の頻度。 これは、イベントが発生すると予想される期間です。 デフォルト設定は「D」または日次データです。 データの頻度が異なる場合は、必ず設定を変更してください。

可能な値:

"W" (週)

"D" / "日" / "日"

"時間" / "時間" / "時間" / "h"

"m" / "分" / "分" / "分" / "T"

"S" / "秒" / "秒" / "秒"

以下は、 Databricks Runtime 12.0 機械学習以降でのみ使用できます。

"M" / "月" / "月"

"Q" / "四半期" / "四半期"

"Y" / "年" / "年"

デフォルト: "D"

地平線

整数

予測を返す必要がある将来の期間の数。 単位は時系列頻度です。 デフォルト: 1

data_dir

フォーマットのstr dbfs:/<folder-name>

(オプション)トレーニング データセットの格納に使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方に表示されます。

Databricks では、AutoML でトレーニング データセットを MLflow 成果物として保存できるように、このフィールドを空のままにすることをお勧めします。

カスタム パスが指定されている場合、データセットは AutoML エクスペリメントのアクセス権限を継承しません。

exclude_フレームワーク

リスト[str]

(オプション)AutoML がモデルを開発する際に考慮してはならないアルゴリズム フレームワークのリスト。 可能な値: 空のリスト、または "預言者"、"arima" の 1 つ以上。 デフォルト: [] (すべてのフレームワークが考慮されます)

エクスペリメント

str

(オプション)生成されたノートブックとエクスペリメントを保存するためのワークスペース内のディレクトリへのパス。

デフォルト: /Users/<username>/databricks_automl/

エクスペリメント

str

(オプション)AutoML によって作成される MLflow エクスペリメントの名前。

デフォルト: 名前が自動的に生成されます。

feature_store_ルックアップ

リスト[辞書]

(オプション)データ拡張のための Feature Store の特徴を表すディクショナリのリスト。 各ディクショナリで有効なキーは次のとおりです。

  • table_name (str): 必須です。 特徴量テーブルの名前。

  • lookup_key (リストまたは str): 必須です。 特徴量テーブルを dataset パラメーターで渡されたデータと結合するときにキーとして使用する列名。 列名の順序は、特徴量テーブルの主キーの順序と一致する必要があります。

  • timestamp_lookup_key (str): 指定したテーブルが 時系列特徴テーブルの場合に必須です。 dataset パラメータで渡されたデータを使用してフィーチャ テーブルに対してポイントインタイム ルックアップを実行するときに使用する列名。

デフォルト: []

identity_col

ユニオン[str, list]

(オプション)複数系列予測の時系列を識別する列。 AutoML は、これらの列と予測用の時間列でグループ化されます。

output_database

str

(オプション)指定した場合、AutoML は最適なモデルの予測を指定されたデータベースの新しいテーブルに保存します。

デフォルト: 予測は保存されません。

primary_metric

str

メトリクス モデルのパフォーマンスを評価およびランク付けするために使用されます。 サポートされているメトリクス: "smape"(デフォルト) "mse"、"rmse"、"mae"、または "mdape"。

timeout_minutes

整数

(オプション)AutoML トライアルの完了を待機する最大時間。 タイムアウトを長くすると、AutoML はより多くのトライアルを実行し、より正確にモデルを識別できます。

デフォルト: 120分

最小値: 5 分

タイムアウトが短すぎて少なくとも 1 つの試行を完了できない場合は、エラーが報告されます。

country_code

str

Databricks Runtime 12.0 機械学習以降で使用できます。預言者の予測モデルでのみサポートされます。

(オプション)予測モデルで使用する国の休日を示す 2 文字の国コード。 休日を無視するには、このパラメーターを空の文字列 ("") に設定します。 サポートされている国

デフォルト: 米国 (米国の祝日)。

収益

AutoMLSummary

各試行のメトリクス、パラメーター、およびその他の詳細を記述する AutoML 実行の概要オブジェクト。 また、このオブジェクトを使用して、特定の試行によってトレーニングされたモデルを読み込みます。

財産

タイプ

説明

エクスペリメント

mlflow.entities.エクスペリメント

トライアルのログ記録に使用される MLflow エクスペリメント。

試験

リスト[トライアル情報]

実行されたすべての試行に関する情報を含むリスト。

best_trial

トライアル情報

プライマリメトリクスの最高加重スコアをもたらした試験に関する情報。

メトリクス

str

すべての試行にわたるプライマリメトリクスの加重スコアの分布。

output_table_name

str

予測でのみ使用され、output_databaseが指定されている場合にのみ使用されます。 モデルの予測を含むoutput_database内のテーブルの名前。

TrialInfo

個々の試行ごとの要約オブジェクト。

財産

タイプ

説明

ノートブック

オプション[str]

ワークスペース内のこの試用版用に生成されたノートブックへのパス。 分類と回帰の場合、この値は最適な試行に対してのみ設定され、他のすべての試行の値は Noneに設定されます。 予測では、この値はすべての試行に存在します

ノートブック

オプション[str]

この試用版用に生成されたノートブックの URL。 分類と回帰の場合、この値は最適な試行に対してのみ設定され、他のすべての試行の値は Noneに設定されます。 予測の場合、この値はすべての試行に適用されます

artifact_uri

オプション[str]

生成されたノートブックの MLflow アーティファクト URI。

実行

str

このトライアル実行に関連付けられている MLflow 実行 ID。

メトリクス

ディクショナリ[str, float]

メトリクスは、このトライアルのために MLflow にログインしました。

パラメータ

Dict[str, str]

この試用版で使用された MLflow に記録されたパラメーター。

model_path

str

このトライアルでトレーニングされたモデルの MLflow 成果物 URL。

model_description

str

モデルの簡単な説明と、このモデルのトレーニングに使用されるハイパーパラメーター。

期間

str

トレーニング時間 (分単位)。

プリプロセッサ

str

モデルをトレーニングする前に実行されるプリプロセッサの説明。

evaluation_metric_score

浮く

検証データセットに対して評価されたプライマリメトリクスのスコア。

方式

説明

load_model()

このトライアルで生成され、MLflow 成果物としてログに記録されたモデルを読み込みます。

ノートブックをインポートする

MLflow アーティファクトとして保存されているノートブックをインポートするには、 databricks.automl.import_notebook Python API を使用します。

def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
    """
    Import a trial notebook, saved as an MLflow artifact, into the workspace.

    :param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
    :param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
    :param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.

    :return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
    """

使用例:

summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)

登録してモデルを デプロイする

MLflow モデルレジストリ内の登録するモデルと同様に、AutoML トレーニング済みモデルを登録してデプロイできます (「 MLflow モデルのログ記録、読み込み、登録する、デプロイ」を参照してください)。

'pandas.core.indexes.numeric という名前のモジュールはありません

AutoML を使用してビルドされたモデルを Model Servingで提供すると、次のエラーが発生する可能性があります: No module named 'pandas.core.indexes.numeric

これは、AutoML とモデルを提供するエンドポイント環境の間の互換性のない pandas バージョンが原因です。 このエラーを解決するには、 add-pandas-dependency.py スクリプトを実行します。 スクリプトは、記録済みモデルの requirements.txtconda.yaml を編集して、適切な pandas 依存関係バージョン pandas==1.5.3を含めます。

  1. スクリプトを変更して、モデルがログに記録された MLflow 実行の run_id を含めます。

  2. モデルを MLflow モデルレジストリに再登録します。

  3. 新しいバージョンの MLflow モデルを提供してみてください。

ノートブックの例

AutoML の使用を開始するには、これらのノートブックを確認してください。

次のノートブックは、AutoML を使用して分類を行う方法を示しています。

AutoML 分類のサンプル ノートブック

ノートブックを新しいタブで開く

次のノートブックは、AutoML を使用して回帰を行う方法を示しています。

AutoML 回帰サンプル ノートブック

ノートブックを新しいタブで開く

次のノートブックは、AutoML を使用して予測を行う方法を示しています。

AutoML 予測サンプル ノートブック

ノートブックを新しいタブで開く

次のノートブックは、Auto機械学習を使用して機械学習モデルをトレーニングし、特徴量テーブル Feature Store 方法を示しています。

AutoML エクスペリメント with Feature Store サンプル ノートブック

ノートブックを新しいタブで開く