Прогнозирование с помощью TensorFlow 2.0

Временные ряды, связанные с бизнесом, часто являются непостоянными или дискретными процессами, основанными на времени. С практической точки зрения компаниям может быть полезно знать или иметь возможность количественно оценить, когда временной ряд будет на пике или минимуме в будущем. Цель состоит в том, чтобы зафиксировать тенденции и периодические модели и спрогнозировать сигнал для ›1 выборки в будущем. Пример записной книжки доступен в разделе TensorFlow Formulation этой статьи.

Тренд, периодичность и шум

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

Существует предел времени детализации, который периодический или повторяющийся шаблон может быть записан. При цифровой обработке сигналов частота Найквиста - это минимальный период дискретизации, необходимый для захвата шаблона, который повторяется с периодом N. По сути, частота дискретизации должна быть меньше половины одного цикла повторяющегося шаблона. Например, предположим, что в данных есть функция, которая измеряет количество продаж каждые 6 часов. Наиболее детализированный шаблон, который можно зафиксировать, будет повторяться каждые 12 часов.

Формулировка модели авторегрессии

Модели авторегрессии и системы обратной связи с разомкнутым контуром, тип системы управления, имеют некоторое сходство. Обе эти системы зависят от предыдущего вывода модели. Мы хотели бы, чтобы обе эти системы были стабильными, то есть не допускали экспоненциальной отдачи. Эти системы отличаются тем, что прогнозы авторегрессии могут зависеть от нескольких запаздывающих входных функций. Форма модели авторегрессии показана в уравнении (0).

Где T - количество запаздывающих функций, w - веса авторегрессии, y (t-i) - запаздывающий временной ряд, а y * (t + 1) - прогнозируемое значение в t + 1.

Цель состоит в том, чтобы создать линеаризованную форму модели авторегрессии, используя приближение ряда Тейлора 1-го порядка. Формула авторегрессии является рекурсивной, то есть следующее значение зависит от каскада предыдущих значений. Значение y (t + 1) оценивается с помощью разложения f (t + 1) в ряд Тейлора вокруг временного шага t. Уравнение (2) показывает оценочное значение y (t + 1) с использованием приближения ряда Тейлора 1-го порядка. Обратите внимание, что константа -1 в правой части уравнения (2) будет поглощена весами.

Где f (t) - это рекурсивный плотный слой, который представляет y (t) с некоторым членом ошибки, y * - это прогнозируемые выходные данные, w_t - веса, а T - количество запаздывающих функций. Уравнение (3) показывает разложение в ряд Тейлора для простого случая, когда y (t + 1) зависит от предыдущего значения f (t + 1). Причина, по которой я использовал f (t) в уравнении (2) вместо прямого использования y (t), заключается в том, что y (t) представляет фактические запаздывающие точки данных, а не функцию, зависящую от времени.

Обратите внимание, что в уравнении (3.1) мы взяли частную производную от f (t + 1) по f (t) и по w (t). Эта частная производная приведет к f (t), которая является еще одной функцией, которая может быть расширена с помощью расширения в ряд Тейлора 1-го порядка. Интересно, что это привело бы к той же форме модели AR, с той лишь разницей, что бесконечное количество запаздывающих функций.

(3.2) можно переформулировать как линейную модель, заменив рекурсивный слой, f (t), значениями предыдущего временного ряда для каждого временного шага с запаздыванием, т. Е. Значение f (t) заменяется на y (t). Наконец, для создания модели авторегрессии могут быть добавлены дополнительные компоненты с запаздыванием.

Окончательная форма, используемая для обучения модели авторегрессии, показана в уравнении (4). Перехват ограничивается суммой весов авторегрессии. Это позволяет модели быть беспристрастной к центральной тенденции и адаптироваться с течением времени.

Где N - количество точек данных, T - общее количество запаздывающих функций, w - веса авторегрессии, y (t-i) - запаздывающий временной ряд, а y * (t + 1) - прогнозируемое значение в t + 1. Целевая функция, MSE, показанная в уравнении (5), дифференцируема по параметрам и может быть оптимизирована с помощью TensorFlow.

Используя ту же логику, можно прогнозировать многовариантные временные ряды. Предыдущие значения для всех временных рядов используются как ковариаты для одновременного прогнозирования следующего значения для всех временных рядов. В этом случае точка пересечения представляет собой сумму весов авторегрессии выходного узла. Многовариантная формулировка позволяет складывать несколько слоев авторегрессии в стопку для создания глубокой авторегрессионной модели.

Минимальная дневная температура и количество осадков в Мельбурне, Австралия

Набор данных Минимальная дневная температура и количество осадков в Мельбурне, Австралия использовался для построения модели авторегрессионного прогнозирования. Этот набор данных включает температуру и количество осадков за 3625 дней, начиная с 1981 года. Было несколько пропущенных значений, но эти значения были интерполированы для каждой серии. Эти ряды одновременно прогнозировались с использованием глубокой авторегрессионной модели.

Температура

График ниже показывает температуру в Мельбурне во временном интервале. Похоже, что существует явная периодическая составляющая температуры с течением времени.

Осадки

График ниже показывает серию «Дождь» в Мельбурне за определенный период времени. Осадки ограничиваются нулевыми сантиметрами дождя в день, что затрудняет моделирование с использованием авторегрессионной модели. Чтобы использовать Rainfall, было создано 60 скользящее среднее для осадков, показанное на втором графике ниже.

Построение набора данных

  1. Две серии, то есть температура и дождь, были сначала стандартизированы перед тренировкой.
  2. Набор данных был построен путем создания 365 запаздывающих функций для каждого наблюдения во временном ряду. Например, наблюдение 365 + 1 будет иметь предыдущие функции 365 * 2.
  3. Первые 365 наблюдений были исключены из обучающего набора данных, чтобы избежать пропущенных значений.
  4. Последние 1130 наблюдений, или 3 года, для обоих временных рядов использовались в качестве отложенного набора для проверки эффективности прогнозов.

Состав TensorFlow

Блок кода ниже показывает код TensorFlow для модели авторегрессии, сформулированной выше. Образец записной книжки можно найти здесь.

Модель имеет ввод размера (N, M), где N - количество точек данных, а M соответствует 730 запаздывающим характеристикам как для дождя, так и для температуры. Использовался скрытый слой размером 30 с активацией авторегрессии. Модель была обучена со стохастическим градиентным спуском, среднеквадратичной потерей ошибок, оптимизатором Адама, ранней остановкой и небольшой скоростью обучения. Хотя использовалась ранняя остановка, это могло не потребоваться, поскольку модель авторегрессии должна быть по своей сути регуляризована.

Снежный авторегрессионный временной ряд

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

Чтобы оценить стабильность прогноза, модель была обучена 100 раз на различных случайных проверочных разделениях, и было создано 100 моделей. Для каждой модели из удерживаемого набора был создан снежный временной ряд. Ожидаемое значение и стандартное отклонение использовались для создания прогноза и доверительного интервала соответственно.

Результат прогноза температуры

Результат прогноза осадков (60 скользящего среднего)

На графиках выше фактические наблюдения, обучающие прогнозы и снежные прогнозы показаны зеленой, синей и оранжевой сериями соответственно. Прогнозируемые и прогнозируемые значения температуры, по-видимому, отражают глобальную периодическую модель. Однако изменение во времени не было отражено в изменении 100 прогнозов. Прогнозируемые значения дождя (60 скользящих средних), по-видимому, не соответствуют набору обучающих данных. Переоснащение могло произойти из-за использования функции скользящего среднего. Тренд для этого ряда был точно зафиксирован в течение ~ 1 года прогнозных значений, прежде чем он превратился в периодическую модель. Тенденция не была точно зафиксирована через ~ 1 год.

Вывод

Для формулировки целевой функции и определения модели использовалось приближение 1-го порядка для функции авторегрессии. Было обнаружено, что точка пересечения для слоя активации авторегрессии была ограничена суммой входных весов. Модель глубокой авторегрессии была создана с использованием TensorFlow 2.0 путем наложения слоев авторегрессии. Модель использовалась для одновременного прогнозирования температуры и осадков в Мельбурне, Австралия. Формула авторегрессии не работала с обрезанными временными рядами, и для прогнозирования осадков требовалось преобразование скользящего среднего. Прогнозы были созданы путем повторного использования предыдущих прогнозов в модели. Модель уловила небольшие глобальные тенденции и периодические закономерности.

Сравнение прогнозов FB Prophet

Как эта модель соотносится с FB Prophet? Prophet - это полный пакет для прогнозирования временных рядов с множеством настраиваемых параметров. Для сравнения я использовал готовую модель из краткого руководства.

Похоже, что Пророк использует модель периодограммы. Он в основном выбирает верхние периодические частоты, f, и обертывает их функциями sin и косинуса для создания набора функций, то есть sin (f) и cos (f). Пакет также, кажется, также использует выходные данные модели логистической регрессии. Модель логистической регрессии предсказывает, пойдет ли ряд вверх или вниз. Кажется, что пакет поддерживает добавление дополнительных переменных к прогнозу, но пока не поддерживает одновременное многомерное прогнозирование. Сравнение было добавлено в пример записной книжки.

Результат прогноза температуры

Результат прогноза осадков (60 скользящего среднего)

На графиках выше фактические наблюдения, обучающие прогнозы и снежные прогнозы показаны зеленой, синей и оранжевой сериями соответственно. Прогнозируемые и прогнозируемые значения температуры, по-видимому, отражают глобальную периодическую модель. Изменение во времени было зафиксировано изменением в 100 прогнозах. Тенденция для температуры, кажется, имеет тенденцию к повышению, что может не соответствовать действительной тенденции. Прогнозируемые значения осадков (60 скользящих средних), по-видимому, отражают общую годичную периодическую модель. Шаблон остается неизменным на протяжении всей валидации. Тенденция для осадков, похоже, имеет тенденцию к снижению, что может не совпадать с реальной тенденцией.