本教學課程說明如何使用 BigQuery ML 內建的 AI.FORECAST 函式和 TimesFM 3.0 模型,對多個時間序列執行多元預測。多元預測功能會納入影響目標的其他變數 (共變數),有助於提高預測準確度。
指定 ID 欄後,您就能同時為多個不同的實體產生預測。本教學課程會示範如何納入歷來的行程距離資料 (即過去的共變數),預測紐約市不同上車區域的計程車行程和車資。
目標
- 準備多個時間序列的統一資料集。
- 使用
AI.FORECAST函式和TimesFM 3.0模型,為紐約計程車資料生成預測結果。
費用
本教學課程使用的 Google Cloud計費元件包括:
- BigQuery
- BigQuery ML
詳情請參閱「BigQuery 定價」和「BigQuery ML 定價」一文。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
如果尚未啟用 BigQuery API,請啟用。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。新專案會自動啟用 BigQuery API。
必要的角色
如要取得完成本教學課程中工作所需的權限,請要求管理員授予您下列 IAM 角色:
-
建立資料集:
BigQuery 資料編輯器 (
roles/bigquery.dataEditor) -
建立模型:
- BigQuery 資料編輯者 (
roles/bigquery.dataEditor) - BigQuery 工作使用者 (
roles/bigquery.jobUser)
- BigQuery 資料編輯者 (
-
執行推論:
- BigQuery 資料編輯者 (
roles/bigquery.dataEditor) - BigQuery 工作使用者 (
roles/bigquery.jobUser)
- BigQuery 資料編輯者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備完成本教學課程中工作所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要完成本教學課程中的工作,必須具備下列權限:
-
建立資料集:
bigquery.datasets.create -
建立模型:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
執行推論:
-
bigquery.models.getData -
bigquery.jobs.create
-
準備輸入資料
其他多元模型可能需要分別使用資料表來儲存歷史和未來共變數,但 AI.FORECAST 搭配 TimesFM 3.0 使用的 函式只需要單一輸入資料表或查詢。
如要預測多個時間序列,資料必須包含一或多個 ID 欄,將資料分成不同的時間序列。在本例中,一個時間序列包含取貨地點 132 (甘迺迪國際機場) 的資料,另一個時間序列則包含取貨地點 138 (拉瓜迪亞機場) 的資料。請確認每個個別時間序列的資料符合下列規定:
- 歷史資料列:包含時間戳記、目標和過去共變數的非空值。
由於這個範例未使用未來共變數,輸入查詢只需要提供歷來資料。輸入表格必須包含下列資料欄:
- 計程車行程的日期。
- 上車地點:132 或 138。
- 該日行程數。這是目標資料欄。
- 該日期的平均票價金額。這是目標資料欄。
- 當天的平均行程距離。這是預測中使用的共變量資料欄。
預測多個多變數時間序列
下列查詢會預測 JFK 和拉瓜迪亞機場接送區未來 14 天的每日行程數量和平均車資。這會將 past_cov_avg_distance 定義為僅在歷史上為人所知的特徵。您必須提供 id_cols 引數,模型才能知道如何區隔不同的時間序列。
如要使用 TimesFM 3.0 模型預測資料,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中貼入下列查詢,然後點選「執行」:
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 帳戶收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
後續步驟
- 如要瞭解 BigQuery ML 總覽,請參閱「BigQuery 中的 AI 和機器學習簡介」。
- 瞭解如何使用 TimesFM 單變數模型預測單一或多個時間序列。
- 瞭解如何使用 TimesFM 多變數模型預測單一時間序列。