Анализ временных рядов для бизнес-прогнозирования

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

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

Итак, здесь мы собираемся обсудить прогнозирование временных рядов. Различные типы прогнозирования мы можем заставить машину делать в реальной жизни. Само название «временной ряд» предполагает, что данные, связанные с ним, меняются со временем.

Основной мотив в задачах временных рядов в прогнозировании. Анализ временных рядов для бизнес-прогнозирования помогает прогнозировать / прогнозировать будущие значения критического поля, которое имеет потенциальную ценность для бизнеса в отрасли, прогнозировать состояние здоровья человека, прогнозировать результаты спорта или параметры производительности игрока на основе предыдущих результатов. и предыдущие данные.

Методы прогнозирования временных рядов

Одномерное прогнозирование временных рядов

Задача прогнозирования одномерных временных рядов будет иметь только две переменные. Один — дата-время, а другой — поле, которое мы прогнозируем.

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

Многомерное прогнозирование временных рядов

В многомерном случае цель будет такой же, если мы рассмотрим приведенный выше пример как одномерный, наша цель та же, чтобы предсказать среднюю температуру на завтра, разница в том, что мы также используем все другие сценарии в модели, которые влияют на температуру. как есть вероятность дождя, если да, то какова будет продолжительность дождя? Какова скорость ветра в разное время? Влажность, атмосферное давление, осадки, солнечная радиация и многое другое.

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

Модели прогнозирования временных рядов

Модель АРИМА

ARIMA означает авторегрессионную интегрированную скользящую среднюю. Часть AR ARIMA указывает, что интересующая меняющаяся переменная подвергается регрессии по своим собственным запаздывающим (т. е. предшествующим) значениям.

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

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

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

Модель ARCH/GARCH

Наиболее важными моделями волатильности для временных рядов являются авторегрессионная условная гетероскедастичность (ARCH) и расширенная до ее обобщенной версии модель GARCH.

Эти модели очень хорошо обучены фиксировать динамику волатильности из временных рядов.

Одномерные модели GARCH получили известность в моделях волатильности, но многомерный GARCH по-прежнему очень сложно реализовать во временных рядах.

Модель векторной авторегрессии (VAR)

VAR — это аббревиатура от Vector Авторегрессия.

Модель VAR фиксирует взаимозависимости между различными временными рядами данных. Эта модель является обобщением одномерной модели авторегрессии.

LSTM-модель

LSTM означает долговременную кратковременную память и представляет собой модель глубокого обучения.

LSTM — это тип рекуррентной нейронной сети (RNN), а RNN предназначены для фиксации зависимости от последовательности.

LSTM способен обрабатывать большие архитектуры во время обучения.

Вам также может быть интересно прочитать Автоматический анализ журналов с использованием глубокого обучения и искусственного интеллекта для микросервисов

Нейронная сеть Элмана и Джордана

Нейронная сеть Элмана и Джордана — это два типа архитектуры рекуррентной нейронной сети (RNN). Эти сети объединяют прошлые значения единицы контекста с текущими входными данными для получения окончательного результата.

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

В этих сетях взвешивание по времени является негибким, поскольку мы можем контролировать только затухание во времени. Кроме того, небольшое изменение во времени отражается как значительное изменение веса.

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

Сеть Джордана аналогична сети Элмана, но единицы контекста передаются из выходного слоя, а не из скрытого слоя.

Подходы к анализу временных рядов

Предположим, что данные содержат как непрерывные, так и категориальные столбцы, и нам нужно спрогнозировать столбец с именем «значение», и этот столбец является непрерывным.

Пусть количество столбцов в наборе данных равно 100 с именами «col1», «col2», «col3»… «col100». Наряду с этим пусть будет категориальный столбец «кошка» с десятью различными категориями.

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

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

Вопросы, которые следует задать о данных

  • Как быстро мы получаем данные? (раз в секунду, минуту, час).
  • Все датчики дают данные одновременно или разные датчики дают данные в разное время?
  • Значения датчиков связаны или независимы?
  • Чтобы предсказать свою будущую ценность, должны ли мы достаточно учитывать все прошлые данные или последнее подмножество? Если мы рассматриваем только подмножество, сколько данных достаточно для будущих прогнозов?

Подход 1

Одномерная модель

В этом подходе мы просто рассматриваем время и поле, которые мы прогнозируем.

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

Преобразование данных требуется для преобразования нестационарных временных рядов в стационарные временные ряды.

Стационарный временной ряд — это тот, который соответствует определенным статистическим показателям, таким как среднее значение, дисперсия, автокорреляция.

Данные не должны быть гетероскедастичными. Это означает, что в разные промежутки времени эти статистические показатели должны оставаться постоянными.

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

Как определить, является ли временной ряд стационарным?

Две вещи, которые мы можем визуализировать, — это тренд и сезонность. Одно и то же значение среднего с разным временем указывает на постоянную тенденцию. Изменения в конкретных временных интервалах указывают на сезонность.

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

Чтобы получить скользящее среднее значение при n, мы берем среднее значение временных рядов от n-1 до n-10. Если скользящее среднее остается постоянным, мы можем сказать, что эта тенденция согласуется со стационарностью.

Чтобы устранить тенденцию, мы можем использовать логарифмическое преобразование. Наряду со скользящим средним значением мы могли бы также позаботиться о скользящем стандартном отклонении. Чтобы проверить стационарность временного ряда, мы можем использовать тест Дики-Фуллера.

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

Дифференциация — это просто получение разницы между текущим значением и предыдущим значением. Это также называется дифференцированием первого порядка.

Вам также может быть интересно прочитать Лог-аналитика, анализ журналов и обнаружение аномалий с помощью ИИ, глубокое обучение

Прогнозирование временных рядов

Мы могли бы использовать ARIMA (авторегрессионное интегрированное скользящее среднее) для прогнозирования.

ARIMA имеет два параметра «p» и «q». Значение «p» для AR и «q» для MA. «p» — это лаги, учитываемые для зависимой переменной. Если «p» равно 10, для прогнозирования значения в момент времени t мы используем значения от t-1 до t-10 в качестве предикторов.

«q» похож на «p». Единственная разница заключается в том, что вместо того, чтобы принимать значения; мы принимаем ошибки прогноза в прогнозе. Мы можем моделировать AR и MA по отдельности и комбинировать их для прогнозирования. После завершения моделирования значения преобразуются обратно или обратно, чтобы получить прогнозы в исходном масштабе.

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

Таким образом, использование столбца одномерного анализа для прогнозирования значения может оказаться недостаточным для обоснованных прогнозов.

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

Подход 2

Многомерная модель с использованием VAR

В многомерной модели мы считаем, что несколько столбцов имеют неповрежденные взаимозависимости, и прогнозируем значения требуемого поля.

VAR (векторная авторегрессия) — это статистический метод, представляющий собой стохастический процесс, который помогает учитывать все взаимозависимости между различными полями временных рядов в данных.

VAR является обобщением одномерной модели AR. Каждая переменная в модели имеет свои собственные запаздывающие значения для объяснения прогнозов, и наряду с этим она также учитывает и другие переменные модели.

VAR поставляется с параметрами информационного критерия Акаике и байесовского информационного критерия «AIC», «BIC». Эти параметры используются для настройки модели для выбора наилучшего для данных.

Подход 3

Многомерное прогнозирование временных рядов с использованием глубокого обучения Keras

Мы могли бы использовать методы глубокого обучения для прогнозирования временных рядов. Через несколько лет для прогнозирования временных рядов можно будет использовать последовательные модели с LSTM (долговременная кратковременная память).

LSTM — это одна из рекуррентных нейронных сетей (RNN). Рекуррентные нейронные сети учитывают зависимость последовательности, в которой вводятся данные.

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

Чтобы реализовать LSTM для многомерных данных, мы должны преобразовать проблему временных рядов в задачу обучения с учителем.

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

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

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

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

Модельный подход к мониторингу данных датчиков

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

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

Другой вариант: если каждый датчик независим от других, мы можем моделировать данные каждого датчика отдельно.

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

Многомерная модель с VAR и глубоким обучением

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

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

Заключение Прогнозирование временных рядов

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

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

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

Как XenonStack может вам помочь?

Анализ временных рядов можно использовать во множестве бизнес-приложений для прогнозирования количества в будущем и объяснения его исторических закономерностей. Анализ временных рядов и прогнозирование можно использовать для объяснения сезонных закономерностей продаж, прогнозирования ожидаемого количества входящих или уходящих клиентов и многого другого. XenonStack Data Products and Decision Science Services предлагает:

XenonStack Data Science As-A-Service предоставляет когнитивный и предписывающий интеллект для автоматизации построения аналитических моделей с использованием машинного обучения, глубокого обучения, искусственного интеллекта для классификации изображений, распознавания речи, обнаружения мошенничества, обнаружения аномалий, прогнозирования рисков, оптимизации энергопотребления и распознавания естественного языка.

Машинное обучение и глубокое обучение в Kubernetes

Опыт XenonStack в области ИТ-инфраструктуры и DevOps поможет вам построить и развернуть модель в производстве на основе требований к производительности и оптимизации модели. Решения XenonStack для машинного обучения, решения для глубокого обучения, решения для Docker помогают развертывать модели машинного обучения и глубокого обучения (модели Python и R) в Docker и Kubernetes.

Научные решения для принятия решений

Услуги визуализации данных и искусственного интеллекта XenonStack позволяют разрабатывать интерактивную информационную панель, продукт данных в форме чат-ботов, цифровых агентов и среды принятия решений, рекомендательные системы с прогрессивными веб-приложениями с использованием Angular.JS, React.JS и реактивного программирования — Scala , Голанг.

Первоначально опубликовано на https://www.xenonstack.com 30 ноября 2018 г.