Multivariat tidsserieforudsigelse med BQML - KDnuggets

Multivariat tidsserieforudsigelse med BQML – KDnuggets

Kildeknude: 2796796

Multivariat tidsserieforudsigelse med BQML
Billede fra Pexels
 

Sidste vinter holdt jeg et oplæg om 'Mere forudsigelig tidsseriemodel med BQML'kl GDG DevFest Tashkent 2022 i Tasjkent, Usbekistans hovedstad.

Jeg havde tænkt mig at dele noget af materialet og koden efter DevFest, jeg brugte i præsentationen, men tiden er gået, og der er udgivet nye funktioner i BQML, som overlapper noget af indholdet.

Derfor vil jeg i stedet kort nævne de nye funktioner og nogle af de ting, der stadig er gældende.

Tidsseriedata bruges af mange organisationer til en række forskellige formål, og det er vigtigt at bemærke, at "forudsigende analytisks" handler om "fremtiden" i tid. Forudsigende analyse af tidsserier er blevet brugt på kort, mellemlang og lang sigt, og selvom den har mange unøjagtigheder og risici, er den også blevet støt forbedret.

Da "forudsigelse" ser ud til at være så nyttig, kan du blive fristet til at anvende en tidsserieforudsigelsesmodel, hvis du har tidsseriedata. Men tidsserieforudsigelsesmodeller er normalt beregningsintensive, og hvis du har mange data, vil det være mere beregningsintensivt. Så det er besværligt og svært at behandle det, indlæse det til analysemiljøet og analysere det

Hvis du bruger Google BigQuery til datahåndtering, kan du bruge BQML (BigQuery ML) til at anvende maskinlæringsalgoritmer til dine data på en enkel, nem og hurtig måde. Mange mennesker bruger BigQuery til at behandle en masse data, og mange af disse data er ofte tidsseriedata. Og BQML understøtter også tidsseriemodeller.

Grundlaget for den tidsseriemodel, der i øjeblikket understøttes af BQML, er AutoRegressive Integrated Moving Average (ARIMA) model. ARIMA-modellen forudsiger kun at bruge eksisterende tidsseriedata og er kendt for at have god kortsigtet forudsigelsesydelse, og da den kombinerer AR og MA, er det en populær model, der kan dække en bred vifte af tidsseriemodeller.

Denne model er dog samlet set beregningsintensiv, og da den kun bruger tidsseriedata med normalitet, er det svært at bruge den i tilfælde med trends eller sæsonbestemte. Derfor, ARIMA_PLUS i BQML indeholder flere ekstra funktioner som muligheder. Du kan tilføje tidsserienedbrydning, sæsonbestemte faktorer, spidser og fald, koefficientændringer og mere til din model, eller du kan gennemgå dem separat og justere modellen manuelt. Jeg kan også personligt godt lide det faktum, at du kan justere for periodicitet ved automatisk at inkorporere feriemuligheder, hvilket er en af ​​fordelene ved at bruge en platform, der ikke kræver, at du manuelt tilføjer oplysninger relateret til datoer.

 

Multivariat tidsserieforudsigelse med BQML
Struktur af ARIMA_PLUS (fra BQML manual)
 

Du kan henvise til dette side for mere information.

Men når det kommer til applikationer i den virkelige verden, er forudsigelse af tidsserier ikke så enkel som dette. Selvfølgelig har vi været i stand til at identificere flere cyklusser og tilføje indgreb til flere tidsserier med ARIMA_PLUS, men der er mange eksterne faktorer relateret til tidsseriedata, og kun meget få hændelser sker isoleret. Stationaritet kan være svær at finde i tidsseriedata.

I den originale præsentation så jeg på, hvordan man håndterer disse tidsseriedata fra den virkelige verden for at lave en forudsigelsesmodel til nedbryde disse tidsserier, ryd op i de dekomponerede data, importer dem til Python og derefter væv det med andre variabler for at skabe en multivariat tidsseriefunktion, estimere kausalitet og inkorporere den i en forudsigelsesmodel og estimere, i hvilken grad effekten varierer med ændringer i hændelser.

Og i de sidste par måneder, en ny funktion til at skabe multivariate tidsseriefunktioner med eksterne variable(ARIMA_PLUS_XREG, XREG nedenfor) er blevet en direkte funktion i BQML.

Du kan læse alt om det link.(den er i preview fra juli 2023, men jeg gætter på, at den vil være tilgængelig senere i år).

Jeg ansøger den officielle tutorial for at se, hvordan den kan sammenlignes med en traditionel univariat tidsseriemodel, og vi kan se, hvordan den fungerer.

Trinene er de samme som i selvstudiet, så jeg vil ikke duplikere dem, men her er de to modeller, jeg har lavet. Først lavede jeg en traditionel ARIMA_PLUS model og derefter en XREG model, der bruger de samme data, men tilføjer temperatur og vindhastighed på det tidspunkt.

# 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')

 

En model, der bruger disse flere data, ville se sådan ud

 

Multivariat tidsserieforudsigelse med BQML
Struktur ARIMA_PLUS_XREG (fra BQML manual)
 

To modeller sammenlignes med 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))

 

Resultaterne er nedenfor.

ARIMA_PLUS

 

Multivariat tidsserieforudsigelse med BQML
 

ARIMA_PLUS_XREG

 

Multivariat tidsserieforudsigelse med BQML
 

Du kan se, at XREG-modellen er foran med grundlæggende præstationsmålinger såsom MAE, MSE og MAPE. (Dette er selvfølgelig ikke en perfekt løsning, dataafhængig, og vi kan bare sige, at vi har et andet nyttigt værktøj.)

Multivariat tidsserieanalyse er en tiltrængt mulighed i mange tilfælde, men den er ofte vanskelig at anvende på grund af forskellige årsager. Nu kan vi bruge det, hvis årsagerne er i data- og analysetrin. Det ser ud til, at vi har en god mulighed for det, så det er godt at vide om det, og forhåbentlig vil det være nyttigt i mange tilfælde.
 
 
JeongMin Kwon er freelance senior dataforsker med 10+ års praktisk erfaring med at udnytte maskinlæringsmodeller og datamining.
 

Tidsstempel:

Mere fra KDnuggets