Questo tutorial ti insegna a utilizzare un
modello di serie temporale univariata ARIMA_PLUS
per prevedere il valore futuro di una determinata colonna in base ai valori storici
di quella colonna.
Questo tutorial prevede una singola serie temporale. I valori previsti vengono calcolati una volta per ogni punto temporale nei dati di input.
Questo tutorial utilizza i dati della tabella di esempio pubblica
bigquery-public-data.google_analytics_sample.ga_sessions
. Questa
tabella contiene dati di e-commerce offuscati provenienti dal Google Merchandise Store.
Obiettivi
Questo tutorial ti guiderà nel completamento delle seguenti attività:
- Creazione di un modello di serie temporale per prevedere il traffico del sito utilizzando l'istruzione
CREATE MODEL
. - Valutare le informazioni sulla media mobile integrata autoregressiva (ARIMA)
nel modello utilizzando la
funzione
ML.ARIMA_EVALUATE
. - Esaminare i coefficienti del modello utilizzando la
funzione
ML.ARIMA_COEFFICIENTS
. - Recupero delle informazioni sul traffico del sito previste dal modello utilizzando la
funzione
ML.FORECAST
. - Recupero dei componenti della serie temporale, come stagionalità e tendenza, utilizzando la funzione
ML.EXPLAIN_FORECAST
. Puoi esaminare questi componenti delle serie temporali per spiegare i valori previsti.
Costi
Questo tutorial utilizza componenti fatturabili di Trusted Cloud by S3NS, tra cui:
- BigQuery
- BigQuery ML
Per ulteriori informazioni sui costi di BigQuery, consulta la pagina Prezzi di BigQuery.
Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
- BigQuery viene attivato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
Enable the BigQuery API.
Per creare il set di dati, devi disporre dell'autorizzazione IAM
bigquery.datasets.create
.Per creare il modello, devi disporre delle seguenti autorizzazioni:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:
bigquery.models.getData
bigquery.jobs.create
Autorizzazioni richieste
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su
Visualizza azioni > Crea set di dati.Nella pagina Crea set di dati:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Multi-regione e poi Stati Uniti (più regioni negli Stati Uniti).
Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.
bq
Per creare un nuovo set di dati, utilizza il
comando bq mk
con il flag --location
. Per un elenco completo dei possibili parametri, consulta la
documentazione di riferimento del
comando bq mk --dataset
.
Crea un set di dati denominato
bqml_tutorial
con la località dei dati impostata suUS
e una descrizione diBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Anziché utilizzare il flag
--dataset
, il comando utilizza la scorciatoia-d
. Se ometti-d
e--dataset
, il comando crea per impostazione predefinita un dataset.Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il metodo datasets.insert
con una risorsa dataset definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Visualizzare i dati di input
Prima di creare il modello, puoi visualizzare facoltativamente i dati delle serie temporali di input per avere un'idea della distribuzione. Puoi farlo utilizzando Looker Studio.
Segui questi passaggi per visualizzare i dati delle serie temporali:
SQL
Nella seguente query GoogleSQL, l'istruzione
SELECT
analizza la colonna date
della tabella di input
nel tipo TIMESTAMP
, la rinomina in parsed_date
e utilizza
la clausola SUM(...)
e la clausola GROUP BY date
per creare un valore
totals.visits
giornaliero.
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
Al termine della query, fai clic su Esplora i dati > Esplora con Looker Studio. Looker Studio si apre in una nuova scheda. Completa i seguenti passaggi nella nuova scheda.
In Looker Studio, fai clic su Inserisci > Grafico delle serie temporali.
Nel riquadro Grafico, scegli la scheda Configurazione.
Nella sezione Metrica, aggiungi il campo total_visits e rimuovi la metrica Conteggio record predefinita. Il grafico risultante è simile al seguente:
Osservando il grafico, puoi notare che la serie temporale di input ha un pattern stagionale settimanale.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Il risultato è simile al seguente:
Crea il modello di serie temporali
Crea un modello di serie temporale per prevedere le visite totali al sito rappresentate dalla
colonna totals.visits
e addestralo sui dati di Google Analytics 360.
SQL
Nella seguente query, la clausola
OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
indica che stai creando un modello
di serie temporali basato su
ARIMA. L'opzione auto_arima
dell'istruzione CREATE MODEL
è impostata su TRUE
per impostazione predefinita, quindi l'algoritmo auto.ARIMA
ottimizza automaticamente gli iperparametri nel modello. L'algoritmo
adatta decine di modelli candidati e sceglie il migliore, ovvero quello
con il criterio di informazione di Akaike (AIC) più basso.
L'opzione data_frequency
delle istruzioni CREATE MODEL
è impostata su AUTO_FREQUENCY
per impostazione predefinita, pertanto il processo di addestramento deduce automaticamente la frequenza dei dati della serie temporale di input. L'opzione decompose_time_series
dell'istruzione CREATE MODEL
è impostata per impostazione predefinita su TRUE
, in modo che le informazioni sui dati delle serie temporali vengano restituite quando valuti il modello nel passaggio successivo.
Per creare il modello:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
CREATE OR REPLACE MODEL `bqml_tutorial.ga_arima_model` OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date;
Il completamento della query richiede circa 4 secondi, dopodiché il modello
ga_arima_model
viene visualizzato nel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non vengono visualizzati i risultati della query.
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Valutare i modelli candidati
SQL
Valuta i modelli di serie temporali utilizzando la funzione ML.ARIMA_EVALUATE
. La funzione ML.ARIMA_EVALUATE
mostra le metriche di valutazione di tutti i modelli candidati valutati durante il processo di tuning automatico degli iperparametri.
Per valutare il modello:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`);
I risultati dovrebbero essere simili ai seguenti:
BigQuery DataFrames
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Le colonne di output non_seasonal_p
, non_seasonal_d
, non_seasonal_q
e has_drift
definiscono un modello ARIMA nella pipeline di addestramento. Le colonne di output
log_likelihood
, AIC
e variance
sono pertinenti per la procedura di adattamento del modello
ARIMA.
L'algoritmo auto.ARIMA
utilizza il
test KPSS per determinare il valore migliore
per non_seasonal_d
, che in questo caso è 1
. Quando non_seasonal_d
è 1
,
l'algoritmo auto.ARIMA
addestra 42 diversi modelli ARIMA candidati in parallelo.
In questo esempio, tutti i 42 modelli candidati sono validi, quindi l'output contiene 42
righe, una per ogni modello ARIMA candidato; nei casi in cui alcuni modelli
non sono validi, vengono esclusi dall'output. Questi modelli candidati vengono
restituiti in ordine crescente in base all'AIC. Il modello nella prima riga ha l'AIC più basso ed è considerato il migliore. Il modello migliore viene salvato come modello finale
e viene utilizzato quando chiami funzioni come ML.FORECAST
sul modello
La colonna seasonal_periods
contiene informazioni sul pattern stagionale
identificato nei dati delle serie temporali. Non ha nulla a che fare con la modellazione ARIMA, pertanto ha lo stesso valore in tutte le righe di output. Mostra un pattern
settimanale, che concorda con i risultati visualizzati se hai scelto di
visualizzare i dati di input.
Le colonne has_holiday_effect
, has_spikes_and_dips
e has_step_changes
vengono compilate solo quando decompose_time_series=TRUE
. Queste colonne riflettono anche
informazioni sui dati delle serie temporali di input e non sono correlate alla modellazione
ARIMA. Queste colonne hanno anche gli stessi valori in tutte le righe di output.
La colonna error_message
mostra gli eventuali errori riscontrati durante il processo di
adattamento auto.ARIMA
. Uno dei possibili motivi degli errori è che le colonne
non_seasonal_p
, non_seasonal_d
, non_seasonal_q
e has_drift
selezionate
non sono in grado di stabilizzare la serie temporale. Per recuperare il messaggio di errore
di tutti i modelli candidati, imposta l'opzione show_all_candidate_models
su TRUE
quando crei il modello.
Per ulteriori informazioni sulle colonne di output, consulta la
funzione ML.ARIMA_EVALUATE
.
Ispezionare i coefficienti del modello
SQL
Esamina i coefficienti del modello di serie temporale utilizzando la funzione
ML.ARIMA_COEFFICIENTS
.
Per recuperare i coefficienti del modello:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`);
La colonna di output ar_coefficients
mostra i coefficienti del modello della parte autoregressiva (AR) del modello ARIMA. Analogamente, la colonna di output ma_coefficients
mostra i coefficienti del modello della parte di media mobile (MA) del
modello ARIMA. Entrambe queste colonne contengono valori di array, le cui lunghezze sono
uguali a non_seasonal_p
e non_seasonal_q
, rispettivamente. Nell'output della funzione ML.ARIMA_EVALUATE
hai visto che il modello migliore ha un valore non_seasonal_p
pari a 2
e un valore non_seasonal_q
pari a 3
. Pertanto, nell'output ML.ARIMA_COEFFICIENTS
, il valore ar_coefficients
è un array di 2 elementi e il valore ma_coefficients
è un array di 3 elementi. Il valore
intercept_or_drift
è il termine costante nel modello ARIMA.
Per ulteriori informazioni sulle colonne di output, consulta la
funzione ML.ARIMA_COEFFICIENTS
.
BigQuery DataFrames
Esamina i coefficienti del modello di serie temporale utilizzando la funzione coef_
.
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
La colonna di output ar_coefficients
mostra i coefficienti del modello della parte autoregressiva (AR) del modello ARIMA. Analogamente, la colonna di output ma_coefficients
mostra i coefficienti del modello della parte di media mobile (MA) del
modello ARIMA. Entrambe queste colonne contengono valori di array, le cui lunghezze sono
uguali a non_seasonal_p
e non_seasonal_q
, rispettivamente.
Utilizzare il modello per prevedere i dati
SQL
Prevedi i valori futuri delle serie temporali utilizzando la funzione ML.FORECAST
.
Nella seguente query GoogleSQL, la
clausola STRUCT(30 AS horizon, 0.8 AS confidence_level)
indica che la
query prevede 30 punti temporali futuri e genera un intervallo di previsione
con un livello di confidenza dell'80%.
Per prevedere i dati con il modello:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
I risultati dovrebbero essere simili ai seguenti:
BigQuery DataFrames
Prevedi i valori futuri delle serie temporali utilizzando la funzione predict
.
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Le righe di output sono in ordine cronologico in base al valore della colonna
forecast_timestamp
. Nella previsione delle serie temporali, l'intervallo di previsione, rappresentato dai valori delle colonne prediction_interval_lower_bound
e prediction_interval_upper_bound
, è importante quanto il valore della colonna forecast_value
. Il valore forecast_value
è il punto medio
dell'intervallo di previsione. L'intervallo di previsione dipende dai valori delle colonne
standard_error
e confidence_level
.
Per ulteriori informazioni sulle colonne di output, consulta la
funzione ML.FORECAST
.
Spiegare i risultati della previsione
SQL
Puoi ottenere metriche di interpretabilità oltre ai dati di previsione utilizzando la
funzione ML.EXPLAIN_FORECAST
. La funzione ML.EXPLAIN_FORECAST
prevede
i valori futuri delle serie temporali e restituisce anche tutti i componenti separati delle
serie temporali.
Analogamente alla funzione ML.FORECAST
, la clausola STRUCT(30 AS horizon, 0.8 AS confidence_level)
utilizzata nella funzione ML.EXPLAIN_FORECAST
indica che la query prevede 30 punti temporali futuri e genera un intervallo di previsione con un livello di confidenza dell'80%.
Segui questi passaggi per spiegare i risultati del modello:
Nella console Trusted Cloud , vai alla pagina BigQuery.
Nell'editor di query, incolla la seguente query e fai clic su Esegui:
SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level));
I risultati dovrebbero essere simili ai seguenti:
Le righe di output sono ordinate cronologicamente in base al valore della colonna
time_series_timestamp
.Per ulteriori informazioni sulle colonne di output, consulta la funzione
ML.EXPLAIN_FORECAST
.
BigQuery DataFrames
Puoi ottenere metriche di interpretabilità oltre ai dati di previsione utilizzando la
funzione predict_explain
. La funzione predict_explain
prevede
i valori futuri delle serie temporali e restituisce anche tutti i componenti separati delle
serie temporali.
Analogamente alla funzione predict
, la clausola horizon=30, confidence_level=0.8
utilizzata nella funzione predict_explain
indica che la query prevede 30 punti temporali futuri e genera un intervallo di previsione con un livello di confidenza dell'80%.
Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.
Se vuoi visualizzare i risultati, puoi utilizzare Looker Studio come descritto nella sezione Visualizzare i dati di input per creare un grafico utilizzando le seguenti colonne come metriche:
time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_weekly
step_changes
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.
- Puoi eliminare il progetto che hai creato.
- In alternativa, puoi conservare il progetto ed eliminare il set di dati.
Eliminare il set di dati
L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato in questo tutorial:
Se necessario, apri la pagina BigQuery nella consoleTrusted Cloud .
Nella navigazione, fai clic sul set di dati bqml_tutorial che hai creato.
Fai clic su Elimina set di dati sul lato destro della finestra. Questa azione elimina il set di dati, la tabella e tutti i dati.
Nella finestra di dialogo Elimina set di dati, conferma il comando di eliminazione digitando il nome del set di dati (
bqml_tutorial
) e poi fai clic su Elimina.
Elimina il progetto
Per eliminare il progetto:
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Scopri come prevedere una singola serie temporale con un modello multivariato.
- Scopri come prevedere più serie temporali con un modello univariato
- Scopri come scalare un modello univariato quando prevedi più serie temporali su più righe.
- Scopri come prevedere gerarchicamente più serie temporali con un modello univariato.
- Per una panoramica di BigQuery ML, consulta Introduzione all'AI e al ML in BigQuery.