Моделирование временных рядов соединяет точки в звездной ночи; прогнозирование временных рядов расширяет мечты, поскольку ветер сметает звезды в следы. Мы с трепетом смотрим на голубую летнюю ночь.

В частях I и II серии Временные ряды со светильником Zillow я провел вас через этапы исследования данных и спецификации модели, теперь мы готовы к моделированию!

Luminaire предлагает два основных подхода к моделированию временных рядов: (A) моделирование фильтра Калмана и (B) структурное моделирование. Если вы впервые слышите фильтр Калмана, возможно, вы не знаете, что многие устройства в нашей жизни полагались на него. Фильтр Калмана оценивает траекторию движущегося объекта. На вашем iPhone или телефоне Android есть картографическое приложение, которое определяет местоположение телефона и расстояние до него. Автомобили, грузовые автомобили, корабли, самолеты или дроны оснащены GPS (глобальной системой позиционирования) для более точного отслеживания движения. Известным ранним применением был навигационный компьютер Apollo, который доставил Нила Армстронга на Луну и, что наиболее важно, вернул его.

Кроме того, временной ряд можно рассматривать как комбинацию закономерностей, таких как линейный тренд, сезонность и эффект праздников. Таким образом, структурное моделирование (B) попыталось смоделировать эти шаблоны явно.

Если вы не читали части I и II из серии светильников Временные ряды со светильником Zillow », я предлагаю вам сначала прочитать их. Если вы впервые нашли эту статью и не читали части I и II, позвольте мне сказать вам, что Luminaire - это продукт с открытым исходным кодом от Zillow для прогнозирования временных рядов и обнаружения аномалий. Вы можете посетить домашнюю страницу светильников Luminaire Github, или эту статью Автоматическое и самообнаружение аномалий в Zillow с использованием Luminaire или эту статью.

Данные об использовании велосипедов

Я собираюсь использовать ежедневные данные велосипедного обмена, чтобы продемонстрировать процесс, который использовался в предыдущей статье Временные ряды со светильником Zillow - Часть II Оптимальные характеристики. Системы проката велосипедов - это новая версия традиционного проката велосипедов. Пользователь может легко взять напрокат велосипед в одном месте и вернуться обратно в другом месте. Ежедневный счет совместного использования велосипедов сильно зависит от погодных условий и сезонности (дня недели и сезона). Данные о прокате велосипедов обладают сильным сезонным эффектом и эффектом точки изменения, как показано в Бизнес-прогнозировании с помощью« Пророка Facebook». Следующий код сначала загружает данные веломаркинга, отображает их на графике, а затем выполняет исследование данных, как это сделано в Части I. Исследование данных определяет множество точек изменения.

Блокнот Jupyter из этой статьи доступен для скачивания по этой ссылке на github.

Исследование данных

Первым шагом моделирования временных рядов является исследование данных, как я объяснил в Части I: Временные ряды со светильником Zillow - Часть I Исследование данных. Так что позвольте мне сделать то же самое:

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

(A) Модель фильтра Калмана

Я дал подробный обзор фильтра Калмана в статье Объяснение фильтра Калмана!. Фильтр Калмана LADFilteringModel в классе Luminaire Anomaly Detection (LAD) доступен в этом API. Я обучаю объект модели lad_filter_obj и сохраняю его как model:

Затем я использую модель, чтобы проверить, находятся ли 2 000 в «2012–06–08» за границами или нет:

Функция score() выводит следующие очень богатые результаты. Это показывает, что оценка успешна. Прогноз на этот день 2387 со стандартной ошибкой 735,4. Стандартная ошибка - это то, что мы будем использовать, чтобы определить допустимую погрешность позже. Он также проверяет, что значение 2,000 не является аномалией («IsAnomaly» = False).

({'Success': True,
  'AdjustedActual': -0.5175304914865355,
  'ConfLevel': 90.0,
  'Prediction': 2387.718712243808,
  'PredStdErr': 735.4123249948354,
  'IsAnomaly': False,
  'IsAnomalyExtreme': False,
  'AnomalyProbability': 0.897174478745516,
  'DownAnomalyProbability': 0.948587239372758,
  'UpAnomalyProbability': 0.05141276062724194,
  'NonStationarityDiffOrder': 1,
  'ModelFreshness': -20.6},
 <luminaire.model.lad_filtering.LADFilteringModel at 0x206bee3b0f0>)

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

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

(B) Структурная модель

Временные ряды могут иметь такие закономерности, как восходящий или нисходящий тренд, сезонность или праздничные всплески. Эти шаблоны могут быть смоделированы явно в параметрах регрессии. Такой подход к моделированию называется структурным моделированием. Наиболее распространенным структурным подходом является A uto- R прогрессивный I интегрированный M с использованием A verage (ARIMA), который включает термин AR, термин I и термин MA. Обозначается как ARIMA (p, d, q), что p - это порядок терминов AR, d - это количество разностей до сделать временной ряд стационарным, а q - это порядок члена скользящей средней. Я дал больше объяснений в Техническом руководстве по RNN / LSTM / GRU для прогнозирования цен на акции.

Другой тип структурного моделирования - это разложение по сезонному тренду (STD), которое разбивает сигнал временного ряда на три части: сезонный, тренд и остаток. Согласно этому подходу, Обобщенная аддитивная модель (GAM) является более гибкой формой, которая определяет долгосрочный линейный тренд, годовой сезонный эффект и любой эффект праздников. См. Мою статью Обнаружение аномалий для временных рядов для получения более подробной информации.

Вы можете указать, будет ли структурная модель включать праздники в качестве экзогенных переменных в регрессии, а также порядок авторегрессивного (AR) или скользящего среднего (MV) компонента модели. Вы также можете указать, следует ли выполнять преобразование входных данных в журнал. Щелкните этот API для просмотра технических характеристик модели или этот учебник Luminaire. Праздники включают следующее:

  • День памяти и предстоящие выходные
  • День ветеранов и предстоящие к нему выходные
  • День Труда
  • День Президента
  • День Мартина Лютера Кинга-младшего
  • День святого Валентина
  • День матери
  • День отца
  • День Независимости (фактический и соблюдаемый)
  • Хэллоуин
  • Супер Боул
  • Пасха
  • День Благодарения, плюс следующие выходные
  • Сочельник, Рождество и все даты до Нового года (фактические и соблюдаемые)

Каждый временной ряд имеет свои структурные характеристики. Вы можете применить структурную модель к своему временному ряду.

Заключение

Я надеюсь, что эта статья поможет вам лучше понять эту тему. Я сделал код из этой статьи доступным для скачивания по этой ссылке на github. Если вы хотите получить исчерпывающий обзор, вам поможет следующая последовательность: