Прогнозирование объемов продаж новых товаров (отчет)
Материал из MachineLearning.
(→Список литературы) |
(→Описание системы) |
||
(83 промежуточные версии не показаны) | |||
Строка 17: | Строка 17: | ||
Прогнозирование объёмов продаж на неделю основывается на | Прогнозирование объёмов продаж на неделю основывается на | ||
предыстории продаж за фиксированное число дней. Это | предыстории продаж за фиксированное число дней. Это | ||
- | число дней регулируется переменной stp (количество шагов - количество дней, на которых основывается прогноз). | + | число дней регулируется переменной stp (количество шагов - количество дней, на которых основывается прогноз) в базовом алгоритме(квантильная регрессия). Критерием качества служит сумма модулей отклонения прогноза от реальной величины покупок по дням. |
- | Критерием качества служит сумма модулей отклонения прогноза от реальной величины покупок по дням. | + | |
=== Требования к проекту === | === Требования к проекту === | ||
- | Сумма модулей отклонения в алгоритме проекта должна быль меньше, чем для скользящего среднего за 30 дней. | + | Сумма модулей отклонения в базовом алгоритме проекта должна быль меньше, чем для скользящего среднего за 30 дней. |
+ | Эвристические алгоритмы будут применяться в прогнозировании, если только ошибка на них будет меньше, чем ошибка на базовом алгоритме за 1 неделю. | ||
=== Выполнимость проекта === | === Выполнимость проекта === | ||
Строка 27: | Строка 27: | ||
=== Используемые методы === | === Используемые методы === | ||
+ | |||
+ | Базовый алгоритм | ||
+ | |||
Прогнозирование производится методом квантильной регрессии для различных квантилей '''Θ''' (0.25; 0.4; 0.5; 0.6; 0.75). При прогнозировании можно менять параметр stp. | Прогнозирование производится методом квантильной регрессии для различных квантилей '''Θ''' (0.25; 0.4; 0.5; 0.6; 0.75). При прогнозировании можно менять параметр stp. | ||
+ | |||
+ | Также используются эвристические алгоритмы прогнозирование продаж экспонентой, параболой и логарифмом. | ||
== Постановка задачи == | == Постановка задачи == | ||
На основе данных продаж за фиксированное число дней (параметр stp) прогнозируются продажи новых товаров на 7 дней вперёд с наибольшей вероятностью ('''Θ'''=0.5) и вероятностями 25%, 40%. Будем использовать функционал качества | На основе данных продаж за фиксированное число дней (параметр stp) прогнозируются продажи новых товаров на 7 дней вперёд с наибольшей вероятностью ('''Θ'''=0.5) и вероятностями 25%, 40%. Будем использовать функционал качества | ||
<center> | <center> | ||
- | <tex> | + | <tex>R(y, \hat{y}) = \sum_{i}|y_{i}-\hat{y}_{i}|.</tex> |
</center> | </center> | ||
где y, <tex>\hat{y}</tex> соответственно известное значение и прогноз. | где y, <tex>\hat{y}</tex> соответственно известное значение и прогноз. | ||
Строка 39: | Строка 44: | ||
== Описание алгоритмов == | == Описание алгоритмов == | ||
- | В проекте использовался метод квантильной регрессии. | + | В проекте использовался метод квантильной регрессии и эвристические алгоритмы. |
=== Обзор литературы === | === Обзор литературы === | ||
- | Для прогнозирования объёмов продаж новых товаров в литературе описываются различные методы. Метод квантильной регрессии впервые применён в [1], прогнозирование с помощью которого наиболее точно и позволяет прогнозировать c разными вероятностями [2]. Квантильная регрессия с параметром 0.5 является линейной, которая рассматриватся в [ | + | Для прогнозирования объёмов продаж новых товаров в литературе описываются различные методы. Метод квантильной регрессии впервые применён в [1], прогнозирование с помощью которого наиболее точно и позволяет прогнозировать c разными вероятностями [2]. Квантильная регрессия с параметром 0.5 является линейной, которая рассматриватся в [3]. |
=== Базовые предположения === | === Базовые предположения === | ||
Строка 66: | Строка 71: | ||
</center> | </center> | ||
- | Где Quant(<tex>y_{i} | x_{i}</tex>) обозначает условную квантиль <tex>y_{i}</tex> на векторе регрессора <tex>x_{i}</tex> | + | Где Quant(<tex>y_{i} | x_{i}</tex>) обозначает условную квантиль <tex>y_{i}</tex> на векторе регрессора <tex>x_{i}</tex>. |
- | + | ||
- | + | Аналог линейной модели для Q-ого квантиля определяется таким же образом. То есть <tex>\hat b</tex> , оценка для b в соотношении (1) — называемом Q-ой квантильной регрессией — решает задачу | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
<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> | |
</center> | </center> | ||
- | + | где r(λ)= (Q − I(λ < 0))λ — контрольная функция (check function),a I(.)-обычная индикаторная функция. | |
- | + | ||
+ | |||
+ | |||
+ | Важным частным случаем модели квантильной регрессии является медианная регрессия (Q=1/2) или знаковый статистический метод. Рассмотрим его первым. Знаковый метод исходит из предположения, что случайные ошибки могут быть положительными или отрицательными с равными вероятностями. Следовательно, линия регрессии будет проходить так, чтобы с каждой стороны от нее было равное количество наблюдений. | ||
+ | |||
+ | Q = 0.25. По определению квантили, вероятность того, что ошибки меньше нуля будет равна 25%. Следовательно, линия регрессии будет проходить ниже линии медианной регрессии | ||
+ | |||
+ | x - переменная времени в нашем случае, | ||
+ | |||
+ | <tex>\hat{Y}</tex> = ax+b - предполагаемые значения оценок продаж | ||
+ | |||
+ | Y - реальные значения продаж | ||
+ | |||
+ | Минимизация функционала: | ||
<center> | <center> | ||
- | <tex> \min_{b} (\sum_{ | + | <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> | ||
- | |||
<center> | <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. Значения параметров выбираются по результатам экспериментов. | ||
+ | В качестве функций для прогнозирования объёмов продаж новых товаров могут использоваться любые растущие функции(в проекте рассматривались только экспонента, логарифм,квадратная парабола) | ||
== Описание системы == | == Описание системы == | ||
- | * | + | * Описание системы: [http://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group674/Litvinov2009NewGoods/Docs/Systemdocs.doc] |
- | * Ссылка на файлы системы | + | * Ссылка на файлы системы: [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 (сумма модулей отклонения прогноза от реальных данных за месяц) | ||
+ | [[Изображение:gra.jpg|500px]] | ||
+ | |||
+ | Для наименьшего rr выбирается значение stp= 25, которое используется в дальнейшем для расчётов в качестве оптимального. | ||
+ | |||
+ | Проанализируем зависимость ошибок алгоритма для разного параметра квантильной регрессии teta. Прогнозирование ведётся по одному товару, в качестве примера рассмотрен товар с индексом 1 в таблице данных. | ||
+ | |||
+ | 1) Параметр teta=0.5, | ||
+ | |||
+ | stp = 25 | ||
+ | |||
+ | Значения ошибок | ||
+ | rs =418.4907 | ||
+ | rr =412.4245 | ||
+ | |||
+ | где rs - сумма модулей отклонения средней за месяц величины от реальных данных | ||
+ | [[Изображение:teta1.jpg|650px]] | ||
+ | |||
+ | |||
+ | 2) Параметр teta=0.25, | ||
+ | |||
+ | stp = 25 | ||
+ | |||
+ | Значения ошибок | ||
+ | rs =418.4907 | ||
+ | rr =532.9533 | ||
+ | |||
+ | [[Изображение:teta2.jpg|650px]] | ||
+ | |||
+ | 3) Параметр teta=0.75, | ||
+ | |||
+ | stp = 25 | ||
+ | |||
+ | Значения ошибок | ||
+ | rs =418.4907 | ||
+ | rr =391.8512 | ||
+ | |||
+ | [[Изображение:teta3.jpg|650px]] | ||
+ | |||
+ | 4) Параметр teta=0.6, | ||
+ | |||
+ | stp = 25 | ||
+ | |||
+ | Значения ошибок | ||
+ | rs =418.4907 | ||
+ | rr =382.4836 | ||
+ | |||
+ | [[Изображение:teta4.jpg|650px]] | ||
+ | |||
+ | 5) Параметр teta=0.4, | ||
+ | |||
+ | stp = 25 | ||
+ | |||
+ | Значения ошибок | ||
+ | rs =418.4907 | ||
+ | rr =457.0586 | ||
+ | |||
+ | [[Изображение: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]] | ||
== Список литературы == | == Список литературы == | ||
Строка 126: | Строка 245: | ||
3)К. В. Воронцов, Лекции по логическим алгоритмам классификации | 3)К. В. Воронцов, Лекции по логическим алгоритмам классификации | ||
- | {{ | + | {{ЗаданиеВыполнено|Литвинов Игорь|В.В. Стрижов|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%. Будем использовать функционал качества
где y, соответственно известное значение и прогноз.
- временной ряд для каждого из товаров,
- значение продаж для каждого такого ряда.
Описание алгоритмов
В проекте использовался метод квантильной регрессии и эвристические алгоритмы.
Обзор литературы
Для прогнозирования объёмов продаж новых товаров в литературе описываются различные методы. Метод квантильной регрессии впервые применён в [1], прогнозирование с помощью которого наиболее точно и позволяет прогнозировать c разными вероятностями [2]. Квантильная регрессия с параметром 0.5 является линейной, которая рассматриватся в [3].
Базовые предположения
Предполагается, что наилучший прогноз будет получен с помощью квантильной регрессии с параметром Θ=0.5. Прогноз требуется не более чем на 7 дней.
Математическое описание
Общая модель квантильной регрессии
Пусть , i=1,...,n - некоторые переменные, где
- K×1 вектор независимых переменных в уравнении регрессии. Допускается, что
≤τ |
)=
(τ-
b|
), i=1,...,n.
Это соотношение — в другой формулировке — может быть переписано как
,
(1)
Где Quant() обозначает условную квантиль
на векторе регрессора
.
Аналог линейной модели для Q-ого квантиля определяется таким же образом. То есть , оценка для b в соотношении (1) — называемом Q-ой квантильной регрессией — решает задачу
(1/n)
(1/n)
где r(λ)= (Q − I(λ < 0))λ — контрольная функция (check function),a I(.)-обычная индикаторная функция.
Важным частным случаем модели квантильной регрессии является медианная регрессия (Q=1/2) или знаковый статистический метод. Рассмотрим его первым. Знаковый метод исходит из предположения, что случайные ошибки могут быть положительными или отрицательными с равными вероятностями. Следовательно, линия регрессии будет проходить так, чтобы с каждой стороны от нее было равное количество наблюдений.
Q = 0.25. По определению квантили, вероятность того, что ошибки меньше нуля будет равна 25%. Следовательно, линия регрессии будет проходить ниже линии медианной регрессии
x - переменная времени в нашем случае,
= ax+b - предполагаемые значения оценок продаж
Y - реальные значения продаж
Минимизация функционала:
По полученным значениям коэффициентов а и b проводим прямую прогноз.
Эвристические алгоритмы
Будем полагать, что товар новый в течении 5 недель. По 1 неделе(7 точкам) будем прогнозировать продажи на последующее время, предполагая, что продажи новых товаров будут расти по экспоненте
параболе
или логарифму
После прогноза сравнивается его ошибка на последующей неделе у базового алгоритма и эвристического. Если ошибка получилось меньше на эвристическом, то для дальнейшего прогноза будет использоваться он, и базовый в противном случае.
Варианты или модификации
Варианты алгоритма зависят от параметров stp и Q. Значения параметров выбираются по результатам экспериментов. В качестве функций для прогнозирования объёмов продаж новых товаров могут использоваться любые растущие функции(в проекте рассматривались только экспонента, логарифм,квадратная парабола)
Описание системы
Отчет о полученных результатах
модельные данные(синяя линия) - случайные величины, распределенные по нормальному закону чёрная - 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)К. В. Воронцов, Лекции по логическим алгоритмам классификации
![]() | Данная статья была создана в рамках учебного задания.
См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |