Questo tutorial ti insegna a eseguire previsioni multivariate su
più serie temporali utilizzando la
funzione AI.FORECAST
con il TimesFM 3.0 modello
integrato in BigQuery ML. La previsione
multivariata ti aiuta a migliorare l'accuratezza delle previsioni incorporando altre variabili
(covariate) che influenzano il target.
Se specifichi le colonne identificatore, puoi generare previsioni per più entità distinte contemporaneamente. Questo tutorial mostra come prevedere le corse e le tariffe dei taxi di New York per diverse zone di partenza incorporando i dati storici sulla distanza delle corse, che sono una covariata passata.
Obiettivi
- Prepara un set di dati unificato per più serie temporali.
- Genera previsioni per i dati dei taxi di New York utilizzando la funzione
AI.FORECASTcon il modelloTimesFM 3.0.
Costi
Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per saperne di più, consulta le pagine relative ai prezzi di BigQuery e ai prezzi di BigQuery ML.
Prima di iniziare
-
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.
-
Abilita l'API BigQuery, se non è già abilitata.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.Per i nuovi progetti, l'API BigQuery viene abilitata automaticamente.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare le attività di questo tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Crea il set di dati:
Editor dati BigQuery (
roles/bigquery.dataEditor) -
Crea il modello:
- Editor dati BigQuery (
roles/bigquery.dataEditor) - Utente job BigQuery (
roles/bigquery.jobUser)
- Editor dati BigQuery (
-
Esegui l'inferenza:
- Editor dati BigQuery (
roles/bigquery.dataEditor) - Utente job BigQuery (
roles/bigquery.jobUser)
- Editor dati BigQuery (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per completare le attività di questo tutorial. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per completare le attività di questo tutorial sono richieste le seguenti autorizzazioni:
-
Crea il set di dati:
bigquery.datasets.create -
Crea il modello:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
Esegui l'inferenza:
-
bigquery.models.getData -
bigquery.jobs.create
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.Preparare i dati di input
A differenza di altri modelli multivariati che potrebbero richiedere tabelle separate per le covariate storiche e future, la funzione AI.FORECAST con TimesFM 3.0 prevede una singola tabella o query di input.
Per una previsione di più serie temporali, i dati devono includere una o più colonne identificatore per separare i dati in serie temporali distinte. In questo esempio, una serie temporale contiene i dati per la località di ritiro 132 (aeroporto JFK) e l'altra serie temporale contiene i dati per la località di ritiro 138 (aeroporto LaGuardia). Assicurati che i dati soddisfino i seguenti requisiti per ogni singola serie temporale:
- Righe storiche: contengono valori non nulli per timestamp, target e covariate passate.
Poiché questo esempio non utilizza covariate future, la query di input deve fornire solo dati storici. La tabella di input deve contenere colonne con i seguenti dati:
- La data della corsa in taxi.
- La posizione di ritiro: 132 o 138.
- Il numero di viaggi in quella data. Questa è una colonna target.
- L'importo medio della tariffa in quella data. Questa è una colonna target.
- La distanza media dei viaggi in quella data. Questa è una colonna di covariata passata utilizzata nella previsione.
Prevedi le serie temporali multivariate multiple
La seguente query prevede il numero di corse e la tariffa media al giorno per
i prossimi 14 giorni per le zone di partenza JFK e LaGuardia. Definisce
past_cov_avg_distance come una funzionalità nota solo storicamente. Devi
fornire l'argomento id_cols in modo che il modello sappia come separare le diverse
serie temporali.
Segui questi passaggi per prevedere i dati con il modello TimesFM 3.0:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
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;
Il risultato è simile al seguente, con i valori arrotondati per chiarezza:
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 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 |
| ... | ... | ... | ... | ... | ... | ... | ... |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
I risultati mostrano il numero previsto di corse e l'importo medio della tariffa per i prossimi 14 giorni nelle zone di partenza di JFK e LaGuardia. I risultati includono anche i limiti inferiore e superiore di un intervallo di previsione del 95% per ogni valore previsto.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
- Nella console Google Cloud , vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Per una panoramica di BigQuery ML, consulta Introduzione all'AI e al ML in BigQuery.
- Scopri come prevedere una o più serie temporali con un modello univariato TimesFM.
- Scopri come prevedere singole serie temporali con un modello multivariato TimesFM.