トレーニング データを準備する

このページでは、トレーニングの予測モデル用に表形式データを準備する方法について説明します。

この記事のトピックは次のとおりです。

  1. データ構造の要件
  2. インポートのソースを準備する
  3. トレーニング データに重みを追加する

デフォルトでは、Vertex AI は時系列分割アルゴリズムを使用して、予測データを 3 つのデータ分割に分割します。手動分割を使用することもできますが、その場合はデータ分割列を用意する必要があります。データ分割の詳細をご確認ください。

データ構造の要件

予測モデルの場合、トレーニング データは次の基本要件を満たす必要があります。

要件の種類 要件
サイズ データセットは 100 GB 以下にする必要があります。
列数 データセットの列数は 3~100 にする必要があります。データセット内の各観測項目には目標と時間が必要です。どちらも特徴として機能します。さらに、各観測項目には、観測が含まれる時系列を識別する時系列 ID が必要です。ただし、トレーニング データには 3 列より多くの列があるのが理想的です。列の最大数には、特徴列と非特徴列の両方が含まれます。
ターゲット列 ターゲット列を指定する必要があります。ターゲット列を使用すると、Vertex AI はトレーニング データを目的の結果に関連付けることができます。null 値を含むことはできず、数値である必要があります。
時間列 時間列を指定する必要があります。すべての行に値が入っている必要があります。時間列は、特定の観測が行われた時刻を示します。
時系列識別子列 時系列識別子列を指定する必要があります。すべての行に値が入っている必要があります。通常、予測のトレーニング データには複数の時系列が含まれます。この識別子は、トレーニング データの特定の観測値が属する時系列を Vertex AI に指示します。特定の時系列内のすべての行は、時系列識別子列の値が同じになります。一般的な時系列識別子としては、商品 ID、店舗 ID、地域などがあります。1 つの時系列で、時系列識別子列のすべての行に同一の値を使用して予測モデルをトレーニングすることもできます。ただし、Vertex AI は 2 つ以上の時系列を含むトレーニング データに適しています。最適な結果を得るには、モデルのトレーニングに使用する列ごとに少なくとも 10 個の時系列を使用します。
列名の形式 列名には、任意の英数字やアンダースコア(_)を使用できます。列名の先頭をアンダースコアにすることはできません。
行数 データセットの行数は 1,000~100,000,000 行でなければなりません。データセットに含まれる特徴の数によっては、高品質のモデルをトレーニングするために 1,000 行では十分でない場合があります。詳細
データ形式 ナロー(ロングとも呼ばれる)データ形式を使用します。ナロー形式では、各行は特定の時点の時系列識別子で指定された項目と、その項目のその時点でのすべてのデータを表します。詳しくは、データ形式の選択方法をご覧ください。
行の間隔 トレーニング行の間隔は一貫している必要があります。これはデータの粒度で、モデルのトレーニング方法と予測結果の頻度に影響します。詳しくは、データの粒度を選択する方法をご覧ください。
時系列の長さ 時系列の長さは、3,000 時間ステップを超えないようにする必要があります。

インポートのソースを準備する

Vertex AI には、次の 2 つの方法でモデル トレーニング データを提供できます。

  • BigQuery テーブル
  • カンマ区切り値(CSV)

どちらのソースを使用するかは、データの保存方法、データのサイズと複雑性によって決まります。データセットのサイズが小さく、複雑なデータ型が必要ない場合は、CSV を使用するのが簡単です。配列や構造体を含むサイズの大きいデータセットの場合は、BigQuery を使用する必要があります。

BigQuery

BigQuery テーブルまたはビューが、BigQuery のロケーション要件を満たしている必要があります。

BigQuery テーブルまたはビューが Vertex AI データセットを作成するプロジェクトと異なるプロジェクトにある場合、または BigQuery テーブルまたはビューが外部のデータソースを使用している場合は、1 つ以上のロールを Vertex AI サービス エージェントに追加します。BigQuery のロールの追加要件をご覧ください。

BigQuery テーブルにはスキーマを指定する必要はありません。データをインポートすると、Vertex AI によって自動的にそのテーブルのスキーマが推測されます。

BigQuery の URI(トレーニング データのロケーションを指定する)は、次の形式に従っている必要があります。

bq://<project_id>.<dataset_id>.<table_id>

URI には他の特殊文字を含めることはできません。

BigQuery のデータ型と Vertex AI へのマッピング方法については、BigQuery テーブルをご覧ください。BigQuery 外部データソースの使用の詳細については、外部データソースの概要をご覧ください。

CSV

CSV ファイルは Cloud Storage またはローカル PC にあります。次の要件を満たす必要があります。

  • 最初のファイルの 1 行目は、列の名前を含むヘッダーである必要があります。後続のファイルの 1 行目がこのヘッダーと同じ場合はヘッダーとして扱われ、それ以外の場合はデータとして扱われます。
  • 列名には、あらゆる英数字やアンダースコア(_)を使用できます。列名の先頭をアンダースコアにすることはできません。
  • 各ファイルのサイズは 10 GB を超えてはなりません。

    最大サイズの 100 GB に達するまで、複数のファイルを含められます。

  • 区切り文字はカンマ(,)にする必要があります。

CSV データのスキーマは指定する必要はありません。Vertex AI によって、データのインポート時に自動的にそのテーブルのスキーマが推測され、列名にヘッダー行が使用されます。

CSV ファイルのファイル形式とデータ型の詳細については、CSV ファイルをご覧ください。

Cloud Storage からデータをインポートする場合、そのデータは次の要件を満たすバケット内にある必要があります。

ローカル コンピュータからデータをインポートする場合は、次の要件を満たす Cloud Storage バケットが必要です。

  • Vertex AI バケットの要件を満たしています。
  • バケットが Vertex AI と同じプロジェクトにない場合は、Vertex AI サービス エージェントに 1 つ以上のロールを追加する必要があります。Cloud Storage のロールの追加要件をご覧ください。

    Vertex AI では、データをインポートする前にこのバケットをステージング領域として使用します。

トレーニング データに重みを追加する

デフォルトでは、Vertex AI はトレーニング データの各行を均等に比較します。トレーニングでは、他の行より重要と見なされる行は存在しません。

場合によっては、トレーニングで一部の行を他の行より重要と見なすことがあります。たとえば、支出のデータを使用している場合、支出の多い項目に関連するデータがモデルに与える影響を、他より大きくなるよう設定できます。特定の結果が欠けることを特に避けたい場合、その結果を含む行の重み付けをより重く設定できます。

データセットに重み列を追加すると、行に相対的な重みを設定できます。重み列は数値型の列でなければなりません。重み値は 0~10,000 です。値が大きいほど、モデルのトレーニング時の行の重要性が高くなります。重み 0 の行は無視されます。重み列を含める場合は、各行の値を含める必要があります。

後でモデルをトレーニングするときに、この列を Weight 列として指定します。

カスタムの重み付けスキームはモデルのトレーニングにのみ使用されます。モデル評価に使用されるテストセットには影響しません。

次のステップ