Багатовимірне прогнозування часових рядів за допомогою BQML - KDnuggets

Багатовимірне прогнозування часових рядів за допомогою BQML – KDnuggets

Вихідний вузол: 2796796

Багатовимірне прогнозування часових рядів за допомогою BQML
Зображення з Pexels
 

Минулої зими я зробив презентацію на тему "Більш передбачувана модель часових рядів з BQMLGDG DevFest Tashkent 2022 в Ташкенті, столиці Узбекистану.

Я збирався поділитися деякими матеріалами та кодом після DevFest, який я використав у презентації, але минув час, і в BQML було випущено нові функції, які частково перекривають вміст.

Тому замість цього я коротко згадаю нові функції та деякі з речей, які все ще діють.

Дані часових рядів використовується багатьма організаціями для різних цілей, і важливо зазначити, що "прогнозна аналітикаs» — це все про «майбутнє» в часі. Прогностична аналітика часових рядів використовувалася в короткостроковій, середньостроковій і довгостроковій перспективах, і хоча вона містить багато неточностей і ризиків, вона також постійно вдосконалюється.

Оскільки «передбачення» здається дуже корисним, у вас може виникнути спокуса застосувати модель прогнозування часових рядів, якщо у вас є дані часових рядів. Але моделі прогнозування часових рядів зазвичай вимагають інтенсивних обчислень, і якщо у вас багато даних, це буде більш інтенсивним обчисленням. Тому обробляти його, завантажувати в аналітичне середовище та аналізувати це громіздко й важко

Якщо ви використовуєте Google BigQuery для керування даними можна використовувати BQML (BigQuery ML), щоб застосувати алгоритми машинного навчання до ваших даних простим, легким і швидким способом. Багато людей використовують BigQuery для обробки великої кількості даних, і багато з цих даних часто є даними часових рядів. І BQML також підтримує моделі часових рядів.

Основою моделі часових рядів, яка зараз підтримується BQML, є Авторегресійне інтегроване ковзне середнє (ARIMA) модель. Модель ARIMA прогнозує, використовуючи лише наявні дані часових рядів, і, як відомо, вона має гарну продуктивність короткострокового прогнозування, і оскільки вона поєднує в собі AR і MA, це популярна модель, яка може охоплювати широкий спектр моделей часових рядів.

Однак ця модель загалом потребує обчислень, і оскільки вона використовує лише дані часових рядів із нормальністю, її важко використовувати у випадках із тенденціями чи сезонністю. тому ARIMA_PLUS у BQML містить кілька додаткових функцій як параметри. Ви можете додати до своєї моделі декомпозицію часових рядів, фактори сезонності, стрибки та спади, зміни коефіцієнтів тощо, або ви можете переглянути їх окремо та вручну налаштувати модель. Особисто мені також подобається той факт, що ви можете налаштувати періодичність, автоматично додаючи варіанти свят, що є однією з переваг використання платформи, яка не вимагає від вас вручну додавати інформацію, пов’язану з датами.

 

Багатовимірне прогнозування часових рядів за допомогою BQML
Структура ARIMA_PLUS (від Посібник з BQML)
 

Ви можете посилатися на це сторінка для отримання додаткової інформації.

Однак, коли мова заходить про реальні додатки, прогнозувати часові ряди не так просто, як це. Звичайно, ми змогли ідентифікувати кілька циклів і додати втручання до кількох часових рядів за допомогою ARIMA_PLUS, але існує багато зовнішніх факторів, пов’язаних з даними часових рядів, і лише дуже мало подій відбуваються ізольовано. У даних часових рядів може бути важко знайти стаціонарність.

У оригінальній презентації я розглянув, як працювати з цими реальними даними часових рядів для створення моделі прогнозування, щоб розкласти ці часові ряди, очистіть розкладені дані, імпортуйте їх у Python, а потім поєднати його з іншими змінними, щоб створити функцію багатовимірного часового ряду, оцінити причинно-наслідковий зв’язок і включити його в модель прогнозування, а також оцінити ступінь, до якої ефект змінюється зі змінами подій.

І лише за останні кілька місяців, нова функція для створення багатовимірних функцій часових рядів із зовнішніми змінними(ARIMA_PLUS_XREG, XREG нижче) стала прямою функцією BQML.

Ви можете про це все прочитати тут(це в попередній версії станом на липень 2023 року, але я припускаю, що він буде доступний пізніше цього року).

Я подаю заявку офіційний підручник щоб побачити, як вона порівнюється з традиційною однофакторною моделлю часових рядів, і ми можемо побачити, як це працює.

Кроки такі самі, як і в підручнику, тому я не буду їх дублювати, але ось дві створені мною моделі. Спочатку я створив традиційний ARIMA_PLUS модель, а потім ан XREG модель, використовуючи ті самі дані, але додаючи температуру та швидкість вітру в той час.

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

 

Модель, яка використовує ці численні дані, виглядатиме приблизно так

 

Багатовимірне прогнозування часових рядів за допомогою BQML
Структура ARIMA_PLUS_XREG (від Посібник з BQML)
 

Дві моделі порівнюються з 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))

 

Результати нижче.

ARIMA_PLUS

 

Багатовимірне прогнозування часових рядів за допомогою BQML
 

ARIMA_PLUS_XREG

 

Багатовимірне прогнозування часових рядів за допомогою BQML
 

Ви можете побачити, що Модель XREG випереджає базові показники продуктивності, такі як MAE, MSE і MAPE. (Очевидно, що це не ідеальне рішення, залежить від даних, і ми можемо просто сказати, що ми отримали ще один корисний інструмент.)

Багатовимірний аналіз часових рядів є дуже необхідною опцією в багатьох випадках, але її часто важко застосувати через різні причини. Тепер ми можемо використовувати його, якщо причини криються в даних і етапах аналізу. Схоже, у нас є хороший варіант для цього, тому добре знати про нього, і, сподіваюся, він буде корисним у багатьох випадках.
 
 
Чон Мін Квон є позаштатним старшим спеціалістом з обробки даних із понад 10 роками практичного досвіду використання моделей машинного навчання та інтелектуального аналізу даних.
 

Часова мітка:

Більше від KDnuggets