Previsione di serie temporali multivariata con BQML - KDnuggets

Previsione di serie temporali multivariata con BQML – KDnuggets

Nodo di origine: 2796796

Previsione multivariata di serie temporali con BQML
Immagine da Pexels
 

Lo scorso inverno ho tenuto una presentazione su "Modello di serie temporali più prevedibile con BQML' a GDG DevFest Tashkent 2022 a Tashkent, capitale dell'Uzbekistan.

Avrei voluto condividere parte del materiale e del codice che ho utilizzato nella presentazione dopo il DevFest, ma il tempo è passato e in BQML sono state rilasciate nuove funzionalità che si sovrappongono ad alcuni contenuti.

Pertanto, menzionerò invece brevemente le nuove funzionalità e alcune cose che sono ancora valide.

Dati di serie temporali viene utilizzato da molte organizzazioni per una varietà di scopi ed è importante notare che "analitica predittivas” riguarda il “futuro” nel tempo. L’analisi predittiva delle serie temporali è stata utilizzata a breve, medio e lungo termine e, sebbene presenti molte imprecisioni e rischi, è anche in costante miglioramento.

Poiché la "previsione" sembra essere così utile, potresti essere tentato di applicare un modello di previsione delle serie temporali se disponi di dati di serie temporali. Ma i modelli di previsione delle serie temporali sono solitamente impegnativi dal punto di vista computazionale e, se si dispone di molti dati, saranno più intensivi dal punto di vista computazionale. Quindi è complicato e difficile elaborarlo, caricarlo nell'ambiente di analisi e analizzarlo

Se si utilizza Google BigQuery per la gestione dei dati, è possibile utilizzare BQML (BigQuery ML) per applicare algoritmi di machine learning ai tuoi dati in modo semplice, facile e veloce. Molte persone utilizzano BigQuery per elaborare grandi quantità di dati, molti dei quali sono spesso dati di serie temporali. E BQML supporta anche modelli di serie temporali.

La base del modello di serie temporali attualmente supportato da BQML è il Media mobile integrata autoregressiva (ARIMA) modello. Il modello ARIMA prevede utilizzando solo i dati di serie temporali esistenti ed è noto per avere buone prestazioni di previsione a breve termine e, poiché combina AR e MA, è un modello popolare in grado di coprire un'ampia gamma di modelli di serie temporali.

Tuttavia, questo modello è nel complesso impegnativo dal punto di vista computazionale e poiché utilizza solo dati di serie temporali con normalità, è difficile utilizzarlo in casi con tendenze o stagionalità. Perciò, ARIMA_PLUS in BQML include diverse funzionalità aggiuntive come opzioni. Puoi aggiungere la scomposizione delle serie temporali, fattori di stagionalità, picchi e cali, modifiche dei coefficienti e altro al tuo modello oppure puoi esaminarli separatamente e regolare manualmente il modello. Personalmente apprezzo anche il fatto che sia possibile adeguarsi alla periodicità incorporando automaticamente le opzioni relative alle vacanze, che è uno dei vantaggi dell'utilizzo di una piattaforma che non richiede l'aggiunta manuale di informazioni relative alle date.

 

Previsione multivariata di serie temporali con BQML
Struttura di ARIMA_PLUS (da Manuale BQML)
 

Puoi fare riferimento a questo pagina per maggiori informazioni.

Tuttavia, quando si tratta di applicazioni nel mondo reale, la previsione delle serie temporali non è così semplice. Naturalmente, siamo stati in grado di identificare più cicli e aggiungere interventi a più serie temporali con ARIMA_PLUS, ma ci sono molti fattori esterni correlati ai dati delle serie temporali e solo pochissimi eventi si verificano isolatamente. La stazionarietà può essere difficile da trovare nei dati di serie temporali.

Nella presentazione originale, ho esaminato come gestire questi dati di serie temporali del mondo reale per creare modelli di previsione scomporre queste serie temporali, ripulisci i dati scomposti, importali in Python e quindi intrecciarlo con altre variabili per creare una funzione di serie temporale multivariata, stimare la causalità e incorporarla in un modello di previsione e stimare il grado in cui l'effetto varia con i cambiamenti negli eventi.

E solo negli ultimi mesi, una nuova funzionalità per creare funzioni di serie temporali multivariate con variabili esterne(ARIMA_PLUS_XREG, XREG sotto) è diventata una caratteristica assoluta di BQML.

Puoi leggere tutto al riguardo qui(è in anteprima da luglio 2023, ma immagino che sarà disponibile entro la fine dell'anno).

applico il tutorial ufficiale per vedere come si confronta con un modello tradizionale di serie temporali univariate e possiamo vedere come funziona.

I passaggi sono gli stessi del tutorial, quindi non li duplicherò, ma ecco i due modelli che ho creato. Innanzitutto, ho creato un file tradizionale ARIMA_PLUS modello e poi un XREG modello utilizzando gli stessi dati ma aggiungendo la temperatura e la velocità del vento in quel momento.

# ARIMA_PLUS

# ARIMA_PLUS
CREATE OR REPLACE MODEL test_dt_us.seattle_pm25_plus_model
OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'pm25') AS
SELECT date, pm25
FROM test_dt_us.seattle_air_quality_daily
WHERE date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')
#ARIMA_PLUS_XREG
CREATE OR REPLACE MODEL test_dt_us.seattle_pm25_xreg_model OPTIONS ( MODEL_TYPE = 'ARIMA_PLUS_XREG', time_series_timestamp_col = 'date', time_series_data_col = 'pm25') AS
SELECT date, pm25, temperature, wind_speed
FROM test_dt_us.seattle_air_quality_daily
WHERE date BETWEEN DATE('2012-01-01') AND DATE('2020-12-31')

 

Un modello che utilizza questi dati multipli sarebbe simile a questo

 

Previsione multivariata di serie temporali con BQML
Struttura ARIMA_PLUS_XREG (da Manuale BQML)
 

Due modelli vengono confrontati con ML.Evaluate.

SELECT * FROM ML.EVALUATE ( MODEL test_dt_us.seattle_pm25_plus_model, ( SELECT date, pm25 FROM test_dt_us.seattle_air_quality_daily WHERE date > DATE('2020-12-31') ))
SELECT * FROM ML.EVALUATE ( MODEL test_dt_us.seattle_pm25_xreg_model, ( SELECT date, pm25, temperature, wind_speed FROM test_dt_us.seattle_air_quality_daily WHERE date > DATE('2020-12-31') ), STRUCT( TRUE AS perform_aggregation, 30 AS horizon))

 

I risultati sono riportati di seguito.

ARIMA_PLUS

 

Previsione multivariata di serie temporali con BQML
 

ARIMA_PLUS_XREG

 

Previsione multivariata di serie temporali con BQML
 

Si può vedere che il Il modello XREG è in vantaggio rispetto ai parametri prestazionali di base come MAE, MSE e MAPE. (Ovviamente questa non è una soluzione perfetta, dipendente dai dati, e possiamo semplicemente dire che abbiamo un altro strumento utile.)

L'analisi multivariata delle serie temporali è un'opzione molto necessaria in molti casi, ma spesso è difficile da applicare per vari motivi. Ora possiamo usarlo se i motivi sono nei dati e nelle fasi di analisi. Sembra che abbiamo una buona opzione per questo, quindi è bello saperlo e speriamo che sia utile in molti casi.
 
 
JeongMin Kwon è un Data Scientist senior freelance con oltre 10 anni di esperienza pratica nello sfruttamento di modelli di machine learning e data mining.
 

Timestamp:

Di più da KDnuggets