Обнаружение жизненного цикла товаров (отчет)

Материал из MachineLearning.

Перейти к: навигация, поиск

Введение в проект

Описание проекта

Цель проекта

Цель проекта - прогнозирование еженедельных покупок товаров. Горизонт прогнозирования - одна неделя.

Обоснование проекта

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

Описание данных

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

Критерии качества

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

Требования к проекту

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

Выполнимость проекта

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

Используемые методы

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

Постановка задачи

Заданы временные ряды продаж товаров x_{ij}(t) \in R — продажи i-ого товара в j-ом магазине за неделю t (i \in I, I — множество товаров; j \in J, J — множество магазинов; t \in N — натуральное число), причем значения продаж известны при t_0 \leq t \leq t_1. Задан t_2 - горизонт прогнозирования. Требуется для всех товаров и всех магазинов спрогнозировать продажи за неделю, следующую после t_1+t_2, то есть значение величины

y_{ij} = x_{ij}(t_1+t_2+1).

Для оценки качества прогнозов будем использовать скользящий контроль, помещая в обучающую выборку значения x_{ij}(t) при t \in [t_0, t_{max}], t_{max} < t_1. Как функционал качества будем использовать

Q_{m}(Y, \hat{Y}) = \sum_{i, j}|y_{ij}-\hat{y}_{ij}|.

Описание алгоритмов

Базовые предположения

Будем предполагать, что жизненный цикл товара в магазине можно разбить на 3 характерных этапа: вхождение товара на рынок, рост популярности, спад объема продаж. Схематично предполагаемая зависимость может быть изображена в виде (по оси абсцис отложено время прибывания товара на рынке, по оси ординат - еженедельные продажи. Преполагаемая теоретическая зависимость

Математическое описание

Базовый алгоритм

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

\hat{y}_{ij}^0 = \frac{1}{w} s_{ij}(w),

где w=8 — ширина окна,

s_{ij}(w)=\sum_{t = t_1-w-1}^{t_1-1}x_{ij}(t).

Алгоритм учета жизненного цикла

1. Задается два параметра sw и grow.

2. Временной ряд продаж товара разбивается на три отрезка. Первый от момента вхождения \tau_0 до \tau_0+sw. Второй - [\tau_0+sw+1, \tau_0+sw+grow]. Заключительный - от \tau_0+sw+grow+1 до окончания продаж товара.

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

4. Втором и третий отрезоки соответствуют росту популярности товара на рынке и спада объема продаж. На них прогноз строится при помощи линейной регрессии: Задается параметр h - число точек для построения прямой.

\hat{y}_{ij}(\tau) = w_0+w_1x_{ij}(t), где (w_0,w_1) = {arg}\min_{(w_0,w_1)}\sum_{t = \tau-h}^{\tau-1}|w_0+w_1x_{ij}(t)-y_{ij}(t)|.

При этом на втором этапе прогнозу запрещается более чем в ε раз меньше скользящего среднего, на третьем прогнозу запрещается быть более чем в σ раз больше скользящего среднего.

Варианты или модификации

Параметрами алгоритма являются sw, h, gr \in N, \ \ \varepsilon, \delta  \in (0, \infty), наилучшие значения которых требуется выбрать в результате эксперимента.

Описание системы

  • Ссылка на файл system.docs
  • Ссылка на файлы системы

Отчет о вычислительных экспериментах

Сравнение алгоритма с базовым

Временные ряды товаров были разбиты на обучение ( k = 100 \ рядов) и контроль ( m = 5915 \ рядов).

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

Сравнивались прогнозы базового алгоритма, линейной регрессии ( h =14, \ sw = gr=0 , \  \varepsilon =  \delta =  \infty ) и алгоритма учета жизненного цикла с параметрами  h =14, \ sw = 5, \ gr=30, \  \varepsilon = 1, \ \delta = 2 .

Результаты изображены на графиках, приведенных ниже:

На графике по осям отложены номера недель и величины Q_{m}. Красным цветом изображен график для базового алгоритма, синим - линейной регрессии, зеленым - алгоритма учета жизненного цикла.

На графике по осям отложены номера пар товар-магазин и величины Q_{m}. Красным цветом изображен график для базового алгоритма, синим - линейной регрессии, зеленым - алгоритма учета жизненного цикла.

Таким образом, алгоритм учета жизненного цикла показал лучший результат. Ниже приведены численные результаты работы алгоритмов:

Название алгоритма Значение Q_{m}(Y, \hat{Y}) = \frac{|y_{ij}-\hat{y}_{ij}|}{\sum_{i, j}y_{ij} }
Базовый алгоритм 1.17
Линейная регрессия 1.00
Алгоритм учета жизненного цикла 0.85


Анализ зависимости работы алгоритма от параметров

Отчет о полученных результатах

Список литературы

Данная статья является непроверенным учебным заданием.
Студент: Участник:Юрий Янович
Преподаватель: Участник:В.В. Стрижов
Срок: 15 декабря 2009

До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.