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

Прогнозирование - это слово, которое мы обычно связываем с погодой. Пока мы слушаем или смотрим НОВОСТИ, всегда есть отдельный сегмент под названием «Отчет о погоде», где обозреватель НОВОСТЕЙ предоставляет нам информацию о прогнозе погоды. Почему так важно прогнозирование? Просто потому, что мы можем принимать осознанные решения.

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

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

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

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

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

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

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

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

Правило горизонта: Избегайте слишком много прогнозов в отношении будущего. Это означает, что мы должны делать прогнозы на короткий промежуток времени, а не на будущее. Это даст более точные прогнозы.

Компоненты данных временных рядов

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

  1. Уровень: у любого временного ряда будет базовая линия. К этой базовой линии мы добавляем различные компоненты, чтобы сформировать полный временной ряд. Эта базовая линия называется уровнем.
  2. Тренд: определяет, будет ли временной ряд увеличиваться или уменьшаться с течением времени. То есть он имеет восходящий (восходящий) тренд или нисходящий (нисходящий) тренд. Например, У указанного выше временного ряда есть тенденция к росту.
  3. Сезонность: определяет закономерность, повторяющуюся в течение определенного периода. Этот шаблон, который повторяется периодически, называется сезонностью. На приведенном выше графике мы ясно видим присутствующую сезонную составляющую.
  4. Цикличность. Цикличность также является закономерностью в данных временных рядов, но она повторяется апериодически, то есть не повторяется через фиксированные интервалы.
  5. Шум. После извлечения уровня, тренда, сезонности / цикличности остается шум. Шум - это совершенно случайное колебание данных.

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

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

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

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

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

RMSE: R oot M ean S quared E rror - это квадратный корень из среднеквадратичной ошибки (MSE). MSE - это не что иное, как представление о том, насколько прогнозируемые значения отличаются от фактических или истинных. Мы извлекаем квадратный корень, чтобы избежать отрицательного знака, поскольку ошибки могут быть как положительными, так и отрицательными. Он представлен следующей формулой:

MAPE: M ean A абсолютный P процент E rror - это мера того, насколько точна система прогнозов. Он измеряет эту точность в процентах и ​​может быть рассчитан как средняя абсолютная ошибка в процентах для каждого периода времени за вычетом фактических значений, деленных на фактические значения. Он представлен следующей формулой:

Где Yactual - истинное значение, а Ypredicted - прогнозируемое значение в конкретный момент времени. n - количество наблюдений.

И RMSE, и MAPE должны быть как можно ниже.

Итак, вот постановка проблемы: Global Mart - это супергигантский интернет-магазин, работающий по всему миру. Он принимает заказы и доставляет товары по всему миру и обслуживает 7 различных географических сегментов рынка - (Африка, Азиатско-Тихоокеанский регион (Азиатско-Тихоокеанский регион), Канада, ЕС (Европейский союз), EMEA (Ближний Восток), LATAM (Латинская Америка), США (США). )). Он имеет дело со всеми основными категориями продуктов - потребительским, корпоративным и домашним офисом. Нам нужно спрогнозировать продажи для наиболее стабильно прибыльного сегмента рынка.

Примечание. Код и графики, использованные в статье, присутствуют в файле Python, ссылка на который приведена в конце статьи.

Ход анализа:

1. Импортируйте необходимые библиотеки
2. Прочтите и изучите данные
3. Исследовательский анализ данных
4. Подготовка данных
5. Разложение временных рядов
6. Построение и оценка прогноза временных рядов

  1. Импортируйте необходимые библиотеки

2. Прочтите и изучите данные.

Наши данные содержат 51290 строк и 5 столбцов, и отсутствуют пропущенные значения.

3. Исследовательский анализ данных

Мы проводим анализ выбросов по различным атрибутам и обнаруживаем, что в столбцах прибыли и продаж действительно есть выбросы.

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

Мы выполнили одномерный, двумерный и многомерный анализ, и вот графики.

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

Согласно постановке задачи, нам нужно найти 21 сегмент рынка, объединив соответствующие 7 географических рынков для каждого из 3 сегментов продукта. Мы создаем столбец Рынок-Сегмент, объединив 2 столбца: Рынок и Сегмент.

Разделение поездов и тестов: мы разделяем данные таким образом, чтобы набор поездов содержал 42 месяца, а набор тестов - данные за 6 месяцев.

Постоянно прибыльный сегмент рынка. Коэффициент вариации - это отношение стандартного отклонения к среднему значению. Нам нужно найти сегмент рынка, для которого значение коэффициента вариации является наименьшим для получения прибыли. Это связано с тем, что меньшее стандартное отклонение означает меньшее изменение прибыли, а значит, более согласованными являются цифры прибыли для данного региона за данный период. Мы рассчитываем коэффициент вариации для каждого из 21 сегмента рынка за 42 месяца (данные по поезду), чтобы решить, какой сегмент рынка является стабильно прибыльным.

Мы обнаружили, что APAC-Consumer - это сегмент рынка с наименьшим коэффициентом вариации. Это означает, что показатели прибыли для сегмента потребительского рынка Азиатско-Тихоокеанского региона были стабильными в течение установленного периода времени. Следовательно, мы выбираем этот сегмент рынка для дальнейшего расчета и прогнозирования значений продаж.

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

Разложение временного ряда

Данные наших временных рядов выглядят следующим образом:

Мы выполняем аддитивную и мультипликативную сезонную декомпозицию следующим образом:

Очевидно, что данные содержат сезонную составляющую. Мы строим различные модели прогнозов временных рядов и сравниваем значения RMSE (среднеквадратическая ошибка) и MAPE (средняя абсолютная ошибка в процентах) для всех моделей. Более низкие значения RMSE и MAPE желательны, чтобы сделать вывод о том, что модель работает лучше. Точность рассчитывается как (100 - MAPE). Чем меньше значение MAPE, тем выше точность.

Теперь мы увидим различные методы прогнозирования стоимости продаж.

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

К ним относятся 3 метода: наивный метод, метод простого среднего и метод простого скользящего среднего.

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

Значения RMSE и MAPE показаны ниже:

Как видно из приведенных выше рисунков, в простых методах прогнозирования лучше всего работает метод Simple Moving Average.

Методы экспоненциального сглаживания

Это, в частности, техника простого экспоненциального сглаживания, метод Холта с трендом и метод Холта Винтера.

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

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

Авторегрессивные методы

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

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

Есть 2 теста для подтверждения стационарности, а именно:

Тест Квятковского-Филлипса-Шмидта-Шина (KPSS):

  1. Нулевая гипотеза (H 0): ряд стационарен: значение p ›0,05

2. Альтернативная гипотеза (H a): ряд нестационарен: p − value≤0,05.

Расширенный тест Дики-Фуллера (ADF):

  1. Нулевая гипотеза (H0): ряд нестационарен: значение p ›0,05

2. Альтернативная гипотеза (Ha): ряд стационарен: p − value≤0,05.

Мы проводим эти тесты на данных наших временных рядов и делаем вывод, что временной ряд не является стационарным. Чтобы сделать его стационарным, нам нужно выполнить Различие (сделав среднее значение постоянным) и Преобразование (сделав дисперсию постоянной).

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

Метод авторегрессии (AR)

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

Метод скользящей средней (MA)

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

Метод скользящей средней авторегрессии (ARMA)

Это комбинация моделей AR и MA.

Авторегрессивная интегрированная скользящая средняя (ARIMA)

Это то же самое, что и модель ARMA, только в ней есть дополнительный интегрированный разностный компонент. Ранее мы применяли к данным как преобразование прямоугольника-Кокса, так и дифференцирование, чтобы сделать данные временных рядов стационарными. Здесь мы просто применяем box-cox перед построением модели и позволяем модели позаботиться о разнице, то есть о самом компоненте тренда.

Сезонная авторегрессивная интегрированная скользящая средняя (SARIMA)

SARIMA - это то же самое, что и ARIMA, только в нем есть дополнительный компонент сезонности.

После реализации всех моделей прогнозирования мы рассчитываем RMSE и MAPE для всех методов.

Мы пришли к выводу, что аддитивный метод Холта Винтерса и метод сезонного авторегрессивного интегрированного скользящего среднего (SARIMA) лучше всего подходят для прогнозирования продаж по данным. Оба метода имеют более низкие значения RMSE и MAPE и могут фиксировать компоненты тренда и сезонности в данных.

На этом анализ завершен. Надеюсь, статья была информативной и простой для понимания. Также я надеюсь, что вам понравилось анализировать красочные графики, которые были включены в анализ.

Не стесняйтесь комментировать и оставлять отзывы.

Вы можете связаться со мной в LinkedIn: https://www.linkedin.com/in/pathakpuja/

Посетите мой профиль GitHub, чтобы найти коды Python. Код, упомянутый в статье, а также графики можно найти здесь: «https://github.com/pujappathak/Retail-Giant-Sales-Forecasting

Ссылки:

https://www.statisticshowto.com/probability-and-statistics/regression-analysis/rmse-root-mean-square-error/

https://www.statisticshowto.com/mean-absolute-percentage-error-mape/