メインコンテンツまでスキップ

回帰のためのデータ準備

この記事では、AutoML で回帰トレーニング用のデータを準備する方法と、構成可能なデータ設定について説明します。 これらのオプションは、エクスペリメントのセットアップ中に AutoML UIで調整できます。

AutoML API を使用してこれらの設定を構成するには、AutoML Python API リファレンスを参照してください。

サポートされているデータ機能タイプ

以下に示す機能タイプのみがサポートされています。 たとえば、画像 はサポートされていません

以下の特徴量タイプがサポートされています。

  • 数値(ByteTypeShortTypeIntegerTypeLongTypeFloatTypeDoubleType
  • ブール値
  • 文字列(カテゴリまたは英語のテキスト)
  • タイムスタンプ(TimestampTypeDateType
  • ArrayType[Numeric](Databricks ランタイム 10.4 LTS ML以降)
  • DecimalType(Databricks ランタイム 11.3 LTS ML以降)

欠損値の代入

Databricks Runtime 10.4 LTS ML 以降では、null 値の代入方法を指定できます。 UI で、テーブル スキーマの [Impute with ] 列のドロップダウンから方法を選択します。 API では、 imputers パラメーターを使用します。 詳細については、 AutoML Python API リファレンスを参照してください。

デフォルトによって、 AutoML は列のタイプと内容に基づいて代入方法を選択します。

注記

デフォルト以外の代入方法を指定した場合、 AutoML はセマンティック型検出を実行しません。

列の選択

Databricks Runtime 10.3 ML 以降では、AutoML がトレーニングに使用する列を指定できます。 UI で列を除外するには、[ 含める ] 列で列のチェックを外します。 API では、 exclude_cols パラメーターを使用します。 詳細については、 AutoML Python API リファレンスを参照してください。

予測ターゲットまたは 時間列 として選択した列をドロップしてデータを分割することはできません。

デフォルトでは、すべての列が含まれます。

データをトレイン、検証、テストセットに分割

AutoML では、トレーニング、検証、テストのためにデータが 3 つの分割に分割されます。 ML の問題の種類に応じて、データを分割するためのさまざまなオプションがあります。

次の方法を使用して、データをトレーニングセット、検証セット、テストセットに分割します。

( デフォルト ) ランダム分割 : データ分割戦略が指定されていない場合、データセットは 60% のトレーニング分割、20% の検証分割、20% のテスト分割にランダムに分割されます。 分類の場合、層化されたランダム分割により、各クラスがトレーニング、検証、およびテストセットで適切に表現されます。

時系列の分割 : Databricks Runtime 10.4 LTS ML 以降では、時系列のトレーニング、検証、テストの分割を作成するための時間列を選択できます。 時系列の分割では、最も古いデータポイントをトレーニングに、次に早いデータポイントを検証に、最新のポイントをテストに使用します。 時間列には、タイムスタンプ、整数、または文字列列を指定できます。

手動分割 : Databricks Runtime 15.3 ML 以降では、API を使用して手動分割を設定できます。 分割列を指定し、 trainvalidate、または test の値を使用して、トレーニング、検証、およびテストのデータセットに使用する行を特定します。 「 train」、「 test」、または「 validate 」以外の分割列値を持つ行は無視され、対応するアラートが発生します。

大規模なデータセットのサンプリング

AutoMLはハイパーパラメーターチューニングの試行をクラスターのワーカーノード全体に分散させますが、各モデルは単一のワーカーノードでトレーニングされています。

AutoMLは、データセットの読み込みとトレーニングに必要なメモリを自動的に推定し、必要に応じてデータセットをサンプリングします。

Databricks Runtimeのバージョン

サンプリング動作

9.1 LTS ML - 10.4 LTS ML

サンプリング率は一定であり、クラスターのノードタイプやノードあたりのメモリには依存 しません

11.x の ML

サンプリング率は、コアあたりのメモリが多いワーカー ノードで 増加します 。 サンプルサイズを増やすには:

  • メモリ最適化 インスタンスタイプを使用します。
  • Spark 構成で spark.task.cpus 調整します。 デフォルトは 1 で、最大値はワーカーノード上の CPU の数です。 最大値は、ワーカーノード上の CPU の数です。 この値を大きくすると、サンプルサイズは大きくなりますが、並行して実行される試行は少なくなります。

: 4 コアと 64GB RAM を搭載したマシンの場合:

  • spark.task.cpus=1では、ワーカーごとに 4 つの試行が実行され、それぞれが 16 GB の RAM を使用します。
  • spark.task.cpus=4では、ワーカーごとに 1 つの試用版が、64 GB の RAM すべてを使用して実行されます。

11.3 LTS ML 以上

AutoML でデータセットがサンプリングされると、サンプリング分数が UI の [概要 ] タブに表示されます。

12.2 LTS ML 以上

AutoML では、トレーニング タスクごとにより多くの CPU コアを割り当てることで、より大きなデータセットを処理できます。 サンプルサイズを増やすには、合計メモリが多いインスタンスを選択します。

分類問題では、AutoMLは層別サンプリングにPySparksampleByメソッドを使用し、ターゲットラベルの分布を保持します。

回帰問題の場合、AutoMLはPySparksampleメソッドを使用します。

セマンティック型検出

注記
  • AutoML では、 カスタム代入 方法が指定されている列に対しては、セマンティック型検出は実行されません。

Databricks Runtime 9.1 LTS ML 以降では、AutoML は、列のセマンティック型がテーブルスキーマの Spark データ型またはPandasデータ型と異なるかどうかを検出しようとします。AutoML では、これらの列は検出されたセマンティック型として扱われます。 これらの検出はベスト エフォートであり、セマンティック型の存在を見逃す場合があります。 また、列のセマンティック型を手動で設定したり、 注釈を使用して列にセマンティック型検出を適用しないように AutoML に指示したりすることもできます。

具体的には、AutoMLは以下の調整を行います:

  • 日付またはタイムスタンプデータを表す文字列列と整数列は、タイムスタンプタイプとして扱われます。
  • 数値データを表す文字列カラムは数値型として扱われます。

Databricks Runtime 10.1 ML以降では、AutoMLは以下の調整も行います。

  • カテゴリIDを含む数値列は、カテゴリ特徴量として扱われます。
  • 英語のテキストを含む文字列は、テキスト特徴量として扱われます。

セマンティック型アノテーション

Databricks Runtime 10.1 ML以降では、列にセマンティック型のアノテーションを付与することで、割り当てられるセマンティック型を手動で制御できます。列<column-name>のセマンティック型を<semantic-type>として手動でアノテーションを付与するには、以下の構文を使用します。

Python
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> は、以下のいずれかとなります。

  • categorical:列にはカテゴリ値(たとえば、IDとして扱う必要がある数値)が含まれています。
  • numeric:列には数値(たとえば、数値として解析できる文字列値)が含まれています。
  • datetime:列にはタイムスタンプ値(タイムスタンプに変換できる文字列、数値、または日付値)が含まれています。
  • text:文字列に英語のテキストが含まれています。

列のセマンティック型検出を無効にするには、特別なキーワードアノテーションnativeを使用します。