小売データから販売予測を生成する

このページでは、BigQuery にエクスポートされた小売データに基づいて、Vertex AI から予測を取得するためのガイダンスを示します。小売商品とユーザー イベントのデータを Vertex AI で使用可能な形式に変換するための SQL コードブロックがいくつも用意されています。これらのコードブロックの説明に続いて、Vertex AI コンソールでデータセットを作成し、モデルをトレーニングして、予測を生成する手順を示します。

始める前に

小売データを使用して販売予測を生成する前に、次のことを行う必要があります。

集計済み販売テーブルを作成する

このセクションの SQL コードによって、ユーザー イベント テーブルが集計済み販売テーブルに変換されます。つまり、ユーザー イベント テーブル内の少なくとも 1 回販売された各商品について、その販売数量が 1 週間単位で集計されます。また、この SQL コードでは次の処理も行われます。

  • ユーザー イベント テーブル内の任意の商品において、テーブル内のその商品の最初の販売からテーブル内の任意の商品の最後の販売までの間のタイムスタンプが欠けている場合、欠けている各タイムスタンプは販売数ゼロの新しい行でバックフィルされます。これは、販売履歴のギャップを埋めるためです。

  • タイムスタンプが 20 個以上ある商品がユーザー イベント テーブルにひとつもない場合、テーブルから 1 つの商品がランダムに選択され、タイムスタンプが 20 個に達するまで行(それぞれ販売数ゼロ)でバックフィルされます。これは、Vertex AI の要件(モデルのトレーニングにはタイムスタンプが少なくとも 20 個必要)に対応するためです。

集計済み販売テーブルを作成するには:

  1. 次の SQL サンプルコードの変数を次のように置き換えます。

    • starting_day_of_week。週の開始曜日。有効な値: MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table。BigQuery にエクスポートしたユーザー イベント テーブルのプロジェクト ID、データセット ID、テーブル ID。形式は project_id.dataset_id.table_id です。

    • rdm_product_table。BigQuery にエクスポートした商品テーブルのプロジェクト ID、データセット ID、テーブル ID。形式は project_id.dataset_id.table_id です。

    • aggregated_sales_table。新しい集計済み販売テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID を使用します。既存のデータセットの ID を使用します。テーブル ID を指定します。ただし、上書きする場合を除き、既存のテーブルの ID は使用しないでください。形式は project_id.dataset_id.table_id です。

  2. SQL コードサンプルをコピーします。

  3. Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  4. 目的の商品テーブルとユーザー イベント テーブルを含むプロジェクトを選択します(まだ選択していない場合)。

  5. [エディタ] ペインに、SQL コードサンプルを貼り付けます。

  6. [ 実行] をクリックし、クエリの実行が完了するまで待ちます。

新しい集計済み販売テーブルが、aggregated_sales_table 変数を使用して設定した BigQuery 内の場所に書き込まれます。

商品テーブルを処理する

このセクションの SQL コードによって、BigQuery にエクスポートした商品テーブルで繰り返しフィールドと構造体フィールドが削除され、price_info フィールドから子フィールドへのネストが解除されます。Vertex AI ではリストとネスト構造を使用できないため、この処理は必須です。結果として、処理済み商品テーブルが得られます。

商品テーブルを処理するには:

  1. 次の SQL サンプルコードの変数を次のように置き換えます。

    • rdm_product_table。BigQuery にエクスポートした商品テーブルのプロジェクト ID、データセット ID、テーブル ID。形式は project_id.dataset_id.table_id です。

    • processed_product_table。新しい処理済み商品テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID を使用します。既存のデータセットの ID を使用します。テーブル ID を指定します。ただし、上書きする場合を除き、既存のテーブルの ID は使用しないでください。形式は project_id.dataset_id.table_id です。

    CREATE OR REPLACE TABLE `PROCESSED_PRODUCT_TABLE` AS
    SELECT * EXCEPT (id, attributes, price_info, rating, expire_time,
    available_time, fulfillment_info, images, audience, color_info, promotions,
    publish_time, retrievable_fields, categories, brands, conditions, sizes,
    collection_member_ids, tags, materials, patterns),
    id as sku,
    price_info.price as price_info_price,
    price_info.currency_code as price_info_currency_code,
    price_info.cost as price_info_cost,
    FROM `RDM_PRODUCT_TABLE`
    
  2. SQL コードサンプルをコピーします。

  3. Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  4. 目的の商品テーブルとユーザー イベント テーブルを含むプロジェクトを選択します(まだ選択していない場合)。

  5. [エディタ] ペインに、SQL コードサンプルを貼り付けます。

  6. [ 実行] をクリックし、クエリの実行が完了するまで待ちます。

新しい処理済み商品テーブルが、processed_product_table 変数を使用して設定した BigQuery 内の場所に書き込まれます。

イベント予測テーブルを作成する

このセクションの SQL コードによって、ユーザー イベント テーブルで少なくとも 1 回販売された各 SKU が抽出されます。このコードにより、未来のすべてのタイムスタンプにわたって抽出されたすべての SKU を含むイベント予測テーブルが作成されます。未来のタイムスタンプは、ユーザー イベント テーブルの最終週 + 1 週から、ユーザー イベント テーブルの最終週 + future_length 週にわたる継続的な週単位のタイムスタンプの配列です。future_length の値には、モデルに予測して欲しい未来の週数を設定します。イベント予測テーブルの各行は、SKU とタイムスタンプで一意に識別できます。

イベント予測テーブルを作成するには:

  1. 次の SQL サンプルコードの変数を次のように置き換えます。

    • starting_day_of_week。週の開始曜日。有効な値: MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table。BigQuery にエクスポートしたユーザー イベント テーブルのプロジェクト ID、データセット ID、テーブル ID。形式は project_id.dataset_id.table_id です。

    • events_prediction_table。新しいイベント予測テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID を使用します。既存のデータセットの ID を使用します。テーブル ID を指定します。ただし、上書きする場合を除き、既存のテーブルの ID は使用しないでください。形式は project_id.dataset_id.table_id です。

    • rdm_product_table。BigQuery にエクスポートした商品テーブルのプロジェクト ID、データセット ID、テーブル ID。形式は project_id.dataset_id.table_id です。

    • future_length。モデルが予測する、ユーザー イベント テーブルの最終週からの未来の週数。

  2. SQL コードサンプルをコピーします。

  3. Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  4. 目的の商品テーブルとユーザー イベント テーブルを含むプロジェクトを選択します(まだ選択していない場合)。

  5. [エディタ] ペインに、SQL コードサンプルを貼り付けます。

  6. [ 実行] をクリックし、クエリの実行が完了するまで待ちます。

新しいイベント予測テーブルが、events_prediction_table 変数を使用して設定した BigQuery 内の場所に書き込まれます。

Vertex AI トレーニング テーブルを作成する

このセクションの SQL コードによって、集計済み販売テーブルが処理済み商品テーブルと結合されます。結果として、Vertex AI がモデルのトレーニングに使用する Vertex AI トレーニング テーブルが得られます。

Vertex AI トレーニング テーブルを作成するには:

  1. 次の SQL サンプルコードの変数を次のように置き換えます。

    • vertex_ai_training_table。新しい Vertex AI トレーニング テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID を使用します。既存のデータセットの ID を使用します。テーブル ID を指定します。ただし、上書きする場合を除き、既存のテーブルの ID は使用しないでください。形式は project_id.dataset_id.table_id です。

    • aggregated_sales_table集計済み販売テーブルを作成するで作成した集計済み販売テーブルの BigQuery のプロジェクト ID、データセット ID、テーブル ID。

    • processed_product_table商品テーブルを処理するで作成した、処理済み商品テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。

    CREATE OR REPLACE TABLE `VERTEX_AI_TRAINING_TABLE` AS
    SELECT t1.*, t2.* EXCEPT(sku) FROM `AGGREGATED_SALES_TABLE` AS t1
    LEFT
    JOIN `PROCESSED_PRODUCT_TABLE` AS t2 ON t1.sku = t2.sku
    
  2. SQL コードサンプルをコピーします。

  3. Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  4. 目的の商品テーブルとユーザー イベント テーブルを含むプロジェクトを選択します(まだ選択していない場合)。

  5. [エディタ] ペインに、SQL コードサンプルを貼り付けます。

  6. [ 実行] をクリックし、クエリの実行が完了するまで待ちます。

新しい Vertex AI トレーニング テーブルが、vertex_ai_training_table 変数を使用して設定した BigQuery 内の場所に書き込まれます。

Vertex AI 予測テーブルを作成する

このセクションの SQL コードによって、イベント予測テーブルが集計済み販売テーブルに追加され、さらに処理済み商品テーブルと結合されます。結果として、Vertex AI 予測テーブルが得られます。このテーブルは予測の作成に使用されるものです。

Vertex AI 予測テーブルを作成するには:

  1. 次の SQL サンプルコードの変数を次のように置き換えます。

    • vertex_ai_prediction_table。新しい Vertex AI 予測テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID、データセット ID を使用します。上書きする場合を除き、既存のテーブルの ID は使用しないでください。形式は project_id.dataset_id.table_id です。

    • aggregated_sales_table集計済み販売テーブルを作成するで作成した集計済み販売テーブルの BigQuery のプロジェクト ID、データセット ID、テーブル ID。

    • processed_product_table商品テーブルを処理するで作成した、処理済み商品テーブル用の BigQuery のプロジェクト ID、データセット ID、テーブル ID。

    • events_prediction_tableイベント予測テーブルを作成するで作成したイベント予測テーブルのプロジェクト ID、データセット ID、テーブル ID。

    CREATE OR REPLACE TABLE `VERTEX_AI_PREDICTION_TABLE` AS
    WITH append_predict_to_history AS (
      SELECT add_to_cart_quantity, category_page_view_quantity,
      detail_page_view_quantity, last_day_of_week, quantity, search_quantity, sku
      FROM `AGGREGATED_SALES_TABLE` UNION ALL SELECT NULL AS
      add_to_cart_quantity, NULL AS category_page_view_quantity, NULL AS
      detail_page_view_quantity, last_day_of_week, NULL AS quantity, NULL AS
      search_quantity, sku FROM `EVENTS_PREDICTION_TABLE`
    )
    SELECT t1.*, t2.* EXCEPT(sku) FROM append_predict_to_history AS t1 LEFT JOIN
    `PROCESSED_PRODUCT_TABLE` AS t2 ON t1.sku = t2.sku
    
  2. SQL コードサンプルをコピーします。

  3. Google Cloud コンソールで [BigQuery] ページを開きます。

    [BigQuery] ページに移動

  4. 目的の商品テーブルとユーザー イベント テーブルを含むプロジェクトを選択します(まだ選択していない場合)。

  5. [エディタ] ペインに、SQL コードサンプルを貼り付けます。

  6. [ 実行] をクリックし、クエリの実行が完了するまで待ちます。

新しい Vertex AI 予測テーブルが、vertex_ai_prediction_table 変数を使用して設定した BigQuery 内の場所に書き込まれます。

Vertex AI データセットを作成する

このセクションでは、予測モデルのトレーニングに使用できる Vertex AI データセットを作成する方法を説明します。詳細については、Vertex AI ドキュメントの予測モデルをトレーニングするためのデータセットを作成するをご覧ください。

Vertex AI データセットを作成するには:

  1. Google Cloud コンソールの [Vertex AI] セクションで、[データセット] ページに移動します。

    [データセット] ページに移動

  2. [作成] をクリックして [データセットを作成] ページを開きます。

  3. [データセット名] フィールドに、新しいデータセットの名前を入力します。

  4. [表形式] タブを選択します。

  5. 予測目標を選択します。

  6. [リージョン] リストで、データセットの作成時に小売データを BigQuery にエクスポートする際に使用したリージョンを選択します。BigQuery データセットの作成時に us を選択した場合は、米国内の任意のリージョンを選択できます。同様に、BigQuery データセットの作成時に eu を選択した場合、欧州連合の任意のリージョンを選択できます。詳細については、BigQuery にデータをエクスポートするをご覧ください。

  7. [作成] をクリックして空のデータセットを作成し、[ソース] タブに進みます。

  8. [テーブルまたはビューを BigQuery から選択] をオンにします。

  9. [テーブルまたはビューを BigQuery から選択] に、Vertex AI トレーニング テーブルを作成するで作成した Vertex AI トレーニング テーブルのプロジェクト ID、データセット ID、テーブル ID を入力します。形式は project_id.dataset_id.table_id です。

  10. [続行] をクリックします。

    データソースはデータセットに関連付けられます。

  11. [分析] タブの [時系列の識別子列] リストで [sku] を選択し、[タイムスタンプ列] のリストで [last_day_of_week] を選択します。

  12. [新しいモデルのトレーニング] をクリックして、[新しいモデルのトレーニング] ページに移動します。モデルのトレーニングの手順については、予測モデルをトレーニングするをご覧ください。

予測モデルをトレーニングする

このセクションでは、Vertex AI データセットを作成するで作成したデータセットを使用して、予測モデルをトレーニングする方法について説明します。詳細については、Vertex AI のドキュメントの予測モデルをトレーニングするをご覧ください。

始める前に

予測モデルをトレーニングするには、Vertex AI データセットを作成する必要があります。

モデルのトレーニング

  1. [トレーニング方法] ページで、モデルのトレーニング方法を選択します。トレーニング方法については、Vertex AI ドキュメントのモデルのトレーニングをご覧ください。

    [続行] をクリックします。

  2. [モデルの詳細] ページで、次のように構成します。

    1. [新しいモデルのトレーニング] を選択します(まだ選択されていない場合)。

    2. 新しいモデルの名前を入力します。

    3. [ターゲット列] リストから [数量(整数)] を選択します。

    4. [データの粒度] リストから [毎週] を選択します。

    5. [Context window] と [Forecast horizon] を入力します。

      [予測ホライズン] により、予測データの各行のターゲット値について、モデルがどの程度の未来の期間を予測するかが決まります。[予測ホライズン] は [データ粒度] の単位で指定されます。

      [コンテキスト期間] には、トレーニング時(および予測用)にモデルのルックバック期間を設定します。つまり、各トレーニング データポイントにおいて、コンテキスト期間の設定によってモデルが予測パターンをどの程度の期間さかのぼるかが決まります。[コンテキスト期間] を指定しない場合、デフォルトで [予測ホライズン] に設定された値が使用されます。[コンテキスト期間] は [データの粒度] の単位で指定されます。

      詳細については、Vertex AI ドキュメントのコンテキスト期間と予測ホライズンを設定する際の考慮事項をご覧ください。

    6. [続行] をクリックします。

  3. [トレーニング オプション] ページで、次のように構成します。 プルダウン矢印がグレーの場合、またはプルダウン矢印がない場合は、その値を変更できません。

    1. 次のように、[列名] リストの列に [変換] の値を選択します。

      • [BigQuery の型] の値が [浮動小数点数]、[整数]、または [数値] の場合、[変換] の値を [数値] に設定します。

      • [BigQuery の型] の値が [文字列] または [ブール値] の場合、[変換] の値を [カテゴリ] に設定します。

      • [BigQuery の型] の値が [日付] の場合、[変換] の値を [タイムスタンプ] に設定します。

    2. 次のように、[列名] リストの列に [特徴タイプ] の値を選択します。

      • add_to_cart_quantitycategory_page_view_quantitydetail_page_view_quantitysearch_quantity について、[特徴タイプ] の値を [共変量] に設定します。

      • 残りの列のうち、変更可能な列の [特徴タイプ] を [属性] に設定します。

    3. 次のように [列の型] リストの列の [予測時に利用可能] の値を選択します。

      • add_to_cart_quantitycategory_page_view_quantitydetail_page_view_quantitysearch_quantity について、[予測時の可用性] の値を [利用不可] に設定します。

      • 残りの列のうち、変更可能な列の [特徴タイプ] の値を [利用可能] に設定します。

    4. [続行] をクリックします。

  4. [コンピューティングと料金] ページで、モデルのトレーニングの最大時間数を入力します。この設定により、トレーニング費用に上限を設定できます。新しいモデルの作成には他のオペレーションも必要なため、実際の経過時間がこの値より長くなることがあります。高品質のモデルをトレーニングするために必要な時間については、Vertex AI ドキュメントのモデルのトレーニングをご覧ください。

  5. [トレーニングを開始] をクリックします。

    データのサイズ、複雑さ、トレーニング予算(指定した場合)に応じて、モデルのトレーニングに何時間もかかることがあります。このタブを閉じて、後で戻ることもできます。モデルのトレーニングが完了すると、メールが送られてきます。モデルのトレーニングの進行状況をモニタリングする場合は、トレーニングの進行状況をモニタリングするをご覧ください。

トレーニングの進捗状況を確認する

  1. Google Cloud コンソールの Vertex AI セクションで、[トレーニング] ページに移動します。

    [トレーニング] ページに移動

  2. まだ選択していない場合は、[トレーニング パイプライン] タブを選択します。トレーニングするモデルがリストに含まれているはずです。ステータスが [トレーニング] から [完了] に変わると、トレーニングは終了です。

予測を作成する

このページでは、予測モデルをトレーニングするでトレーニングした予測モデルを使用して予測を作成する方法を説明します。

始める前に

予測を作成する前に、予測モデルをトレーニングする必要があります。

モデルにバッチ予測リクエストを行う

  1. Google Cloud コンソールの [Vertex AI] セクションで、[バッチ予測] ページに移動します。

    [バッチ予測] ページに移動

  2. [作成] をクリックして [新しいバッチ予測] ウィンドウを開き、次の操作を行います。

    1. バッチ予測の名前を入力します。

    2. [モデル名] リストで、予測モデルをトレーニングするでトレーニングしたモデルを選択します。

    3. [バージョン] リストで、モデルのバージョンを選択します。

    4. [ソースの選択] で次の操作を行います。

      1. [BigQuery テーブル] がまだ選択されていない場合は選択します。

      2. Vertex AI 予測テーブルを作成するで作成した Vertex AI 予測テーブルの BigQuery のプロジェクト ID、データセット ID、テーブル ID を入力します。形式は project_id.dataset_id.table_id です。

    5. [バッチ予測の出力] で次の操作を行います。

      1. [出力形式] リストで、[BigQuery テーブル] を選択します。

      2. 作成するバッチ予測出力テーブル用の BigQuery のプロジェクト ID とデータセット ID を入力します。商品テーブルとユーザー イベント テーブルで同じプロジェクト ID、データセット ID を使用します。形式は project_id.dataset_id. です。

    6. [CREATE] をクリックします。[バッチ予測] ページが表示されます。

      ステータスが [保留中] から [完了] に変わると、予測は終了です。バッチ予測が完了するとメールも届きます。バッチ予測リクエストの出力は、指定した BigQuery プロジェクトのデータセットに返されます。新しい出力テーブルの名前は、「predictions_」に予測ジョブの開始時のタイムスタンプが付加されたものになります。予測結果の取得と解釈の詳細については、Vertex AI ドキュメントのバッチ予測結果の取得予測結果の解釈をご覧ください。