- BrainTools - https://www.braintools.ru -

Прогнозируем временные данные с TimeGPT

Прогнозируем временные данные с TimeGPT - 1

Прогнозирование временных рядов играет ключевую роль в самых разных отраслях: от предсказания тенденций на фондовом рынке до оптимизации цепочек поставок и управления запасами.

Однако традиционные модели, такие как ARIMA [1], экспоненциальное сглаживание (ETS) [2], Prophet [3], а также современные подходы глубокого обучения [4] — например, LSTM [5] и архитектуры на базе трансформеров — сталкиваются с рядом проблем.

Они испытывают трудности при анализе сложных нелинейных данных, что ограничивает их способность работать с нелинейными паттернами. Кроме того, многие из них неспособны эффективно справляться с крупными и разнородными наборами данных, что сказывается на их масштабируемости. Ещё одной значительной преградой является необходимость ручной настройки, требующей больших усилий для подготовки данных и инженерии признаков.

Осознавая эти вызовы, команда Nixtla представила TimeGPT [6] — модель для временных рядов, созданную для преодоления ограничений традиционных инструментов прогнозирования. Используя передовые нейронные архитектуры, TimeGPT сочетает масштабируемость, адаптивность и эффективность, что позволяет ей улавливать как краткосрочные колебания, так и долгосрочные тренды без необходимости в трудоемкой ручной настройке.

Модель для современных прогнозов

TimeGPT была разработана как универсальное решение для прогнозирования временных рядов. В основе модели лежит сочетание передовых технологий трансформеров с адаптациями, характерными для временных рядов. Вот основные этапы её работы:

  1. Кодирование позиций. На первом этапе TimeGPT использует позиционное кодирование для сохранения последовательности данных, что помогает модели правильно интерпретировать порядок и временные интервалы между точками.

  2. Структура энкодера‑декодера с механизмом самовнимания. После кодирования данные обрабатываются через многослойный энкодер‑декодер с резидуальными соединениями и нормализацией. Энкодер анализирует закодированные данные с помощью слоёв самовнимания, выявляя краткосрочные и долгосрочные зависимости, а декодер уточняет эту информацию для формирования прогноза.

  3. Линейный проекционный слой. Наконец, выход декодера переводится в размерности окна прогнозирования через линейный проекционный слой, что позволяет получать финальные значения на основе выявленных паттернов.

Архитектура модели TimeGPT (источник)

Архитектура модели TimeGPT (источник [7])

Тренировка универсальности в прогнозировании временных рядов

Универсальность TimeGPT обеспечивается тщательно продуманной стратегией работы с разнообразными наборами данных. Модель обучена на массиве из 100 миллиардов точек данных, охватывающих такие области, как финансы, здравоохранение и промышленность. Такой подход позволяет модели выявлять широкий спектр закономерностей и зависимостей, делая её адаптивным инструментом, готовым к применению в различных отраслях.

Обучение модели проводилось на графических процессорах NVIDIA A10G в течение нескольких дней с использованием оптимизированных гиперпараметров. Для повышения точности TimeGPT применяет метод конформного предсказания [8] — гибкий, непараметрический подход, который формирует интервалы прогнозирования без строгих предположений о распределении данных.

Сравнение TimeGPT с традиционными моделями временных рядов

Чтобы оценить производительность TimeGPT, важно сравнить её с традиционными методами прогнозирования. Проанализируем, как TimeGPT сопоставляется с классическими моделями ARIMA, ETS и Prophet на основе созданного набора данных, отражающего недельный объём продаж за 10 лет.

Временной ряд с периодическими колебаниями, показывающий повторяющиеся во времени паттерны

Временной ряд с периодическими колебаниями, показывающий повторяющиеся во времени паттерны

Далее представлены результаты прогнозов каждой модели в виде графиков, анализируя которые можно выявить, в чём TimeGPT выделяется.

Сопоставление прогнозов моделей и реальных данных

Сопоставление прогнозов моделей и реальных данных
Показатели MAE и MAPE четырёх моделей

Показатели MAE и MAPE четырёх моделей

Для оценки точности моделей были использованы метрики среднеквадратичной ошибки [9] (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 [10], содержащий разнообразные временные ряды. Этот набор предоставил возможность протестировать способность модели адаптироваться и уточнять свои прогнозы при работе с реальными паттернами.

Временной ряд, отражающий объёмы производства электроэнергии

Временной ряд, отражающий объёмы производства электроэнергии

Был выполнен файнтюнинг модели TimeGPT с использованием этого набора данных. В процессе экспериментов я варьировал параметры finetune_depth и finetune_steps, однако изменения параметра finetune_depth не привели к значительным улучшениям, поэтому внимание [11] было сосредоточено на результатах тестов, выполненных с параметром 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"]))
Сравнение между реальными данными и предсказаниями трёх экземпляров TimeGPT: без файнтюнинга, с 50 и 500 итерациями

Сравнение между реальными данными и предсказаниями трёх экземпляров TimeGPT: без файнтюнинга, с 50 и 500 итерациями

Результаты оказались весьма примечательными: у модели без файнтюнинга MAE составила 7,30, у модели с 50 итерациями файнтюнинга — 3,98, у модели с 500 итерациями — 3,67. Таким образом, файнтюнинг позволил уменьшить число ошибок на 50%, оказавшись крайне эффективным.

Сравнение между реальными данными и предсказаниями с файнтюнингом — через TimeGPT, Prophet и методом экспоненциального сглаживания

Сравнение между реальными данными и предсказаниями с файнтюнингом — через TimeGPT, Prophet и методом экспоненциального сглаживания

Если же подвергнуть файнтюнингу классические методы, показатель MAE составляет 3,69 для экспоненциального сглаживания, 6,18 — для Prophet. В отличие от ранее описанного результата, TimeGPT с файнтюнингом, объёмом 500 итераций, превосходит классические методы. Метод экспоненциального сглаживания показывает результат, очень близкий к TimeGPT.


Сегодня мы убедились, что тонкая настройка значительно улучшает результаты работы TimeGPT. Однако важно отметить, что процесс настройки — это итеративный эксперимент, требующий тестирования различных комбинаций параметров, например finetune_depth и finetune_steps, чтоыб найти оптимальное решение. Этот подход позволяет адаптировать модель к специфике набора данных.

Источники:

Автор: dmitrifriend

Источник [14]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/11443

URLs in this post:

[1] ARIMA: https://ru.wikipedia.org/wiki/ARIMA

[2] экспоненциальное сглаживание (ETS): https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%81%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#:~:text=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5%20%D1%81%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%E2%80%94%20%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%20%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F,%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%2C%20%D0%B8%D0%BB%D0%B8%20%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%20%D0%91%D1%80%D0%B0%D1%83%D0%BD%D0%B0.&text=%D0%9F%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8B%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B9%20%D1%81%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%88%D0%B8%D1%80%D0%B5%20%E2%80%94%20%D0%BE%D1%82%200%20%D0%B4%D0%BE%202.

[3] Prophet: https://facebook.github.io/prophet/

[4] обучения: http://www.braintools.ru/article/5125

[5] LSTM: https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BB%D0%B3%D0%B0%D1%8F_%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D1%81%D1%80%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C

[6] TimeGPT: https://docs.nixtla.io/

[7] источник: https://arxiv.org/html/2310.03589v3

[8] конформного предсказания: https://en.wikipedia.org/wiki/Conformal_prediction

[9] ошибки: http://www.braintools.ru/article/4192

[10] датасет на Kaggle: https://www.kaggle.com/datasets/shenba/time-series-datasets?select=Electric_Production.csv

[11] внимание: http://www.braintools.ru/article/7595

[12] From ARIMA to TimeGPT — A New Era in Time Series Prediction (Part I): https://medium.com/@andrepedrinho/from-arima-to-timegpt-a-new-era-in-time-series-prediction-part-i-f65602fead04

[13] From ARIMA to TimeGPT — A New Era in Time Series Prediction (Part II): https://medium.com/@andrepedrinho/from-arima-to-timegpt-a-new-era-in-time-series-prediction-part-ii-136ff41ca40a

[14] Источник: https://habr.com/ru/companies/bothub/articles/875738/?utm_source=habrahabr&utm_medium=rss&utm_campaign=875738

www.BrainTools.ru

Rambler's Top100