N-BEATS для прогнозування часових рядів у Python

N-BEATS (Neural Basis Expansion Analysis for Time Series) — це модель глибокого навчання, спеціально розроблена для прогнозування часових рядів. Вона пропонує гнучку структуру для задач як з одновимірними, так і з багатовимірними прогнозами. N-BEATS працює без потреби в явному інженерії ознак, тому це більше схоже на інструмент autoML, ніж на інші фреймворки глибокого навчання.

Розглянемо, як використовувати N-BEATS через бібліотеку Darts.

Що таке N-BEATS?

N-BEATS — це архітектура нейронної мережі, призначена для навчання шаблонів безпосередньо з даних часових рядів.

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

N-BEATS — це універсальна модель. У багатьох задачах прогнозування вчені-даних витрачають багато часу на інженерію ознак та припущення про структуру даних. Однак N-BEATS в значній мірі усуває це. Він автономно вчиться розкладати часовий ряд на інтерпретовані компоненти, такі як тренд і сезонність, без необхідності явного визначення цих компонентів користувачем. Це не тільки економить час, але й знижує ризик внесення упереджень через ручний вибір ознак.

Прогнозування на довгострокову перспективу — ще одна область, де N-BEATS показує себе відмінно. Його рекурсивна архітектура дозволяє генерувати прогнози на великі горизонти часу з вражаючою точністю. Це особливо корисно в таких сферах, як економічне планування, моделювання клімату або будь-яка інша область, де довгострокові прогнози критичні для прийняття рішень.

N-BEATS пропонує баланс між складністю та інтерпретованістю. Хоча він використовує потужність нейронних мереж, він робить це таким чином, що дозволяє отримати певне розуміння процесу прийняття рішень. Така інтерпретованість може бути критично важливою в тих сферах, де розуміння "чому" за прогнозами є не менш важливим, ніж самі прогнози.

Як працює N-BEATS

N-BEATS складається з кількох повністю з’єднаних шарів, організованих у блоки. Кожен блок вивчає конкретний шаблон (наприклад, тренд або сезонність):

  1. Зворотний прохід: вивчає минулі компоненти часового ряду.
  2. Прямий прохід: прогнозує майбутні компоненти для прогнозування.
  3. Решта: коригує залишкову варіацію, яку не вдалося пояснити.

Це дозволяє моделі адаптуватися до різних шаблонів без явного розкладу.

Реалізація N-BEATS у Python

Існує кілька способів виклику моделі N-BEATS. Я надаю перевагу використанню бібліотеки Darts, оскільки вона спрощує реалізацію.

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

Встановлення

Переконайтесь, що у вас встановлений Darts:

pip install darts

Одновимірне прогнозування та тестування з N-BEATS

Результати тестування:  
MAPE: 10.35%  
RMSE: 6.34  
MAE: 5.69

pic

pic

Багатовимірне прогнозування з N-BEATS

N-BEATS може обробляти кілька змінних для покращення прогнозів для складних наборів даних.

Результати тестування:  
MAPE: 10.35%  
RMSE: 6.34  
MAE: 5.69

pic

Основні переваги N-BEATS

N-BEATS пропонує три основні переваги для прогнозування часових рядів. Він гнучкий і може використовуватися з різними типами даних без необхідності в значній кастомізації. Він універсальний, що дозволяє застосовувати його в фінансових ринках, прогнозуванні погоди або будь-де. І він точний.

Бонус: N-BEATS дивовижно зручний для користувачів.

Перекладено з: N-BEATS for Time Series Forecasting in Python

Leave a Reply

Your email address will not be published. Required fields are marked *