В статье рассматриваются области применения временных рядов, решаемые задачи, и используемые алгоритмы. Прогнозирование временного ряда используется в таких задачах, как прогнозирование спроса, нагрузки на контактный центр, дорожного и интернет-трафика, решения задачи холодного старта в рекомендательных системах и поиска аномалий в поведении оборудования и пользователей.
Рассмотрим задачи подробнее.
Цель: снизить складские издержки и оптимизировать график работы персонала.
Как решается: имея прогноз покупкок товаров и количества клиентов, минимизируем количество товара на складе, и хранить ровно столько, сколько купят в заданный временной диапазон. Зная количество клиентов в каждый момент времени, составим оптимальное рабочее расписание, чтобы с минимумом затрат, было достаточное количество персонала.
Цель: не допустить коллапса логистики при пиковых нагрузках.
Как решается: прогнозируя количество заказов, вывести на линию оптимальное количество машин и курьеров.
Цель: при минимуме затрат на фонд оплаты труда обеспечить требуемую доступность контактного центра.
Как решается: прогнозирование количество звонков во времени, составим оптимальное расписание для операторов.
Цель: спрогнозировать количество серверов и пропускного канала для устойчивой работы. Чтобы ваш сервис не упал в день премьеры популярного сериала или футбольного матча ;)
Цель: минимизация объема наличности, хранимой в сети АТМ
Цель: рекомендовать релевантные товары новым пользователям.
Когда пользователь совершил несколько покупок, для рекомендации можно построить алгоритм коллаборативной фильтрации, но когда информации о пользователе нет, оптимально рекомендовать наиболее популярные товары.
Решение: популярность товаров зависит от времени, когда сделана рекомендация. Использование прогнозирование временного ряда помогает выявить релевантные товары в каждый конкретный момент времени.
Лайфхаки построения рекомендательных систем мы рассмотрели в предыдущей статье.
Цель: выявить проблемы в работе оборудования и нестандартные ситуации в бизнесе
Решение: если измеряемое значение выбивается из доверительного интервала прогноза, аномалия выявлена. Если это АЭС, пора наращивать квадрат расстояния ;)
Простейшим алгоритмом является скользящее среднее. Давайте посчитаем среднее значение на нескольких последних элементах и сделаем прогноз. В прогнозе погоды больше чем на 10 дней, используется подобный подход.
Когда важно, чтобы последние значения в ряду вносили больший вес, введем коэффициенты в зависимости от удаленности даты, получив взвешенную модель:
Так, можно задать коэффициент W, чтобы максимальный вес приходился на 2 последних дня и входные.
Учет циклических факторов
На качество рекомендаций могут влияют циклические факторы, такие как совпадение с днем недели, датой, предшествование праздникам и т. д.
Рис. 1. Пример декомпозиции временного ряда на тренд, сезонный компонент и шум
Экспоненциальное сглаживание – решение учета циклических факторов.
Рассмотрим 3 базовых подхода
Представляет собой вычисление взвешенного среднего на последних 2-х элементах ряда.
Принимает в расчет изменение тренда и колебания значений остатков вокруг этого тренда.
Вычисляем предсказание изменения остатков ® и тренда (d). Итоговое значение y — сумма этих двух величин.
Тройное сглаживание дополнительно учитывает сезонные колебания.
Формулы для тройного сглаживания.
Особенностью временных рядов для применения ARIMA заключается в связи прошлых значений связанных с текущими и будущими.
SARIMA – расширение для рядов с сезонной составляющей. SARIMAX – расширение, включающее внешнюю регрессионную составляющую.
ARIMA-модели позволяют моделировать интегрированные или разностно-стационарные временные ряды.
Подход ARIMA к временным рядам заключается в том, что в первую очередь оценивается стационарность ряда.
Далее ряд преобразуется взятием разности соответствующего порядка и уже для преобразованной модели строится некоторая ARMA-модель.
ARMA — линейная модель множественной регрессии.
Важно, чтобы ряд был стационарен, т.е. не менялось среднее, и дисперсия. Если ряд нестационарен, его следует привести к стационарному виду.
Если у ряда нет внутренней выраженной структуры, но есть внешние влияющие факторы (менеджер, погода и т.д.), то можно смело использовать такие модели машинного обучения как бустинг, случайные леса, регрессия, нейронные сети и SVM.
Из опыта работы команды DATA4, прогнозирование временных рядов, одна из основных задач для решения оптимизации складских затрат, затрат на персонал, оптимизации обслуживания сетей АТМ, логистики и построения рекомендательных систем. Сложные модели, такие как SARIMA дают качественный результат, но требуют больших затрат времени и подходят только для определенного круга задач.
В следующей статье мы рассмотрим основные подходы к поиску аномалий.
Для того, чтобы статьи были релевантны вашим интересам, пройдите опрос ниже, или напишите в комментариях, про какие темы написать следующие статьи.
Рассмотрим задачи подробнее.
1) Прогнозирование спроса.
Цель: снизить складские издержки и оптимизировать график работы персонала.
Как решается: имея прогноз покупкок товаров и количества клиентов, минимизируем количество товара на складе, и хранить ровно столько, сколько купят в заданный временной диапазон. Зная количество клиентов в каждый момент времени, составим оптимальное рабочее расписание, чтобы с минимумом затрат, было достаточное количество персонала.
2) Прогнозирование нагрузки на службу доставки
Цель: не допустить коллапса логистики при пиковых нагрузках.
Как решается: прогнозируя количество заказов, вывести на линию оптимальное количество машин и курьеров.
3) Прогнозирование нагрузки на контактный центр
Цель: при минимуме затрат на фонд оплаты труда обеспечить требуемую доступность контактного центра.
Как решается: прогнозирование количество звонков во времени, составим оптимальное расписание для операторов.
4) Прогнозирование трафика
Цель: спрогнозировать количество серверов и пропускного канала для устойчивой работы. Чтобы ваш сервис не упал в день премьеры популярного сериала или футбольного матча ;)
5) Прогнозирование оптимального времени инкассации банкоматов
Цель: минимизация объема наличности, хранимой в сети АТМ
6) Решения задачи холодного старта в рекомендательных системах
Цель: рекомендовать релевантные товары новым пользователям.
Когда пользователь совершил несколько покупок, для рекомендации можно построить алгоритм коллаборативной фильтрации, но когда информации о пользователе нет, оптимально рекомендовать наиболее популярные товары.
Решение: популярность товаров зависит от времени, когда сделана рекомендация. Использование прогнозирование временного ряда помогает выявить релевантные товары в каждый конкретный момент времени.
Лайфхаки построения рекомендательных систем мы рассмотрели в предыдущей статье.
7) Поиск аномалий
Цель: выявить проблемы в работе оборудования и нестандартные ситуации в бизнесе
Решение: если измеряемое значение выбивается из доверительного интервала прогноза, аномалия выявлена. Если это АЭС, пора наращивать квадрат расстояния ;)
Алгоритмы для решения задачи
1) Скользящее среднее
Простейшим алгоритмом является скользящее среднее. Давайте посчитаем среднее значение на нескольких последних элементах и сделаем прогноз. В прогнозе погоды больше чем на 10 дней, используется подобный подход.
Когда важно, чтобы последние значения в ряду вносили больший вес, введем коэффициенты в зависимости от удаленности даты, получив взвешенную модель:
Так, можно задать коэффициент W, чтобы максимальный вес приходился на 2 последних дня и входные.
Учет циклических факторов
На качество рекомендаций могут влияют циклические факторы, такие как совпадение с днем недели, датой, предшествование праздникам и т. д.
Рис. 1. Пример декомпозиции временного ряда на тренд, сезонный компонент и шум
Экспоненциальное сглаживание – решение учета циклических факторов.
Рассмотрим 3 базовых подхода
1. Простое сглаживание (модель Брауна)
Представляет собой вычисление взвешенного среднего на последних 2-х элементах ряда.
2. Двойное сглаживание (модель Хольта)
Принимает в расчет изменение тренда и колебания значений остатков вокруг этого тренда.
Вычисляем предсказание изменения остатков ® и тренда (d). Итоговое значение y — сумма этих двух величин.
3. Тройное сглаживание (модель Хольта — Винтерса)
Тройное сглаживание дополнительно учитывает сезонные колебания.
Формулы для тройного сглаживания.
Алгоритм ARIMA и SARIMA
Особенностью временных рядов для применения ARIMA заключается в связи прошлых значений связанных с текущими и будущими.
SARIMA – расширение для рядов с сезонной составляющей. SARIMAX – расширение, включающее внешнюю регрессионную составляющую.
ARIMA-модели позволяют моделировать интегрированные или разностно-стационарные временные ряды.
Подход ARIMA к временным рядам заключается в том, что в первую очередь оценивается стационарность ряда.
Далее ряд преобразуется взятием разности соответствующего порядка и уже для преобразованной модели строится некоторая ARMA-модель.
ARMA — линейная модель множественной регрессии.
Важно, чтобы ряд был стационарен, т.е. не менялось среднее, и дисперсия. Если ряд нестационарен, его следует привести к стационарному виду.
XGBoost – куда же без него
Если у ряда нет внутренней выраженной структуры, но есть внешние влияющие факторы (менеджер, погода и т.д.), то можно смело использовать такие модели машинного обучения как бустинг, случайные леса, регрессия, нейронные сети и SVM.
Из опыта работы команды DATA4, прогнозирование временных рядов, одна из основных задач для решения оптимизации складских затрат, затрат на персонал, оптимизации обслуживания сетей АТМ, логистики и построения рекомендательных систем. Сложные модели, такие как SARIMA дают качественный результат, но требуют больших затрат времени и подходят только для определенного круга задач.
В следующей статье мы рассмотрим основные подходы к поиску аномалий.
Для того, чтобы статьи были релевантны вашим интересам, пройдите опрос ниже, или напишите в комментариях, про какие темы написать следующие статьи.
Комментарии (3)
opaopa
25.11.2019 20:58+1Интересно, как соотносится «тройное сглаживание» и преобразование Фурье/Гёрцеля?
roryorangepants
Статья — это как грубо урезанная обработка поста от ODS.
kirillkosolapov Автор
Указанный вами пост от ODS действительно является качественным изложением про временные ряды. Но текущая статья затрагивает немного другие аспекты, и написана, чтобы люди интересующиеся тематикой могли дополнить свои знания. Если вы ее внимательно прочитаете, общего с указанной вами статьей, только перечень алгоритмов, но это логично, так как обе статьи описывают устоявшиеся подходы к решению задачи. Понимаю, что вам нравится оставлять негативные комментарии, но пожалуйста, не надо это делать для каждой статьи, даже если они вам не нравятся. Конструктивную критику вы всегда можете написать в личные сообщения, и я постараюсь ее учесть в следующих статьях, либо отредактировав текущую. Надеюсь на ваше понимание.