Прогнозирование временных рядов играет ключевую роль в самых разных отраслях: от предсказания тенденций на фондовом рынке до оптимизации цепочек поставок и управления запасами.
Однако традиционные модели, такие как ARIMA, экспоненциальное сглаживание (ETS), Prophet, а также современные подходы глубокого обучения — например, LSTM и архитектуры на базе трансформеров — сталкиваются с рядом проблем.
Они испытывают трудности при анализе сложных нелинейных данных, что ограничивает их способность работать с нелинейными паттернами. Кроме того, многие из них неспособны эффективно справляться с крупными и разнородными наборами данных, что сказывается на их масштабируемости. Ещё одной значительной преградой является необходимость ручной настройки, требующей больших усилий для подготовки данных и инженерии признаков.
Осознавая эти вызовы, команда Nixtla представила TimeGPT — модель для временных рядов, созданную для преодоления ограничений традиционных инструментов прогнозирования. Используя передовые нейронные архитектуры, TimeGPT сочетает масштабируемость, адаптивность и эффективность, что позволяет ей улавливать как краткосрочные колебания, так и долгосрочные тренды без необходимости в трудоёмкой ручной настройке.
Модель для современных прогнозов
TimeGPT была разработана как универсальное решение для прогнозирования временных рядов. В основе модели лежит сочетание передовых технологий трансформеров с адаптациями, характерными для временных рядов. Вот основные этапы её работы:
Кодирование позиций. На первом этапе TimeGPT использует позиционное кодирование для сохранения последовательности данных, что помогает модели правильно интерпретировать порядок и временные интервалы между точками.
Структура энкодера‑декодера с механизмом самовнимания. После кодирования данные обрабатываются через многослойный энкодер‑декодер с резидуальными соединениями и нормализацией. Энкодер анализирует закодированные данные с помощью слоёв самовнимания, выявляя краткосрочные и долгосрочные зависимости, а декодер уточняет эту информацию для формирования прогноза.
Линейный проекционный слой. Наконец, выход декодера переводится в размерности окна прогнозирования через линейный проекционный слой, что позволяет получать финальные значения на основе выявленных паттернов.
Тренировка универсальности в прогнозировании временных рядов
Универсальность TimeGPT обеспечивается тщательно продуманной стратегией работы с разнообразными наборами данных. Модель обучена на массиве из 100 миллиардов точек данных, охватывающих такие области, как финансы, здравоохранение и промышленность. Такой подход позволяет модели выявлять широкий спектр закономерностей и зависимостей, делая её адаптивным инструментом, готовым к применению в различных отраслях.
Обучение модели проводилось на графических процессорах NVIDIA A10G в течение нескольких дней с использованием оптимизированных гиперпараметров. Для повышения точности TimeGPT применяет метод конформного предсказания — гибкий, непараметрический подход, который формирует интервалы прогнозирования без строгих предположений о распределении данных.
Сравнение TimeGPT с традиционными моделями временных рядов
Чтобы оценить производительность TimeGPT, важно сравнить её с традиционными методами прогнозирования. Проанализируем, как TimeGPT сопоставляется с классическими моделями ARIMA, ETS и Prophet на основе созданного набора данных, отражающего недельный объём продаж за 10 лет.
Далее представлены результаты прогнозов каждой модели в виде графиков, анализируя которые можно выявить, в чём TimeGPT выделяется.
Для оценки точности моделей были использованы метрики среднеквадратичной ошибки (MAE) и средней абсолютной процентной ошибки (MAPE).
Результаты следующие. Для ARIMA средняя абсолютная ошибка составила 3,542, что указывает на наибольшую погрешность прогноза. MAPE здесь также оказалась высокой — 38,10%, что свидетельствует о значительном отклонении от реальных значений. Модель ETS показала лучший результат с минимальной MAE, равной 0,973, и MAPE на уровне 9,23%, что делает её наиболее точной среди рассмотренных методов. В случае Prophet MAE составила 1,284, что несколько выше, чем у ETS, но заметно ниже, чем у ARIMA. Её MAPE равна 12,54%, что также свидетельствует о хорошей точности. Наконец, TimeGPT продемонстрировала MAE 1,656, заняв промежуточное положение между ETS и ARIMA. MAPE составила 16,52% — выше, чем у ETS и Prophet, но значительно лучше, чем у ARIMA.
Как показывает диаграмма, на волнообразном наборе данных за десять лет ETS доказала свою эффективность, показав наилучшие результаты как по абсолютной, так и процентной ошибке. Prophet и TimeGPT также показали достойные результаты, причём TimeGPT может быть привлекательной альтернативой в ситуациях, где допустимы небольшие погрешности. ARIMA, напротив, значительно уступает по точности.
Как файнтюнинг улучшает производительность TimeGPT
Файнтюнинг играет ключевую роль в улучшении моделей, которые изначально обучены на обширных наборах данных, таких как TimeGPT. Без этого шага модели могут сталкиваться с трудностями в решении специфических задач, характерных для определённых областей.
Для файнтюнинга TimeGPT важны два параметра. finetune_steps — это количество итераций, используемых для настройки модели, что влияет на скорость и глубину её адаптации к новым данным.
finetune_depth: число параметров, которые корректируются в процессе файнтюнинга. Значение этого параметра варьируется от 1 до 5, где 1 означает изменение небольшого числа параметров, 5 — настройку максимального количества. Увеличение finetune_depth повышает время, необходимое для генерации прогнозов.
Оценка производительности TimeGPT после тонкой настройки
Чтобы оценить влияние тонкой настройки на TimeGPT, был выбран датасет на Kaggle, содержащий разнообразные временные ряды. Этот набор предоставил возможность протестировать способность модели адаптироваться и уточнять свои прогнозы при работе с реальными паттернами.
Был выполнен файнтюнинг модели TimeGPT с использованием этого набора данных. В процессе экспериментов я варьировал параметры finetune_depth и finetune_steps, однако изменения параметра finetune_depth не привели к значительным улучшениям, поэтому внимание было сосредоточено на результатах тестов, выполненных с параметром finetune_steps. Для тонкой настройки использовались данные за период с 1985 по 2015 год, а для оценки модели — данные за 2016 и 2017 годы с горизонтом прогнозирования в 24 месяца.
Код, которым был выполнен файнтюнинг TimeGPT:
from nixtla import NixtlaClient
from sklearn.metrics import mean_absolute_error
import pandas as pd
# Инициализация клиента TimeGPT через API-ключ
nixtla_client = NixtlaClient(api_key='YOUR-API-KEY')
# Загрузка датасета с информацией о производстве электроэнергии и предварительная обработка данных
df = pd.read_csv('Electric_Production.csv')
df.rename(columns={'DATE': 'date', 'IPG2211A2N': 'power'}, inplace=True)
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y')
# Разделение данных на обучающую и тестовую выборки
train_cutoff = '2015-12-31'
df_train = df[df['date'] <= '2015-12-31']
df_test = df[df['date'].between('2016-01-01', '2017-12-31')]
# Генерация прогнозов без применения файнтюнинга
preds_no_ft = nixtla_client.forecast(
df=df_train, h=24,
time_col='date', target_col='power',
)
# Генерация прогнозов с 50 итерациями файнтюнинга
preds_ft_50_steps = nixtla_client.forecast(
df=df_train, h=24, finetune_steps=50,
time_col='date', target_col='power',
)
# Генерация прогнозов с 500 итерациями файнтюнинга
preds_ft_500_steps = nixtla_client.forecast(
df=df_train, h=24, finetune_steps=500,
time_col='date', target_col='power',
)
# Оценка точности прогнозов через показатель среднеквадратичной ошибки (MAE)
print(mean_absolute_error(df_test['power'], preds_no_ft["TimeGPT"]))
print(mean_absolute_error(df_test['power'], preds_ft_50_steps["TimeGPT"]))
print(mean_absolute_error(df_test['power'], preds_ft_500_steps["TimeGPT"]))
Результаты оказались весьма примечательными: у модели без файнтюнинга MAE составила 7,30, у модели с 50 итерациями файнтюнинга — 3,98, у модели с 500 итерациями — 3,67. Таким образом, файнтюнинг позволил уменьшить число ошибок на 50%, оказавшись крайне эффективным.
Если же подвергнуть файнтюнингу классические методы, показатель MAE составляет 3,69 для экспоненциального сглаживания, 6,18 — для Prophet. В отличие от ранее описанного результата, TimeGPT с файнтюнингом, объёмом 500 итераций, превосходит классические методы. Метод экспоненциального сглаживания показывает результат, очень близкий к TimeGPT.
Сегодня мы убедились, что тонкая настройка значительно улучшает результаты работы TimeGPT. Однако важно отметить, что процесс настройки — это итеративный эксперимент, требующий тестирования различных комбинаций параметров, например finetune_depth и finetune_steps, чтоыб найти оптимальное решение. Этот подход позволяет адаптировать модель к специфике набора данных.
Источники: