В мире данных, где каждое решение зависит от точности предсказаний, прогнозирование временных рядов (Time-Series Forecasting) остается одной из самых сложных и востребованных задач. Традиционные статистические методы, такие как ARIMA или экспоненциальное сглаживание, долгое время были стандартом индустрии, но они часто не справляются с сложными, нелинейными зависимостями в больших данных. На смену им приходят модели на основе глубокого обучения, и одной из самых перспективных среди них является TimesFM от Google.
В этой статье мы не просто поверхностно коснемся темы, а пройдем полный путь создания end-to-end рабочего процесса прогнозирования с использованием модели TimesFM 2.5. Мы разберем, как настроить окружение, сгенерировать реалистичные данные, обучить (или, в данном случае, использовать zero-shot) модель, оценить её точность с помощью строгих метрик и, что самое важное, интегрировать внешние переменные (ковариаты) для повышения качества прогнозов. Это руководство предназначено для аналитиков, data scientists и инженеров, которые хотят вывести свои навыки работы с временными рядами на новый уровень.
011. Подготовка окружения и генерация данных
Любая серьезная работа с машинным обучением начинается с подготовки инфраструктуры. В нашем случае мы используем Google Colab, что позволяет бесплатно получить доступ к GPU, что критически важно для ускорения инференса больших моделей. Однако, даже на CPU, TimesFM демонстрирует высокую эффективность благодаря оптимизациям.
Первым шагом является установка необходимых библиотек. Мы устанавливаем пакет timesfm[torch], который включает в себя поддержку PyTorch, а также стандартный стек для работы с данными: numpy, pandas и matplotlib. Важно сразу задать seed для генератора случайных чисел, чтобы обеспечить воспроизводимость результатов. Это особенно важно при сравнении моделей или отладке.
Но сами по себе библиотеки — это лишь инструмент. Ключ к успешному прогнозированию — это данные. В реальном мире данные редко бывают чистыми и простыми. Поэтому мы создаем синтетический, но максимально реалистичный датасет розничных продаж. Он включает в себя:

- Тренд: Линейный рост или падение продаж с течением времени.
- Сезонность: Недельная (пиковые дни — выходные) и годовая (сезонные товары, праздники).
- Влияние цен: Эластичность спроса по цене. Если цена растет, продажи падают.
- Акции (Promotions): Случайные события, резко повышающие спрос.
- Праздники: Специальные дни, влияющие на покупательскую активность.
- Влияние погоды: Например, спрос на напитки или одежду зависит от температуры.
- Шум: Случайные колебания, имитирующие непредсказуемость человеческого поведения.
Мы генерируем данные за длительный период для нескольких магазинов в разных регионах. Это позволяет модели учиться на разнообразных паттернах, а не переобучаться на одном специфичном магазине.
022. Загрузка и компиляция модели TimesFM 2.5
TimesFM 2.5 — это фундаментная модель (Foundation Model) для временных рядов. В отличие от традиционных моделей, которые нужно обучать на каждом конкретном наборе данных заново, TimesFM предварительно обучена на огромном массиве разнообразных временных рядов. Это позволяет ей делать прогнозы в режиме zero-shot, то есть без дополнительной дообучки под вашу задачу.
Загрузка модели осуществляется через Hugging Face. Мы инициализируем объект TimesFM_2p5_200M_torch. Цифра 200M указывает на количество параметров модели (200 миллионов), что делает её достаточно легкой для развертывания, но при этом мощной для захвата сложных паттернов.

Ключевым этапом является компиляция модели. В PyTorch это означает преобразование модели в оптимизированный граф вычислений. Мы задаем базовую конфигурацию:
max_context: Максимальная длина истории, которую модель может учитывать.max_horizon: Максимальная длина прогноза вперед.normalize_inputs: Нормализация входных данных для стабильности работы нейросети.use_continuous_quantile_head: Включение режима вероятностного прогнозирования, который выдает не одно число, а распределение.
033. Zero-shot прогнозирование и визуализация
После загрузки мы передаем в модель исторические данные одного из магазинов. TimesFM возвращает два типа прогнозов:
- Point Forecast (Точечный прогноз): Среднее значение или медиана распределения. Это то, что мы обычно видим в классических графиках.
- Probabilistic Forecast (Вероятностный прогноз): Набор квантилей. Это позволяет оценить неопределенность. Например, верхний квантиль показывает сценарий «оптимистичного» пика, а нижний — «пессимистичного» минимума.
Визуализация результатов показывает, как модель «видит» будущее. Оранжевая линия — медианный прогноз, а полупрозрачная область вокруг неё — доверительный интервал. Обратите внимание, что ширина этой области увеличивается с ростом горизонта прогнозирования. Э
Источник: MarkTechPost ↗
