根據電子商務資料產生銷售預測

本頁提供相關指引,說明如何根據匯出至 BigQuery 的零售資料,從 Vertex AI 取得預測結果。我們提供多個 SQL 程式碼區塊,協助您將零售產品和使用者事件資料轉換為 Vertex AI 可用的格式。這些程式碼區塊後方會列出 Vertex AI 控制台的程序,說明如何建立資料集、訓練模型,然後產生預測。

事前準備

如要使用零售資料產生銷售預測,請務必先完成下列事項:

  • 使用商家適用的 Vertex AI Search 上傳零售資料。詳情請參閱:

  • 將商家適用的 Vertex AI Search 零售資料匯出至 BigQuery。這樣一來,BigQuery 中就會有產品資料表和使用者事件資料表,您可以在後續程序中使用這些資料表。詳情請參閱將資料匯出至 BigQuery

    或者,如果產品和使用者事件資料已在 BigQuery 中,在 Vertex AI Search for commerce 格式中,您可以使用該資料從零售資料產生銷售預測。在這種情況下,您不需要上傳零售資料並匯出至 BigQuery。如要進一步瞭解格式,請參閱「產品結構定義」和「關於使用者事件」。

  • 請確認您已獲得 roles/aiplatform.user IAM 角色,以便使用 Vertex AI 控制台執行程序。

建立匯總銷售資料表

本節中的 SQL 程式碼會將使用者事件資料表轉換為匯總銷售資料表。也就是說,使用者事件表格中每個至少售出一次的產品,都會匯總每週的銷售量。此外,SQL 程式碼還會執行下列作業:

  • 在使用者事件表格中,如果產品首次銷售和最後一次銷售之間缺少任何時間戳記,系統會為每個缺少的時間戳記填入新的資料列,並將銷售量設為零。這樣才能避免銷售記錄出現缺漏。

  • 如果使用者事件資料表中沒有至少一個產品具有至少 20 個時間戳記,系統會從資料表中隨機選擇一個產品,並填入足夠的資料列 (每列的銷售量皆為零),以達到 20 個時間戳記。這是為了配合 Vertex AI 的規定,訓練模型時至少要有 20 個時間戳記。

如要建立匯總銷售資料表,請按照下列步驟操作:

  1. 請按照下列方式,替換下列 SQL 範例程式碼中的變數:

    • starting_day_of_week. 一週的開始日。有效值:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table. 您匯出至 BigQuery 的使用者事件資料表專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

    • rdm_product_table。匯出至 BigQuery 的產品資料表專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

    • aggregated_sales_table。新匯總銷售資料表的 BigQuery 專案、資料集和資料表 ID。使用與產品和使用者事件資料表相同的專案 ID。使用現有資料集的 ID。指定資料表 ID,但請勿使用現有資料表的 ID,除非您要覆寫該資料表。格式為 project_id.dataset_id.table_id

  2. 複製 SQL 程式碼範例。

  3. 在 Google Cloud 控制台中開啟 BigQuery 頁面。

    前往 BigQuery 頁面

  4. 如果尚未選取,請選取包含產品和使用者事件資料表的專案。

  5. 在「Editor」(編輯器) 窗格中,貼上 SQL 程式碼範例。

  6. 按一下 「執行」,然後等待查詢執行完畢。

新的匯總銷售資料表會寫入 BigQuery 中您使用 aggregated_sales_table 變數設定的位置。

處理產品表格

本節中的 SQL 程式碼會對匯出至 BigQuery 的產品資料表執行動作,移除重複和結構體欄位,並將 price_info 欄位取消巢狀結構,改為子欄位。這是必要步驟,因為 Vertex AI 不接受清單或巢狀結構。系統就會產生處理後的產品資料表。

如要處理產品表格,請按照下列步驟操作:

  1. 請按照下列方式,替換下列 SQL 範例程式碼中的變數:

    • rdm_product_table。匯出至 BigQuery 的產品資料表專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

    • processed_product_table。BigQuery 中新處理產品資料表的專案、資料集和資料表 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. 在「Editor」(編輯器) 窗格中,貼上 SQL 程式碼範例。

  6. 按一下 「執行」,然後等待查詢執行完畢。

新的處理後產品資料表會寫入 BigQuery 中,您使用 processed_product_table 變數設定的位置。

建立事件預測資料表

本節中的 SQL 程式碼會從使用者事件表格中,擷取至少售出一次的每個 SKU。這段程式碼會建立事件預測資料表,其中包含未來所有時間戳記中擷取的所有 SKU。未來的時間戳記是連續每週的時間戳記陣列,從使用者事件表格的最後一週 + 1 週開始,到使用者事件表格的最後一週 + future_length 週結束。您將 future_length 值設為模型要預測的未來週數。事件預測資料表中的每一列都可以透過 SKU 和時間戳記進行專屬識別。

如要建立事件預測資料表,請按照下列步驟操作:

  1. 請按照下列方式,替換下列 SQL 範例程式碼中的變數:

    • starting_day_of_week. 一週的開始日。有效值:MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

    • rdm_user_event_table. 您匯出至 BigQuery 的使用者事件資料表的專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

    • events_prediction_table。新事件預測資料表在 BigQuery 中的專案、資料集和資料表 ID。使用與產品和使用者事件資料表相同的專案 ID。使用現有資料集的 ID。指定資料表 ID,但請勿使用現有資料表的 ID,除非您要覆寫該資料表。格式為 project_id.dataset_id.table_id

    • rdm_product_table。匯出至 BigQuery 的產品資料表專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

    • future_length。模型將預測使用者事件表格最後一週之後的週數。

  2. 複製 SQL 程式碼範例。

  3. 在 Google Cloud 控制台中開啟 BigQuery 頁面。

    前往 BigQuery 頁面

  4. 如果尚未選取,請選取包含產品和使用者事件資料表的專案。

  5. 在「Editor」(編輯器) 窗格中,貼上 SQL 程式碼範例。

  6. 按一下 「執行」,然後等待查詢執行完畢。

新的事件預測資料表會寫入 BigQuery 中,位置是您使用 events_prediction_table 變數設定的位置。

建立 Vertex AI 訓練資料表

本節中的 SQL 程式碼會將匯總銷售資料表與處理過的產品資料表彙整。結果會是 Vertex AI 訓練資料表,Vertex AI 會使用這份資料表訓練模型。

如要建立 Vertex AI 訓練資料表,請按照下列步驟操作:

  1. 請按照下列方式,替換下列 SQL 範例程式碼中的變數:

    • vertex_ai_training_table. BigQuery 中新 Vertex AI 訓練資料表的專案、資料集和資料表 ID。使用與產品和使用者事件資料表相同的專案 ID。使用現有資料集的 ID。指定資料表 ID,但除非您要覆寫現有資料表,否則請勿使用現有資料表的 ID。格式為 project_id.dataset_id.table_id

    • aggregated_sales_table。在 BigQuery 中,匯總銷售資料表的專案、資料集和資料表 ID (您在「建立匯總銷售資料表」中建立)。

    • processed_product_table。已處理產品資料表的 BigQuery 專案、資料集和資料表 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. 在「Editor」(編輯器) 窗格中,貼上 SQL 程式碼範例。

  6. 按一下 「執行」,然後等待查詢執行完畢。

新的 Vertex AI 訓練表格會寫入 BigQuery 中您使用 vertex_ai_training_table 變數設定的位置。

建立 Vertex AI 預測資料表

這個部分的 SQL 程式碼會將事件預測資料表附加至匯總銷售資料表,然後與處理過的產品資料表彙整。結果是 Vertex AI 預測資料表,用於建立預測

如要建立 Vertex AI 預測資料表,請按照下列步驟操作:

  1. 請按照下列方式,替換下列 SQL 範例程式碼中的變數:

    • vertex_ai_prediction_table. 新 Vertex AI 預測資料表的 BigQuery 專案、資料集和資料表 ID。使用與產品和使用者事件資料表相同的專案 ID 和資料集 ID。除非要覆寫現有資料表,否則請勿使用現有資料表的 ID。格式為 project_id.dataset_id.table_id

    • aggregated_sales_table。BigQuery 中匯總銷售資料表的專案、資料集和資料表 ID,您已在「建立匯總銷售資料表」中建立這些項目。

    • processed_product_table。已處理產品資料表的 BigQuery 專案、資料集和資料表 ID,您已在「處理產品資料表」中建立這些 ID。

    • events_prediction_table。BigQuery 中事件預測資料表的專案、資料集和資料表 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. 在「Editor」(編輯器) 窗格中,貼上 SQL 程式碼範例。

  6. 按一下 「執行」,然後等待查詢執行完畢。

新的 Vertex AI 預測資料表會寫入 BigQuery 中,您使用 vertex_ai_prediction_table 變數設定的位置。

建立 Vertex AI 資料集

本節說明如何建立 Vertex AI 資料集,用於訓練預測模型。詳情請參閱 Vertex AI 說明文件中的「建立用於訓練預測模型的資料集」。

如要建立 Vertex AI 資料集,請按照下列步驟操作:

  1. 在 Google Cloud 控制台,依序前往「Vertex AI」專區和「Dataset」頁面。

    前往「資料集」頁面

  2. 按一下「建立」,開啟「建立資料集」頁面。

  3. 在「資料集名稱」欄位中,輸入新資料集的名稱。

  4. 選取「表格式」分頁標籤。

  5. 選取「預測」目標。

  6. 在「區域」清單中,選取您建立資料集時使用的區域,以便將零售資料匯出至 BigQuery。如果您在建立 BigQuery 資料集時選取 us,可以選取美國境內的任何區域。同樣地,如果您在建立 BigQuery 資料集時選取 eu,則可以選取歐盟境內的任何區域。詳情請參閱「將資料匯出至 BigQuery」。

  7. 按一下「建立」建立空白資料集,然後前往「來源」分頁。

  8. 選取「從 BigQuery 選取資料表或檢視表」

  9. 在「Select a table or view from BigQuery」(從 BigQuery 選取資料表或檢視畫面) 下方,輸入您在「建立 Vertex AI 訓練資料表」中建立的 Vertex AI 訓練資料表專案、資料集和資料表 ID。格式為 project_id.dataset_id.table_id

  10. 按一下「繼續」

    資料來源已與資料集建立關聯。

  11. 在「分析」分頁中,依序選取「系列 ID 欄」清單中的「sku」和「時間戳記欄」清單中的「last_day_of_week」

  12. 按一下「訓練新模型」,前往「訓練新模型」頁面。如需訓練模型的說明,請參閱「訓練預測模型」。

訓練預測模型

本節說明如何使用您在「建立 Vertex AI 資料集」中建立的資料集,訓練預測模型。詳情請參閱 Vertex AI 說明文件中的「訓練預測模型」。

事前準備

訓練預測模型前,請先建立 Vertex AI 資料集

訓練模型

  1. 在「訓練方法」頁面中,選取模型訓練方法。如要瞭解訓練方法,請參閱 Vertex AI 說明文件中的「訓練模型」。

    按一下「繼續」

  2. 在「Model details」(模型詳細資料) 頁面中,按照下列方式設定:

    1. 如果尚未選取「訓練新模型」,請選取此項目。

    2. 輸入新模型的名稱。

    3. 從「目標資料欄」清單中選取「數量 (整數)」

    4. 從「資料精細程度」清單中選取「每週」

    5. 輸入「背景資訊視窗」和「預測範圍」

      預測範圍會決定模型預測預測資料每列目標值的未來時間長度。預測期間是以資料精細度為單位指定。

      「情境視窗」會設定模型在訓練期間 (和預測期間) 的回溯時間範圍。換句話說,對於每個訓練資料點,內容視窗會決定模型要回溯多遠,才能找出預測模式。如未指定背景區間,系統會預設為預測期間設定的值。「背景期間」是以「資料精細程度」為單位指定。

      詳情請參閱 Vertex AI 說明文件中的「設定內容視窗和預測範圍的注意事項」。

    6. 按一下「繼續」

  3. 在「訓練選項」頁面中,按照下列方式設定。請注意,如果 下拉式箭頭為灰色,或沒有下拉式箭頭,表示該值無法變更。

    1. 在「資料欄名稱」清單中,為資料欄選取「轉換」值,如下所示:

      • 如果「BigQuery 型別」值為「Float」、「Integer」或「Numeric」,請將「轉換」值設為「Numeric」

      • 如果「BigQuery 型別」值為「字串」或「布林值」,請將「轉換」值設為「類別」

      • 如果「BigQuery 類型」值為「Date」,請將「轉換」值設為「Timestamp」

    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」專區和「Training」頁面。

    前往「訓練」頁面

  2. 如果尚未選取,請選取「訓練管道」分頁標籤。您訓練的模型應會列於清單中。狀態從「訓練中」變更為「已完成」,即表示訓練完成。

建立預測

本頁面說明如何使用您在「訓練預測模型」中訓練的預測模型建立預測。

事前準備

您必須先訓練預測模型,才能建立預測。

向模型提出批次預測要求

  1. 在 Google Cloud 控制台的 Vertex AI 專區下方,前往「Batch predictions」(批次預測) 頁面。

    前往「批次預測」頁面

  2. 按一下「建立」開啟「New batch prediction」(新的批次預測) 視窗,然後完成下列步驟:

    1. 輸入批次預測的名稱。

    2. 在「模型名稱」清單中,選取您在「訓練預測模型」中訓練的模型。

    3. 在「Version」清單中,選取模型版本。

    4. 在「選取來源」下方:

      1. 如果尚未選取「BigQuery 資料表」,請選取此項目。

      2. 在 BigQuery 中輸入專案、資料集和資料表 ID,以存取您在「建立 Vertex AI 預測資料表」一節中建立的 Vertex AI 預測資料表。格式為 project_id.dataset_id.table_id

    5. 在「批次預測輸出內容」下方:

      1. 在「輸出格式」清單中,選取「BigQuery 資料表」

      2. 在 BigQuery 中輸入專案和資料集 ID,以建立批次預測輸出資料表。使用與產品和使用者事件資料表相同的專案 ID 和資料集 ID。格式為 project_id.dataset_id.

    6. 點選「建立」。「Batch predictions」(批次預測) 頁面隨即顯示。

      狀態從「Pending」(待處理)變更為「Finished」(已完成) 時,表示預測已完成。批次預測完成時,您也會收到電子郵件通知。批次預測要求的輸出內容會傳回至您指定的 BigQuery 專案資料集。新輸出資料表的名稱為「predictions_」,並附加預測工作開始時間的時間戳記。如要進一步瞭解如何擷取及解讀預測結果,請參閱 Vertex AI 說明文件中的「擷取批次預測結果」和「解讀預測結果」。