Multivariat tidsserieprediktion med BQML - KDnuggets

Multivariat tidsserieprediktion med BQML – KDnuggets

Källnod: 2796796

Multivariat tidsserieprediktion med BQML
Bild från Pexels
 

I vintras höll jag en presentation omMer förutsägbar tidsseriemodell med BQML"kl GDG DevFest Tashkent 2022 i Tasjkent, Uzbekistans huvudstad.

Jag tänkte dela en del av materialet och koden efter DevFest jag använde i presentationen, men tiden har gått och nya funktioner har släppts i BQML som överlappar en del av innehållet.

Därför kommer jag istället att nämna de nya funktionerna och några av de saker som fortfarande är giltiga kort.

Tidsseriedata används av många organisationer för en mängd olika ändamål, och det är viktigt att notera att "prediktiv analytisks" handlar om "framtiden" i tiden. Prediktiv analys av tidsserier har använts på kort, medellång och lång sikt, och även om den har många felaktigheter och risker, har den också stadigt förbättrats.

Eftersom "förutsägelse" verkar vara så användbar, kan du bli frestad att använda en tidsserieförutsägelsemodell om du har tidsseriedata. Men tidsserieprediktionsmodeller är vanligtvis beräkningsintensiva, och om du har mycket data blir det mer beräkningsintensivt. Så det är krångligt och svårt att bearbeta det, ladda det till analysmiljön och analysera det

Om du använder Google BigQuery för datahantering kan du använda BQML (BigQuery ML) för att tillämpa maskininlärningsalgoritmer på din data på ett enkelt, enkelt och snabbt sätt. Många människor använder BigQuery för att bearbeta mycket data, och mycket av denna data är ofta tidsseriedata. Och BQML stöder även tidsseriemodeller.

Grunden för den tidsseriemodell som för närvarande stöds av BQML är AutoRegressive Integrated Moving Average (ARIMA) modell. ARIMA-modellen förutsäger att endast befintliga tidsseriedata används och är känd för att ha goda kortsiktiga prediktionsprestanda, och eftersom den kombinerar AR och MA är det en populär modell som kan täcka ett brett utbud av tidsseriemodeller.

Denna modell är dock beräkningsintensivt överlag och eftersom den bara använder tidsseriedata med normalitet är det svårt att använda den i fall med trender eller säsongsvariationer. Därför, ARIMA_PLUS i BQML innehåller flera ytterligare funktioner som alternativ. Du kan lägga till tidsserieuppdelning, säsongsfaktorer, toppar och fall, koefficientändringar och mer till din modell, eller så kan du gå igenom dem separat och justera modellen manuellt. Jag gillar också personligen det faktum att du kan justera för periodicitet genom att automatiskt införliva semesteralternativ, vilket är en av fördelarna med att använda en plattform som inte kräver att du manuellt lägger till information relaterad till datum.

 

Multivariat tidsserieprediktion med BQML
Struktur för ARIMA_PLUS (från BQML manual)
 

Du kan hänvisa till detta sida för mer information.

Men när det kommer till verkliga applikationer är tidsserieförutsägelser inte så enkelt som detta. Naturligtvis har vi kunnat identifiera flera cykler och lägga till interventioner i flera tidsserier med ARIMA_PLUS, men det finns många externa faktorer relaterade till tidsseriedata, och bara väldigt få händelser sker isolerat. Stationaritet kan vara svårt att hitta i tidsseriedata.

I den ursprungliga presentationen tittade jag på hur man hanterar dessa verkliga tidsseriedata för att göra prediktionsmodeller sönderdela dessa tidsserier, rensa upp den nedbrutna data, importera den till Python och sedan väv den med andra variabler för att skapa en multivariat tidsseriefunktion, uppskatta kausalitet och införliva den i en prediktionsmodell och uppskatta i vilken grad effekten varierar med förändringar i händelser.

Och under de bara senaste månaderna, en ny funktion för att skapa multivariata tidsseriefunktioner med externa variabler(ARIMA_PLUS_XREG, XREG nedan) har blivit ett direkt inslag i BQML.

Du kan läsa allt om det här.(den är i förhandsvisning från och med juli 2023, men jag antar att den kommer att finnas tillgänglig senare i år).

jag ansöker den officiella handledningen för att se hur den kan jämföras med en traditionell univariat tidsseriemodell och vi kan se hur det fungerar.

Stegen är desamma som i handledningen, så jag kommer inte att duplicera dem, men här är de två modellerna jag skapade. Först skapade jag en traditionell ARIMA_PLUS modell och sedan en XREG modell som använder samma data men lägger till temperatur och vindhastighet vid tillfället.

# 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 modell som använder dessa flera data skulle se ut ungefär så här

 

Multivariat tidsserieprediktion med BQML
Struktur ARIMA_PLUS_XREG (från BQML manual)
 

Två modeller jämförs 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))

 

Resultaten finns nedan.

ARIMA_PLUS

 

Multivariat tidsserieprediktion med BQML
 

ARIMA_PLUS_XREG

 

Multivariat tidsserieprediktion med BQML
 

Du kan se att XREG-modellen ligger före på grundläggande prestandamått som MAE, MSE och MAPE. (Självklart är detta inte en perfekt lösning, databeroende, och vi kan bara säga att vi har ett annat användbart verktyg.)

Multivariat tidsserieanalys är ett välbehövligt alternativ i många fall, men det är ofta svårt att tillämpa på grund av olika anledningar. Nu kan vi använda det om skälen är i data- och analyssteg. Det verkar som att vi har ett bra alternativ för det, så det är bra att veta om det och förhoppningsvis kommer det att vara användbart i många fall.
 
 
JeongMin Kwon är en frilansande senior dataforskare med 10+ års praktisk erfarenhet av att utnyttja maskininlärningsmodeller och datautvinning.
 

Tidsstämpel:

Mer från KDnuggets