使用 TimesFM 多變數模型預測多個時間序列

本教學課程說明如何使用 BigQuery ML 內建的 AI.FORECAST 函式和 TimesFM 3.0 模型,對多個時間序列執行多元預測。多元預測功能會納入影響目標的其他變數 (共變數),有助於提高預測準確度。

指定 ID 欄後,您就能同時為多個不同的實體產生預測。本教學課程會示範如何納入歷來的行程距離資料 (即過去的共變數),預測紐約市不同上車區域的計程車行程和車資。

目標

  • 準備多個時間序列的統一資料集。
  • 使用 AI.FORECAST 函式和 TimesFM 3.0 模型,為紐約計程車資料生成預測結果。

費用

本教學課程使用的 Google Cloud計費元件包括:

  • BigQuery
  • BigQuery ML

詳情請參閱「BigQuery 定價」和「BigQuery ML 定價」一文。

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 如果尚未啟用 BigQuery API,請啟用。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

    新專案會自動啟用 BigQuery API。

必要的角色

如要取得完成本教學課程中工作所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備完成本教學課程中工作所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要完成本教學課程中的工作,必須具備下列權限:

  • 建立資料集: bigquery.datasets.create
  • 建立模型:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • 執行推論:
    • bigquery.models.getData
    • bigquery.jobs.create

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱「IAM 簡介」。

準備輸入資料

其他多元模型可能需要分別使用資料表來儲存歷史和未來共變數,但 AI.FORECAST 搭配 TimesFM 3.0 使用的 函式只需要單一輸入資料表或查詢。

如要預測多個時間序列,資料必須包含一或多個 ID 欄,將資料分成不同的時間序列。在本例中,一個時間序列包含取貨地點 132 (甘迺迪國際機場) 的資料,另一個時間序列則包含取貨地點 138 (拉瓜迪亞機場) 的資料。請確認每個個別時間序列的資料符合下列規定:

  • 歷史資料列:包含時間戳記、目標和過去共變數的非空值。

由於這個範例未使用未來共變數,輸入查詢只需要提供歷來資料。輸入表格必須包含下列資料欄:

  • 計程車行程的日期。
  • 上車地點:132 或 138。
  • 該日行程數。這是目標資料欄。
  • 該日期的平均票價金額。這是目標資料欄。
  • 當天的平均行程距離。這是預測中使用的共變量資料欄。

預測多個多變數時間序列

下列查詢會預測 JFK 和拉瓜迪亞機場接送區未來 14 天的每日行程數量和平均車資。這會將 past_cov_avg_distance 定義為僅在歷史上為人所知的特徵。您必須提供 id_cols 引數,模型才能知道如何區隔不同的時間序列。

如要使用 TimesFM 3.0 模型預測資料,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中貼入下列查詢,然後點選「執行」:

    SELECT
      pickup_location_id,
      FORMAT_DATE("%Y-%m-%d", pickup_date) AS pickup_date,
      # Extract the forecast value and prediction intervals for the number of trips target
      target_num_trips.value AS forecasted_num_trips,
      target_num_trips.prediction_interval_lower_bound AS num_trips_lower,
      target_num_trips.prediction_interval_upper_bound AS num_trips_upper,
      # Extract the forecast value and prediction intervals for the average fare target
      target_avg_fare.value AS forecasted_avg_fare,
      target_avg_fare.prediction_interval_lower_bound AS avg_fare_lower,
      target_avg_fare.prediction_interval_upper_bound AS avg_fare_upper
    FROM AI.FORECAST(
      (
        SELECT
          DATE(pickup_datetime) AS pickup_date,
          pickup_location_id,
          COUNT(*) AS target_num_trips,
          AVG(fare_amount) AS target_avg_fare,
          AVG(trip_distance) AS past_cov_avg_distance
        FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022`
        WHERE pickup_datetime >= "2022-01-01" AND pickup_datetime < "2022-04-01"
          AND pickup_location_id IN ("132", "138") -- JFK and LaGuardia Airports
        GROUP BY 1, 2
      ),
      model => "TimesFM 3.0",
      target_cols => ["target_num_trips", "target_avg_fare"],
      past_covariate_cols => ["past_cov_avg_distance"],
      timestamp_col => "pickup_date",
      id_cols => ["pickup_location_id"],
      horizon => 14
    )
    ORDER BY pickup_date;
    

結果大致如下,為求明確,值已四捨五入:

+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| pickup_location_id | pickup_date | forecasted_num_trips | num_trips_lower | num_trips_upper | forecasted_avg_fare | avg_fare_lower | avg_fare_upper |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 132                | 2022-04-01  | 5240                 | 4633            | 5842            | 47                  | 46             | 48             |
| 138                | 2022-04-01  | 3451                 | 2848            | 4008            | 32                  | 31             | 34             |
| ...                | ...         | ...                  | ...             | ...             | ...                 | ...            | ...            |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+

結果會顯示 JFK 和拉瓜迪亞機場上車區未來 14 天的預測行程數和平均車資。結果也會顯示每個預測值的 95% 預測區間下限和上限。

清除所用資源

為避免因為本教學課程所用資源,導致系統向 Google Cloud 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。

刪除專案

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

後續步驟