Прогнозирование объемов продаж групп товаров (отчет)

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

(Различия между версиями)
Перейти к: навигация, поиск
(Базовые предположения)
(Математическое описание)
Строка 76: Строка 76:
=== Математическое описание ===
=== Математическое описание ===
 +
'''Базовый алгоритм'''
 +
 +
Выбранный базовый алгоритм — скользящее среднее по каждому товару за предыдущий месяц:
 +
 +
<center>
 +
<tex>\hat{y}_{ij}^0 = \frac{7}{w} s_{ij}(w),</tex>
 +
</center>
 +
 +
где <tex>w=30</tex> — ширина окна,
 +
 +
<center>
 +
<tex>s_{ij}(w)=\sum_{t = t_1-w+1}^{t_1}x_{ij}(t).</tex>
 +
</center>
 +
 +
'''Наш алгоритм'''
 +
 +
1. Найти все группы нижнего уровня — разбиение множества <tex>I</tex> на непересекающиеся подмножества <tex>I_k \subset I</tex>.
 +
 +
2. Для всех групп нижнего уровня <tex>I_k</tex> повторять шаги 3-4:
 +
 +
3. Найти суммарные продажи товаров из <tex>I_k</tex> во всех магазинах:
 +
 +
<center>
 +
<tex>S_{w} = \sum_{i \in I_k}\sum_{j \in J}s_{ij}(w)</tex>.
 +
</center>
 +
 +
4. Определить доли продаж отдельных товаров из группы:
 +
 +
<center>
 +
<tex>D_w(i) =\frac{1}{S_w} \sum_{j \in J}s_{ij}(w)</tex>.
 +
</center>
 +
 +
5. Повторять для всех <tex>j \in J</tex> и всех групп нижнего уровня <tex>I_k</tex> шаги 6-7:
 +
 +
6. Вычислить по методу скользящего среднего прогноз продаж товаров из <tex>I_k</tex> в магазине <tex>j</tex>
 +
на следующую неделю:
 +
 +
<center>
 +
<tex>\hat{S}_{vj}(I_k) = \frac{7}{v} \sum_{i \in I_k}s_{ij}(v).</tex>
 +
</center>
 +
 +
7. Распределить предсказанное число товаров согласно величинам <tex>D_w(i)</tex>:
 +
 +
<center>
 +
<tex>\hat{y}_{ij} = \hat{S}_{vj}(I_k) D_w(i).</tex>
 +
</center>
=== Варианты или модификации ===
=== Варианты или модификации ===

Версия 16:08, 6 февраля 2010

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

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

Цель проекта

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

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

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

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

Дан региональный классификатор магазинов, товарный классификатор, ряды продаж по SKU (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. Также задан товарный классификатор, исходя из которого товары разбиваются на группы, образующие иерархическую стуктуру (например, какой-то товар может входить в группу «ЖК-телевизоры 15"», которая входит в «ЖК-телевизоры 10" - 17"» и далее в «ЖК-телевизоры», «Телевизоры» и «Бытовую технику»). Требуется для всех товаров и всех магазинов спрогнозировать продажи за неделю, следующую после t_1, то есть значение величины

y_{ij} = \sum_{t=t_1+1}^{t_1+7}x_{ij}(t).

Для оценки качества прогнозов будем использовать скользящий контроль, помещая в обучающую выборку значения 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}|

или

Q_{s}(Y, \hat{Y}) = \sum_{i, j}(y_{ij}-\hat{y}_{ij})^2.

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

Обзор литературы

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

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

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

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

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

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

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

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

Наш алгоритм

1. Найти все группы нижнего уровня — разбиение множества I на непересекающиеся подмножества I_k \subset I.

2. Для всех групп нижнего уровня I_k повторять шаги 3-4:

3. Найти суммарные продажи товаров из I_k во всех магазинах:

S_{w} = \sum_{i \in I_k}\sum_{j \in J}s_{ij}(w).

4. Определить доли продаж отдельных товаров из группы:

D_w(i) =\frac{1}{S_w} \sum_{j \in J}s_{ij}(w).

5. Повторять для всех j \in J и всех групп нижнего уровня I_k шаги 6-7:

6. Вычислить по методу скользящего среднего прогноз продаж товаров из I_k в магазине j на следующую неделю:

\hat{S}_{vj}(I_k) = \frac{7}{v} \sum_{i \in I_k}s_{ij}(v).

7. Распределить предсказанное число товаров согласно величинам D_w(i):

\hat{y}_{ij} = \hat{S}_{vj}(I_k) D_w(i).

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

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

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

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

Визуальный анализ работы алгоритма

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

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

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

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

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

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

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


Личные инструменты