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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Используемые методы)
(Описание системы)
 
(50 промежуточных версий не показаны.)
Строка 21: Строка 21:
=== Требования к проекту ===
=== Требования к проекту ===
Сумма модулей отклонения в базовом алгоритме проекта должна быль меньше, чем для скользящего среднего за 30 дней.
Сумма модулей отклонения в базовом алгоритме проекта должна быль меньше, чем для скользящего среднего за 30 дней.
 +
Эвристические алгоритмы будут применяться в прогнозировании, если только ошибка на них будет меньше, чем ошибка на базовом алгоритме за 1 неделю.
=== Выполнимость проекта ===
=== Выполнимость проекта ===
Строка 43: Строка 44:
== Описание алгоритмов ==
== Описание алгоритмов ==
-
В проекте использовался метод квантильной регрессии.
+
В проекте использовался метод квантильной регрессии и эвристические алгоритмы.
=== Обзор литературы ===
=== Обзор литературы ===
Строка 70: Строка 71:
</center>
</center>
-
Где Quant(<tex>y_{i} | x_{i}</tex>) обозначает условную квантиль <tex>y_{i}</tex> на векторе регрессора <tex>x_{i}</tex>. Нужно отметить, что здесь предполагается, что и <tex>x_{i}</tex>, и <tex>y_{i}</tex> наблюдаются без ошибки, и что уравнение (1) правильно определено. Такие проблемы, как ошибки измерения и пропущенные переменные здесь не рассматриваются.
+
Где Quant(<tex>y_{i} | x_{i}</tex>) обозначает условную квантиль <tex>y_{i}</tex> на векторе регрессора <tex>x_{i}</tex>.
-
Если (1) определено некорректно (то есть, не линейно), тогда модель можно
+
-
рассматривать как лучший линейный прогноз для условной квантили.
+
-
Если функция <tex>F_{u}</tex>(⋅) известна, то для оценки b могут использоваться различ-
+
-
ные подходы. Однако в данной модели распределение остаточного члена <tex>u_{i}</tex>
+
-
остается неопределенным. Как показывает соотношение (1), единственным
+
-
предположением является лишь то, что <tex>u_{i}</tex> удовлетворяет ограничению на
+
-
квантиль:
+
 +
Аналог линейной модели для Q-ого квантиля определяется таким же образом. То есть <tex>\hat b</tex> , оценка для b в соотношении (1) — называемом Q-ой квантильной регрессией — решает задачу
-
<center>
 
-
Quant<tex>(u | x_{i})=0</tex>
 
-
</center>
 
-
Вообще, Q-ая простая квантиль (0 < Q < 1) переменной y, скажем μ , является
 
-
решением следующей задачи:
 
<center>
<center>
-
<tex> \min_{b} (\sum_{i:y_{i}>=b}Q|y_{i}-b|+ \sum_{i:y_{i}<b}(1-Q)|y_{i}-b| ) </tex>
+
<tex> \min_{b}</tex> (1/n)<tex>(\sum_{i:y_{i}>=x'_{i}b}Q|y_{i}-x'_{i}b|+ \sum_{i:y_{i}<x'_{i}b}(1-Q)|y_{i}-x'_{i}b| )=\min_{b}</tex> (1/n)<tex>\sum_{i=1}^{n}r(u_{i}) (2) </tex>
</center>
</center>
-
В частности, медиана (Q=1/2) находится минимизацией суммы модулей:
+
где r(λ)= (Q − I(λ < 0))λ — контрольная функция (check function),a I(.)-обычная индикаторная функция.
-
<center>
+
-
<tex> \sum_{b}|y_{i}-b| </tex>
+
-
</center>
+
-
Аналог линейной модели для Q-ого квантиля определяется таким же образом. То есть <tex>\hat b</tex> , оценка для b в соотношении (1) — называемом Q-ой квантильной регрессией — решает задачу
 
 +
Важным частным случаем модели квантильной регрессии является медианная регрессия (Q=1/2) или знаковый статистический метод. Рассмотрим его первым. Знаковый метод исходит из предположения, что случайные ошибки могут быть положительными или отрицательными с равными вероятностями. Следовательно, линия регрессии будет проходить так, чтобы с каждой стороны от нее было равное количество наблюдений.
 +
Q = 0.25. По определению квантили, вероятность того, что ошибки меньше нуля будет равна 25%. Следовательно, линия регрессии будет проходить ниже линии медианной регрессии
 +
 +
x - переменная времени в нашем случае,
 +
 +
<tex>\hat{Y}</tex> = ax+b - предполагаемые значения оценок продаж
 +
 +
Y - реальные значения продаж
 +
 +
Минимизация функционала:
<center>
<center>
-
<tex> \min_{b}</tex> (1/n)<tex>(\sum_{i:y_{i}>=x'_{i}b}Q|y_{i}-x'_{i}b|+ \sum_{i:y_{i}<x'_{i}b}(1-Q)|y_{i}-x'_{i}b| )=\min_{b}</tex> (1/n)<tex>\sum_{i=1}^{n}r(u_{i}) (2) </tex>
+
<tex> \min_{(a, b)} (\sum_{\hat{Y} - Y >= 0 }Q|\hat{Y} - Y|+ \sum_{\hat{Y} - Y < 0 }(1-Q)|\hat{Y} - Y| ) </tex>
</center>
</center>
-
где r(λ)= (Q − I(λ < 0))λ — контрольная функция (check function),a I(.)-обычная индикаторная функция.
+
<center>
 +
 
 +
По полученным значениям коэффициентов а и b проводим прямую прогноз.
 +
 
 +
 
 +
'''Эвристические алгоритмы'''
 +
</center>
 +
 
 +
Будем полагать, что товар новый в течении 5 недель. По 1 неделе(7 точкам) будем прогнозировать продажи на последующее время, предполагая, что продажи новых товаров будут расти по экспоненте
 +
<center><tex>y=aexp(bx)</tex></center>
 +
параболе
 +
<center><tex>y=a{x}^{2}+bx+c</tex></center>
 +
или логарифму
 +
<center><tex>y=log(x)</tex></center>
 +
 
 +
После прогноза сравнивается его ошибка на последующей неделе у базового алгоритма и эвристического. Если ошибка получилось меньше на эвристическом, то для дальнейшего прогноза будет использоваться он, и базовый в противном случае.
=== Варианты или модификации ===
=== Варианты или модификации ===
Варианты алгоритма зависят от параметров stp и Q. Значения параметров выбираются по результатам экспериментов.
Варианты алгоритма зависят от параметров stp и Q. Значения параметров выбираются по результатам экспериментов.
 +
В качестве функций для прогнозирования объёмов продаж новых товаров могут использоваться любые растущие функции(в проекте рассматривались только экспонента, логарифм,квадратная парабола)
== Описание системы ==
== Описание системы ==
-
* Описание системы: [http://mlalgorithms.svn.sourceforge.net/viewvc/mlalgorithms/NewGoodsProgn/Docs/Systemdocs.doc]
+
* Описание системы: [http://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group674/Litvinov2009NewGoods/Docs/Systemdocs.doc]
-
* Ссылка на файлы системы: [http://mlalgorithms.svn.sourceforge.net/viewvc/mlalgorithms/NewGoodsProgn/]
+
* Ссылка на файлы системы: [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group674/Litvinov2009NewGoods/]
== Отчет о полученных результатах ==
== Отчет о полученных результатах ==
 +
 +
<center>'''Пример работы квантильной регрессии на модельных данных'''</center>
 +
 +
[[Изображение:examp1.jpg|800px]]
 +
 +
модельные данные(синяя линия) - случайные величины, распределенные по нормальному закону
 +
чёрная - teta = 0.75, красная teta = 0.25, зелёная - 0.5
 +
 +
<center>'''Приведём сначала варианты настройки базового алгоритма на различных парметрах'''</center>
 +
Параметр stp подбирался в зависимости от параметра rr (сумма модулей отклонения прогноза от реальных данных за месяц)
Параметр stp подбирался в зависимости от параметра rr (сумма модулей отклонения прогноза от реальных данных за месяц)
[[Изображение:gra.jpg|500px]]
[[Изображение:gra.jpg|500px]]
Строка 173: Строка 195:
[[Изображение:teta5.jpg|650px]]
[[Изображение:teta5.jpg|650px]]
 +
 +
 +
<center>'''Пример работы эвристических алгоритмов'''</center>
 +
 +
Прогноз, полученный с помощью экспоненты.
 +
 +
Красная линия - базовый алгоритм, зелёная - эвристический.
 +
ошибка базового алгоритма ~600, экспоненты ~400
 +
 +
 +
 +
[[Изображение:exp2.jpg|650px]]
 +
 +
 +
 +
ошибка базового алгоритма ~400, экспоненты ~200
 +
 +
[[Изображение:exp.jpg|650px]]
 +
 +
Прогноз, полученный с помощью логарифма.
 +
 +
Красная линия - базовый алгоритм, зелёная - эвристический.
 +
ошибка базового алгоритма ~600, логарифмом ~1600
 +
 +
[[Изображение:log1.jpg|650px]]
 +
 +
ошибка базового алгоритма ~400, логарифмом ~300
 +
 +
[[Изображение:log.jpg|650px]]
 +
 +
Прогноз, полученный с помощью параболы.
 +
 +
Красная линия - базовый алгоритм, зелёная - эвристический.
 +
ошибка базового алгоритма ~600, параболы ~800
 +
 +
[[Изображение:parab1.jpg|650px]]
 +
 +
ошибка базового алгоритма ~400, параболы ~700
 +
 +
[[Изображение:parab.jpg|650px]]
== Список литературы ==
== Список литературы ==
Строка 183: Строка 245:
3)К. В. Воронцов, Лекции по логическим алгоритмам классификации
3)К. В. Воронцов, Лекции по логическим алгоритмам классификации
-
{{Задание|Литвинов Игорь|В.В. Стрижов|15 декабря 2009|Litvinov|Strijov}}
+
{{ЗаданиеВыполнено|Литвинов Игорь|В.В. Стрижов|15 декабря 2009|Litvinov|Strijov}}
 +
[[Категория:Практика и вычислительные эксперименты]]
__NOTOC__
__NOTOC__

Текущая версия

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

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

Цель проекта

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

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

Результаты проекта могут быть использованы для планирования объёмов продаж новых товаров.

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

Дано: товарный классификатор (иерархия товарных групп); региональный классификатор (иерархия магазинов и регионов); товародвижения (продажи, поставки, остатки и пр., праздники и промо-акции).

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

Продажи прогнозируется по каждому товару раздельно. Прогнозирование объёмов продаж на неделю основывается на предыстории продаж за фиксированное число дней. Это число дней регулируется переменной stp (количество шагов - количество дней, на которых основывается прогноз) в базовом алгоритме(квантильная регрессия). Критерием качества служит сумма модулей отклонения прогноза от реальной величины покупок по дням.

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

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

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

Прогнозирование объёмов продаж новых товаров производится в будние дни (время праздников и промо-акций в проекте не рассматривается).

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

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

Прогнозирование производится методом квантильной регрессии для различных квантилей Θ (0.25; 0.4; 0.5; 0.6; 0.75). При прогнозировании можно менять параметр stp.

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

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

На основе данных продаж за фиксированное число дней (параметр stp) прогнозируются продажи новых товаров на 7 дней вперёд с наибольшей вероятностью (Θ=0.5) и вероятностями 25%, 40%. Будем использовать функционал качества

R(y, \hat{y}) = \sum_{i}|y_{i}-\hat{y}_{i}|.

где y, \hat{y} соответственно известное значение и прогноз.

x_{i}(t) - временной ряд для каждого из товаров, y_{i}(t) - значение продаж для каждого такого ряда.

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

В проекте использовался метод квантильной регрессии и эвристические алгоритмы.

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

Для прогнозирования объёмов продаж новых товаров в литературе описываются различные методы. Метод квантильной регрессии впервые применён в [1], прогнозирование с помощью которого наиболее точно и позволяет прогнозировать c разными вероятностями [2]. Квантильная регрессия с параметром 0.5 является линейной, которая рассматриватся в [3].

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

Предполагается, что наилучший прогноз будет получен с помощью квантильной регрессии с параметром Θ=0.5. Прогноз требуется не более чем на 7 дней.

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

Общая модель квантильной регрессии

Пусть (x_{i},y_{i}), i=1,...,n - некоторые переменные, где x_{i} - K×1 вектор независимых переменных в уравнении регрессии. Допускается, что


P(y_{i}τ | x_{i})=F_{u}(τ-x'_{i} b| x_{i}), i=1,...,n.

Это соотношение — в другой формулировке — может быть переписано как

y_{i}=x'_{i}b+u_{i},  Quant_{i}(y_{i}|x_{i})=x'_{i}b (1)

Где Quant(y_{i} | x_{i}) обозначает условную квантиль y_{i} на векторе регрессора x_{i}.

Аналог линейной модели для Q-ого квантиля определяется таким же образом. То есть \hat b , оценка для b в соотношении (1) — называемом Q-ой квантильной регрессией — решает задачу


  \min_{b} (1/n)(\sum_{i:y_{i}>=x'_{i}b}Q|y_{i}-x'_{i}b|+ \sum_{i:y_{i}<x'_{i}b}(1-Q)|y_{i}-x'_{i}b| )=\min_{b} (1/n)\sum_{i=1}^{n}r(u_{i})          (2)

где r(λ)= (Q − I(λ < 0))λ — контрольная функция (check function),a I(.)-обычная индикаторная функция.


Важным частным случаем модели квантильной регрессии является медианная регрессия (Q=1/2) или знаковый статистический метод. Рассмотрим его первым. Знаковый метод исходит из предположения, что случайные ошибки могут быть положительными или отрицательными с равными вероятностями. Следовательно, линия регрессии будет проходить так, чтобы с каждой стороны от нее было равное количество наблюдений.

Q = 0.25. По определению квантили, вероятность того, что ошибки меньше нуля будет равна 25%. Следовательно, линия регрессии будет проходить ниже линии медианной регрессии

x - переменная времени в нашем случае,

\hat{Y} = ax+b - предполагаемые значения оценок продаж

Y - реальные значения продаж

Минимизация функционала:

  \min_{(a, b)} (\sum_{\hat{Y} - Y >= 0 }Q|\hat{Y} - Y|+ \sum_{\hat{Y} - Y < 0 }(1-Q)|\hat{Y} - Y| )

По полученным значениям коэффициентов а и b проводим прямую прогноз.


Эвристические алгоритмы

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

y=aexp(bx)

параболе

y=a{x}^{2}+bx+c

или логарифму

y=log(x)

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

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

Варианты алгоритма зависят от параметров stp и Q. Значения параметров выбираются по результатам экспериментов. В качестве функций для прогнозирования объёмов продаж новых товаров могут использоваться любые растущие функции(в проекте рассматривались только экспонента, логарифм,квадратная парабола)

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

  • Описание системы: [1]
  • Ссылка на файлы системы: [2]

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

Пример работы квантильной регрессии на модельных данных

модельные данные(синяя линия) - случайные величины, распределенные по нормальному закону чёрная - teta = 0.75, красная teta = 0.25, зелёная - 0.5

Приведём сначала варианты настройки базового алгоритма на различных парметрах

Параметр stp подбирался в зависимости от параметра rr (сумма модулей отклонения прогноза от реальных данных за месяц)

Для наименьшего rr выбирается значение stp= 25, которое используется в дальнейшем для расчётов в качестве оптимального.

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

1) Параметр teta=0.5,

stp = 25

Значения ошибок rs =418.4907 rr =412.4245

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


2) Параметр teta=0.25,

stp = 25

Значения ошибок rs =418.4907 rr =532.9533

3) Параметр teta=0.75,

stp = 25

Значения ошибок rs =418.4907 rr =391.8512

4) Параметр teta=0.6,

stp = 25

Значения ошибок rs =418.4907 rr =382.4836

5) Параметр teta=0.4,

stp = 25

Значения ошибок rs =418.4907 rr =457.0586


Пример работы эвристических алгоритмов

Прогноз, полученный с помощью экспоненты.

Красная линия - базовый алгоритм, зелёная - эвристический. ошибка базового алгоритма ~600, экспоненты ~400



ошибка базового алгоритма ~400, экспоненты ~200

Прогноз, полученный с помощью логарифма.

Красная линия - базовый алгоритм, зелёная - эвристический. ошибка базового алгоритма ~600, логарифмом ~1600

ошибка базового алгоритма ~400, логарифмом ~300

Прогноз, полученный с помощью параболы.

Красная линия - базовый алгоритм, зелёная - эвристический. ошибка базового алгоритма ~600, параболы ~800

ошибка базового алгоритма ~400, параболы ~700

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

1) Koenker and G. Bassett, Jr. "Regression Quantiles," Econometrica, Vol.46 No1 (January, 1978)

2)Постникова Е. (2000) Квантильная регрессия. НГУ.

3)К. В. Воронцов, Лекции по логическим алгоритмам классификации


Данная статья была создана в рамках учебного задания.
Студент: Литвинов Игорь
Преподаватель: В.В. Стрижов
Срок: 15 декабря 2009


В настоящее время задание завершено и проверено. Данная страница может свободно правиться другими участниками проекта MachineLearning.ru.

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

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