In questo tutorial imparerai a creare un modello di serie temporali
le previsioni di singole serie temporali utilizzando
Tabella di esempio google_analytics_sample.ga_sessions
.
La tabella ga_sessions
contiene informazioni su una porzione di dati di sessione
raccolti da Google Analytics 360 e inviati a
in BigQuery.
Obiettivi
In questo tutorial utilizzerai quanto segue:
- La
CREATE MODEL
per creare un modello di serie temporali. - La
ML.ARIMA_EVALUATE
funzione: per valutare il modello. - La
ML.ARIMA_COEFFICIENTS
funzione: per esaminare i coefficienti del modello. - La
ML.FORECAST
funzione: per prevedere le visite totali giornaliere. - La
ML.EXPLAIN_FORECAST
funzione: per recuperare vari componenti delle serie temporali (come la stagionalità e tendenza) che possono essere utilizzate per spiegare i risultati della previsione. - Looker Studio: per visualizzare i risultati della previsione.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
- BigQuery
- BigQuery ML
Per ulteriori informazioni sui costi di BigQuery, consulta Prezzi di BigQuery.
Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- BigQuery viene abilitato automaticamente nei nuovi progetti.
Per attivare BigQuery in un progetto preesistente, vai a
Attiva l'API BigQuery.
Passaggio 1: crea il set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML:
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del tuo progetto.
Fai clic su
Visualizza azioni > Crea il set di dati.Nella pagina Crea set di dati, segui questi passaggi:
In ID set di dati, inserisci
bqml_tutorial
.Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).
I set di dati pubblici vengono archiviati nell'
US
più regioni. Per semplicità, per archiviare il set di dati nella stessa posizione.Lascia invariate le restanti impostazioni predefinite e fai clic su Crea il set di dati.
(Facoltativo) Passaggio due: visualizza le serie temporali da prevedere
Prima di creare il modello, è utile vedere quale serie temporale di input .
SQL
Puoi farlo utilizzando Looker Studio.
Nella seguente query GoogleSQL,
Clausola FROM bigquery-public-data.google_analytics_sample.ga_sessions_*
indica che stai eseguendo una query sulle tabelle ga_sessions_*
nel
google_analytics_sample
. Queste tabelle sono
tabelle partizionate.
Nell'istruzione SELECT
, la query analizza la colonna date
dall'input
tabella di tipo TIMESTAMP
e la rinomina in parsed_date
. La query utilizza
la clausola SUM(...)
e la clausola GROUP BY date
per accumulare
totals.visits
al giorno.
#standardSQL 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
Per eseguire la query, segui questi passaggi:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL 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
Fai clic su Esegui.
Il completamento della query richiede circa 7 secondi. Una volta eseguita questa query, è simile allo screenshot seguente. Nello screenshot puoi vedere che questa serie temporale ha 366 punti dati. Fai clic sul pulsante Esplora i dati. e poi Esplora con Looker Studio. Looker Studio si apre in una nuova . Completa i seguenti passaggi nella nuova scheda.
Nel riquadro Grafico, scegli Grafico delle serie temporali:
Nel riquadro Dati, sotto il riquadro Grafico, vai alla sezione Metrica. Aggiungi il campo total_visits e rimuovi la metrica predefinita. Conteggio record. Ciò è mostrato nella figura seguente.
Dopo aver completato questi passaggi, viene visualizzato il seguente diagramma. Il grafico mostra che la serie temporale di input ha un modello stagionale settimanale.
DataFrame BigQuery
Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.
Il risultato è simile al seguente:
Passaggio 3: crea il modello di serie temporali
In seguito, crea un modello di serie temporali utilizzando i dati di Google Analytics 360.
La seguente query GoogleSQL crea un modello utilizzato per la previsione
totals.visits
.
La CREATE MODEL
crea e addestra un modello denominato bqml_tutorial.ga_arima_model
.
#standardSQL 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
OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
indica che viene creata
Basato su ARIMA
un modello di serie temporale. Per impostazione predefinita,
auto_arima=TRUE
,
quindi l'algoritmo auto.ARIMA
regola automaticamente gli iperparametri in
ARIMA_PLUS
modelli. L'algoritmo si adatta a decine di modelli candidati e sceglie
il migliore con il minimo
Criterio delle informazioni Akaike (AIC).
Inoltre, poiché il valore predefinito è
data_frequency='AUTO_FREQUENCY'
, il processo di addestramento deduce automaticamente
la frequenza dei dati della serie temporale di input. Infine, CREATE MODEL
la dichiarazione utilizza
decompose_time_series=TRUE
per impostazione predefinita e gli utenti possono comprendere meglio come viene prevista la serie temporale
recuperando i componenti separati delle serie temporali, ad esempio stagionalità e
effetto.
Esegui la query CREATE MODEL
per creare e addestrare il modello:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL 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
Fai clic su Esegui.
Il completamento della query richiede circa 43 secondi, dopodiché il modello (
ga_arima_model
) viene visualizzato nel pannello di navigazione. Poiché la query utilizza un parametroCREATE MODEL
per creare un modello, non vengono visualizzati i risultati della query.
Passaggio 4: esamina le metriche di valutazione di tutti i modelli valutati
Dopo aver creato il modello, puoi utilizzare
ML.ARIMA_EVALUATE
per vedere le metriche di valutazione di tutti i modelli candidati valutati
durante il processo di ottimizzazione
automatica degli iperparametri.
Nella seguente query GoogleSQL, la clausola FROM
utilizza la classe
ML.ARIMA_EVALUATE
rispetto al tuo modello, bqml_tutorial.ga_arima_model
. Per impostazione predefinita,
la query restituisce le metriche di valutazione di tutti i modelli candidati.
Per eseguire ML.ARIMA_EVALUATE
usa questi passaggi:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL SELECT * FROM ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.ga_arima_model`)
Fai clic su Esegui.
Il completamento della query richiede meno di un secondo. Quando la query viene completa, fai clic sulla scheda Risultati sotto l'area di testo della query. I risultati dovrebbe avere un aspetto simile al seguente screenshot:
I risultati includono le seguenti colonne:
non_seasonal_p
non_seasonal_d
non_seasonal_q
has_drift
log_likelihood
AIC
variance
seasonal_periods
has_holiday_effect
has_spikes_and_dips
has_step_changes
error_message
Le quattro colonne seguenti (
non_seasonal_{p,d,q}
ehas_drift
) definire un modello ARIMA nella pipeline di addestramento. Le tre metriche successive (log_likelihood
,AIC
evariance
) sono pertinenti al modello ARIMA processo di adattamento.L'algoritmo
auto.ARIMA
utilizza innanzitutto KPSS test per decidere che il valore dinon_seasonal_d
è 1. Quandonon_seasonal_d
è 1, auto.ARIMA quindi addestra in parallelo 42 diversi modelli ARIMA candidati. Tieni presente che quandonon_seasonal_d
non è 1, auto.ARIMA addestra 21 candidati diversi di machine learning. In questo esempio, tutti i 42 modelli candidati sono validi. Pertanto, l'output contiene 42 righe, ciascuna delle quali è associata a una richiesta ARIMA un modello di machine learning. Tieni presente che, per alcune serie temporali, alcuni modelli candidati non sono validi non invertibili o stazionari. Questi modelli non validi sono escluso dall'output, perciò l'output avrà meno di 42 righe. Questi modelli candidati sono ordinati dall'AIC in ordine crescente. Il modello Nella prima riga ha l'AIC più basso ed è considerata il modello migliore. Questo modello migliore viene salvato come modello finale e viene utilizzato quando chiamiML.EXPLAIN_FORECAST
,ML.FORECAST
eML.ARIMA_COEFFICIENTS
come mostrato in i seguenti passaggi.La colonna
seasonal_periods
riguarda il pattern stagionale all'interno dell'input serie temporali. Non ha nulla a che fare con la modellazione ARIMA, perciò ha lo stesso valore in tutte le righe di output. Riporta un andamento settimanale, ovvero ci aspettiamo, come descritto nel secondo passaggio precedente.Le colonne
has_holiday_effect
,has_spikes_and_dips
ehas_step_changes
vengono compilate solo quandodecompose_time_series=TRUE
. Riguardano l'effetto delle festività, i picchi e i cali e le variazioni di passi all'interno del tempo di input che non sono correlate alla modellazione ARIMA. Pertanto, sono tutte la stessa in tutte le righe di output, tranne per i modelli con errori.La colonna
error_message
mostra che il possibile errore che si è verificato duranteauto.ARIMA
processo di fitting. Un possibile motivo potrebbe essere che l'elemento selezionato Colonnenon_seasonal_p
,non_seasonal_d
,non_seasonal_q
ehas_drift
non sono in grado di stabilizzare le serie temporali. Per recuperare il possibile errore di tutti i modelli candidati, impostashow_all_candidate_models=true
.
Passaggio cinque: esamina i coefficienti del modello
La ML.ARIMA_COEFFICIENTS
recupera i coefficienti del modello ARIMA_PLUS,
bqml_tutorial.ga_arima_model
. ML.ARIMA_COEFFICIENTS
prende il modello come
solo input.
Esegui la query ML.ARIMA_COEFFICIENTS
:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.ga_arima_model`)
Fai clic su Esegui.
Il completamento della query richiede meno di un secondo. I risultati dovrebbero apparire ad esempio:
I risultati includono le seguenti colonne:
ar_coefficients
ma_coefficients
intercept_or_drift
ar_coefficients
mostra i coefficienti del modello dell'autoregressivo (AR) parte del modello ARIMA. Analogamente,ma_coefficients
mostra il modello coefficienti della parte della media mobile (MA). Sono entrambi array, la cui lunghezza sono rispettivamente pari anon_seasonal_p
enon_seasonal_q
. Da output diML.ARIMA_EVALUATE
, il modello migliore come nella riga superiore ha unnon_seasonal_p
di 2 enon_seasonal_q
di 3. Pertanto,ar_coefficients
è un array di lunghezza 2, mentrema_coefficients
è un array di lunghezza 3 un array di dati.intercept_or_drift
è il termine costante nel modello ARIMA.
Passaggio 6: usa il modello per prevedere le serie temporali
La ML.FORECAST
funzione prevede i valori di serie temporali future con un intervallo di previsione utilizzando
il tuo modello: bqml_tutorial.ga_arima_model
.
Nella seguente query GoogleSQL,
STRUCT(30 AS horizon, 0.8 AS confidence_level)
indica che
la query prevede 30 punti di tempo futuri e genera un intervallo di previsione
con un livello di confidenza dell'80%. ML.FORECAST
prende il modello, oltre a un
coppia di argomenti facoltativi.
Per eseguire la query ML.FORECAST
, segui questi passaggi:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL SELECT * FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Fai clic su Esegui.
Il completamento della query richiede meno di un secondo. I risultati dovrebbero apparire ad esempio:
I risultati includono le seguenti colonne:
forecast_timestamp
forecast_value
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_upper_bound
confidence_interval_lower_bound
(a breve deprecato)confidence_interval_upper_bound
(a breve deprecato)
Le righe di output sono ordinate nell'ordine cronologico
forecast_timestamp
. Nella previsione di serie temporali, l'intervallo che viene acquisito dai limiti inferiore e superiore, è importante quantoforecast_value
.forecast_value
è il punto centrale della previsione intervallo di tempo. L'intervallo di previsione dipende dastandard_error
econfidence_level
.
Passaggio 7: spiega e visualizza i risultati della previsione
Per comprendere come vengono previste le serie temporali e visualizzare le previsioni
serie temporali insieme alle serie temporali della cronologia e a tutte le fasi
componenti, ML.EXPLAIN_FORECAST
consente di prevedere i valori di serie temporali future con un intervallo di previsione utilizzando
il modello bqml_tutorial.ga_arima_model
, e allo stesso tempo restituisce tutte le
componenti separati delle serie temporali.
Come la funzione ML.FORECAST
,
STRUCT(30 AS horizon, 0.8 AS confidence_level)
indica che la proprietà
la query prevede 30 punti di tempo futuri e genera un intervallo di previsione
con una confidenza dell'80%. La funzione ML.EXPLAIN_FORECAST
prende il modello, oltre a un
coppia di argomenti facoltativi.
Per eseguire la query ML.EXPLAIN_FORECAST
, segui questi passaggi:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL SELECT * FROM ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Fai clic su Esegui.
Il completamento della query richiede meno di un secondo. I risultati dovrebbero apparire ad esempio:
I risultati includono le seguenti colonne:
time_series_timestamp
time_series_type
time_series_data
time_series_adjusted_data
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_lower_bound
trend
seasonal_period_yearly
seasonal_period_quarterly
seasonal_period_monthly
seasonal_period_weekly
seasonal_period_daily
holiday_effect
spikes_and_dips
step_changes
residual
Le righe di output sono ordinate nell'ordine cronologico
time_series_timestamp
. I vari componenti sono elencati come colonne del come output. Per ulteriori informazioni, consulta la definizione diML.EXPLAIN_FORECAST
Al termine della query, fai clic sul pulsante Esplora i dati e poi fai clic su Esplora con Looker Studio. Looker Studio si apre in una nuova scheda.
Nel riquadro Grafico, scegli Grafico delle serie temporali:
Nel riquadro Dati, segui questi passaggi:
- Nella sezione Dimensione intervallo di date, seleziona
time_series_timestamp (Date)
. - Nella sezione Dimensione, seleziona
time_series_timestamp (Date)
. - Nella sezione Metrica, rimuovi la metrica predefinita
Record Count
e aggiungi quanto segue:time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_weekly
step_changes
- Nella sezione Dimensione intervallo di date, seleziona
Nel riquadro Stile, scorri verso il basso fino all'opzione Dati mancanti. Utilizzare Interruzioni di riga anziché Interruzioni di riga a zero.
Viene visualizzato il seguente diagramma:
(Facoltativo) Passaggio otto: visualizza i risultati della previsione senza abilitare decompose_time_series
Se decompose_time_series
viene impostato su false nell'addestramento ARIMA_PLUS
:
puoi concatenare le serie temporali della cronologia e le serie temporali previste utilizzando
la clausola UNION ALL
e la funzione ML.FORECAST
.
Nella query seguente, l'SQL prima che la clausola UNION ALL
crei la cronologia
serie temporali. L'SQL dopo la clausola UNION ALL
utilizza ML.FORECAST
per generare le serie temporali previste e la previsione
intervallo di tempo. La query utilizza campi diversi per history_value
e
forecasted_value
per tracciarli con colori diversi.
Per eseguire la query, segui questi passaggi:
Nella console Google Cloud, fai clic sul pulsante Crea nuova query.
Inserisci la seguente query GoogleSQL nell'area di testo Editor query.
#standardSQL SELECT history_timestamp AS timestamp, history_value, NULL AS forecast_value, NULL AS prediction_interval_lower_bound, NULL AS prediction_interval_upper_bound FROM ( SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS history_timestamp, SUM(totals.visits) AS history_value FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date ORDER BY date ASC ) UNION ALL SELECT forecast_timestamp AS timestamp, NULL AS history_value, forecast_value, prediction_interval_lower_bound, prediction_interval_upper_bound FROM ML.FORECAST(MODEL `bqml_tutorial.ga_arima_model`, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Fai clic su Esegui.
Al termine della query, fai clic sul pulsante Esplora i dati e poi fai clic su Esplora con Looker Studio. Looker Studio si apre in una nuova scheda. Completa i seguenti passaggi nella nuova scheda.
Nel riquadro Grafico, scegli Grafico delle serie temporali:
Nel riquadro Dati, sotto il riquadro Grafico, vai a Metrica. . Aggiungi le seguenti metriche:
history_value
,forecast_value
,prediction_interval_lower_bound
eprediction_interval_upper_bound
. Poi rimuovi la metrica predefinitaRecord Count
.Nel riquadro Stile, scorri verso il basso fino all'opzione Dati mancanti. Utilizzare Interruzioni di riga anziché Interruzioni di riga a zero.
Dopo aver completato questi passaggi, nel riquadro di sinistra viene visualizzato il seguente diagramma. La serie temporale della cronologia di input è in blu, mentre la serie prevista è in verde. L'intervallo di previsione è la regione tra le serie del limite inferiore e la serie del limite superiore.
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 mantenere il progetto ed eliminare il set di dati.
Elimina il set di dati
L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato tutorial:
Se necessario, apri la pagina BigQuery nel nella console Google Cloud.
Nel menu di 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, digita per confermare il comando di eliminazione il nome del set di dati (
bqml_tutorial
), quindi fai clic su Elimina.
Elimina il progetto
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri come eseguire previsioni per più serie temporali con una singola query dai dati sulle corse di NYC Citi bike
- Scopri come accelerare ARIMA_PLUS per consentire la previsione di 1 milione di serie temporali in poche ore.
- Per saperne di più sul machine learning, consulta Machine Learning Crash Course.
- Per una panoramica di BigQuery ML, consulta Introduzione a BigQuery ML.
- Per saperne di più sulla console Google Cloud, consulta Utilizzo della console Google Cloud.