Wielowymiarowe prognozowanie szeregów czasowych za pomocą BQML - KDnuggets

Wielowymiarowe prognozowanie szeregów czasowych za pomocą BQML – KDnuggets

Węzeł źródłowy: 2796796

Wielowymiarowe przewidywanie szeregów czasowych za pomocą BQML
Obraz z Pexels
 

Zeszłej zimy wygłosiłem prezentację nt.Bardziej przewidywalny model szeregów czasowych z BQML' w GDG DevFest Taszkent 2022 w Taszkencie, stolicy Uzbekistanu.

Miałem zamiar podzielić się częścią materiału i kodem po DevFest, którego użyłem w prezentacji, ale czas minął i wydano nowe funkcje w BQML, które pokrywają się z częścią treści.

Dlatego zamiast tego wspomnę pokrótce o nowych funkcjach i niektórych rzeczach, które nadal obowiązują.

Dane szeregów czasowych jest używany przez wiele organizacji do różnych celów i należy pamiętać, że „analiza predykcyjnas” dotyczy „przyszłości” w czasie. Analitykę predykcyjną szeregów czasowych wykorzystuje się w perspektywie krótko-, średnio- i długoterminowej i chociaż jest ona obarczona wieloma niedokładnościami i ryzykiem, jej skuteczność jest stale udoskonalana.

Ponieważ „przewidywanie” wydaje się tak przydatne, możesz ulec pokusie zastosowania modelu przewidywania szeregów czasowych, jeśli masz dane szeregów czasowych. Jednak modele przewidywania szeregów czasowych są zwykle wymagające obliczeniowo, a jeśli masz dużo danych, będą one bardziej wymagające obliczeniowo. Dlatego przetwarzanie go, ładowanie do środowiska analitycznego i analizowanie jest kłopotliwe i trudne

Jeśli używasz Google BigQuery do zarządzania danymi możesz użyć BQML (BigQuery ML), aby zastosować algorytmy uczenia maszynowego do swoich danych w prosty, łatwy i szybki sposób. Wiele osób korzysta z BigQuery do przetwarzania dużej ilości danych, a duża część tych danych to często dane szeregów czasowych. I BQML obsługuje również modele szeregów czasowych.

Podstawą modelu szeregów czasowych obecnie obsługiwanego przez BQML jest Zintegrowana średnia ruchoma autoregresyjna (ARIMA) Model. Model ARIMA przewiduje, wykorzystując wyłącznie istniejące dane szeregów czasowych i jest znany z dobrej wydajności przewidywania krótkoterminowego, a ponieważ łączy w sobie AR i MA, jest popularnym modelem, który może obejmować szeroki zakres modeli szeregów czasowych.

Jednak model ten jest ogólnie intensywny obliczeniowo, a ponieważ wykorzystuje jedynie dane szeregów czasowych z normalnością, trudno jest go używać w przypadkach, w których występują trendy lub sezonowość. Dlatego, ARIMA_PLUS w BQML zawiera kilka dodatkowych funkcji jako opcje. Możesz dodać do swojego modelu rozkład szeregów czasowych, czynniki sezonowości, skoki i spadki, zmiany współczynników i inne elementy, możesz też przeglądać je oddzielnie i ręcznie dostosowywać model. Mnie osobiście podoba się również to, że można dostosować się do cykliczności poprzez automatyczne dołączenie opcji urlopowych, co jest jedną z zalet korzystania z platformy, która nie wymaga ręcznego dodawania informacji związanych z datami.

 

Wielowymiarowe przewidywanie szeregów czasowych za pomocą BQML
Struktura ARIMA_PLUS (z Podręcznik BQML)
 

Możesz się do tego odnieść strona po więcej informacji.

Jednak w przypadku zastosowań w świecie rzeczywistym przewidywanie szeregów czasowych nie jest takie proste. Oczywiście za pomocą ARIMA_PLUS udało nam się zidentyfikować wiele cykli i dodać interwencje do wielu szeregów czasowych, ale istnieje wiele czynników zewnętrznych związanych z danymi szeregów czasowych i tylko nieliczne zdarzenia mają miejsce oddzielnie. Stacjonarność może być trudna do znalezienia w danych szeregów czasowych.

W oryginalnej prezentacji przyglądałem się, jak postępować z danymi szeregów czasowych ze świata rzeczywistego w celu stworzenia modelu predykcyjnego rozłóż te szeregi czasowe, wyczyść rozłożone dane, zaimportuj je do Pythona, a następnie spleść ją z innymi zmiennymi, aby utworzyć wielowymiarową funkcję szeregu czasowego, oszacować związek przyczynowy i włączyć go do modelu predykcyjnego oraz oszacować stopień, w jakim efekt zmienia się wraz ze zmianami zdarzeń.

A w ciągu zaledwie kilku ostatnich miesięcy nowa funkcja umożliwiająca tworzenie wielowymiarowych funkcji szeregów czasowych ze zmiennymi zewnętrznymi (ARIMA_PLUS_XREG, XREG poniżej) stało się standardową funkcją w BQML.

Możesz o tym przeczytać tutaj(dostępna w wersji zapoznawczej od lipca 2023 r., ale przypuszczam, że będzie dostępna jeszcze w tym roku).

ubiegam się oficjalny samouczek aby zobaczyć, jak wypada w porównaniu z tradycyjnym jednowymiarowym modelem szeregów czasowych i możemy zobaczyć, jak to działa.

Kroki są takie same jak w samouczku, więc nie będę ich powielać, ale oto dwa modele, które stworzyłem. Najpierw stworzyłem tradycyjny ARIMA_PLUS model, a następnie XREG model wykorzystujący te same dane, ale dodający temperaturę i prędkość wiatru w tym czasie.

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

 

Model korzystający z tych wielu danych wyglądałby mniej więcej tak

 

Wielowymiarowe przewidywanie szeregów czasowych za pomocą BQML
Struktura ARIMA_PLUS_XREG (z Podręcznik BQML)
 

Porównuje się dwa modele z 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))

 

Wyniki znajdują się poniżej.

ARIMA_PLUS

 

Wielowymiarowe przewidywanie szeregów czasowych za pomocą BQML
 

ARIMA_PLUS_XREG

 

Wielowymiarowe przewidywanie szeregów czasowych za pomocą BQML
 

Widać, że Model XREG wyprzedza podstawowe wskaźniki wydajności, takie jak MAE, MSE i MAPE. (Oczywiście nie jest to rozwiązanie idealne, zależne od danychi możemy po prostu powiedzieć, że otrzymaliśmy kolejne przydatne narzędzie.)

Wielowymiarowa analiza szeregów czasowych jest w wielu przypadkach bardzo potrzebną opcją, ale często jest trudna do zastosowania z różnych powodów. Teraz możemy go użyć, jeśli przyczyny leżą w etapach danych i analizy. Wygląda na to, że mamy na to dobrą opcję, więc warto o tym wiedzieć i miejmy nadzieję, że okaże się to przydatne w wielu przypadkach.
 
 
Jeong Min Kwon jest niezależnym starszym analitykiem danych z ponad 10-letnim praktycznym doświadczeniem w wykorzystywaniu modeli uczenia maszynowego i eksploracji danych.
 

Znak czasu:

Więcej z Knuggety