“С чем лучше сосиски коррелируются с кетчупом или мариноваными огурцами? А черт, ладно, беру и то, и то!”
“Hoegaarden почти раскупили, а ведь до вечера пятницы еще целых полдня. Эх, че ж так плохо спрос то спрогнозировали? ”
Интересно, а что применяют управляющие для прогнозирования продаж?
А иногда приходишь с этим вопросом к ритейлерам, а тебе в ответ люди говорят «Нууууу, обычно как-то так ...» и начинают делать широкие жесты руками. Да вот, приблизительно, такие, как на картинке.
Так вот, мы в Datawiz.io, решительно не согласны с таким подходом.
В предыдущей статье о корреляции в ритейле мы рассмотрели возможности определения влияния продаж категорий товаров на другие, и на общий оборот магазина.
Но возможно ли более точно найти ключевые товары? Какова значимость продаж определенных категорий товаров и как именно они влияют на оборот магазина?
Помогут линейные модели. Построим простое уравнение которое опишет структуру продаж магазина и которое легко смоделировать.
Использовать будем все те же исходные данные по двум магазинам: Гастроном и Универсам:
- объем продаж товаров определенной категории;
- количество упоминаний в чеках товаров определенной категории.
Составляем таблицы:
ряды — недели;
колонки — категории;
ячейки -количество проданных товаров или упоминаний в чеках.
Применяем:
feature_selection <- function(df){
drops <- c('Непродовольственные.товары','Фрукты','Непродовольственные.товары')
df <- df[,!names(df) %in% drops]
control <- rfeControl(functions=rfFuncs, method="cv", number=10)
results <- rfe(df[1:ncol(df)-1],
df$sum,
sizes=c(1:ncol(df)-1),
rfeControl=control)
return(results)
}
results <- feature_selection(df=Gastronom_df)
predictors(results)
plot(results, type=c("g", "o"))
output
Получаем список товарных категорий по Гастроному:
- Хлеб и хлебобулочные изделия
- Снеки
- Молоко и молочная продукция
- Кофе, какао, чай
- Бакалея
- Колбасные изделия
- Консервация
- Кондитерские изделия
- Безалкогольные напитки
- Мясо
- Диабетическое питание
- Табачные изделия
- Сопутствующие продовольственные товары
- Заморозка
- Растительное масло
Определяем нужное количество фичей для анализа объема продаж Гастронома.
Мы можем определить наиболее эффективное количество фичей для построения модели. Как видим, оптимальным является использование 9, но удобным для нас будет использовать топ-6.
create formula
Gastronom_formula <- sum~
Хлеб и хлебобулочные изделия+
Снеки+
Молоко и молочная продукция+
Кофе, какао, чай+
Бакалея+
Колбасные изделия
Используем линейную регрессию:
Gastronom_lm <- linear_models(Gastronom_formula,Gastronom_df)
coefplot(Gastronom_lm, intercept=FALSE, outerCI=1.96, lwdOuter=1.5)
В модели представлены коэффициенты значения, чем коэффициент выше 0, тем более он влияет на результат.
cv.lm(df=Gastronom_df, Gastronom_lm, m=10) #run cross validation test
> sqrt(1629697) #mse
[1] 1277 #square root from mse
Print coefficients
>Gastronom_lm$coefficients
(Intercept) 5.53e+02
Хлеб и хлебобулочные изделия 3.20e+00
Снеки 4.60e+00
Молоко и молочная продукция 1.18e+00
Кофе, какао, чай 9.34e-03
Бакалея 1.23e+00
Колбасные изделия 3.58e+00
Используя данные Гастронома получаем такую формулу:
Оборот +- 1277 = 5530 + 3.2 *Хлеб и хлебобулочные изделия + 4.6 *Снеки +1.18 *Молоко и молочная продукция +0.0934* Кофе, какао, чай + 1.23 *Бакалея +3.58* Колбасные изделия
Проанализировав ее, видим, что категория “Кофе, какао, чай” имеет слишком слабое влияние на результат, а значит мы можем ее исключить без потери точности.
Получаем:
Оборот +- 1277 = 5530 + 3.2 *Хлеб и хлебобулочные изделия + 4.6 *Снеки +1.18 *Молоко и молочная продукция + 1.23 *Бакалея +3.58* Колбасные изделия
Итак, теперь мы видим товары каких категорий значительно влияют на оборот выбранного магазина. Любые колебания их продаж значительно отразятся на конечном результате.
Если же мы хотим рассмотреть влияние категорий товаров не на оборот, а на количество чеков, мы используем другие данные о количестве упоминаний товаров в чеках.
Определяем нужное количество фичей для анализа количества чеков Гастронома
- Хлеб и хлебобулочные изделия
- Снеки
- Бакалея
- Молоко и молочная продукция
- Кондитерские изделия
- Колбасные изделия
- Кофе, какао, чай
- Консервация
- Табачные изделия
- Безалкогольные напитки
- Мясо
- Сопутствующие продовольственные товары
- Диабетическое питание
- Алкоголь
Используем 6 переменных.
Gastronom_formula <- sum~
Хлеб и хлебобулочные изделия+
Снеки+
Бакалея+
Молоко и молочная продукция+
Кондитерские изделия+
Колбасные изделия
> sqrt(1033597)
[1] 1017
> Gastronom_lm$coefficients
(Intercept) 840.105
Хлеб и хлебобулочные изделия 3.792
Снеки 3.283
Бакалея 0.741
Молоко и молочная продукция 0.924
Кондитерские изделия 0.142
Колбасные изделия 2.358
Получаем такое уравнение
receipt_qty+-1017 = 840 + 3.79 *Хлеб и хлебобулочные изделия + 3.29 *Снеки + 0.7*Бакалея + 0.92 *Молоко и молочная продукция +0.14*Кондитерские изделия +2.358 *Колбасные изделия
Сравним 2 уравнения Оборота и Количества упоминаний в чеках по Гастроному
Оборот +- 1277 = 5530 + 3.2 *Хлеб и хлебобулочные изделия + 4.6 *Снеки +1.18 *Молоко и молочная продукция + 1.23 *Бакалея +3.58* Колбасные изделия
и
receipt_qty+-1017 = 840 + 3.79 *Хлеб и хлебобулочные изделия + 3.29 *Снеки + 0.7*Бакалея + 0.92 *Молоко и молочная продукция +0.14*Кондитерские изделия +2.358 *Колбасные изделия
Коэффициенты в первом уравнении значительно выше, чем во втором, это значит, что увеличение продаж данных категорий товаров больше повлияет на оборот магазина, чем на количество чеков. Но в тоже время на количество чеков может повлиять увеличение продаж Кондитерских изделий, хотя и с небольшим коэффициентом. Полученные данные можно и нужно активно использовать.
В это же время ситуация в другом магазине может значительно отличатся.
Проанализируем результаты Универсама
Выбираем товары для анализа оборота по Универсаму.
- Диабетическое питание
- Хлеб и хлебобулочные изделия
- Консервация
- Молоко и молочная продукция
- Кофе, какао, чай
- Бакалея
- Колбасные изделия
- Сопутствующие продовольственные товары
- Пирожные и торты
- Товары для животных
- Яйца
- Заморозка
- Безалкогольные напитки
- Табачные изделия
- Товары без НДС
- Кондитерские изделия
- Алкоголь
- Растительное масло
- Снеки
- Рыба и морепродукты
- Мясо
Используем 3 фичи.
universam_formula = sum ~
Диабетическое питание+
Хлеб и хлебобулочные изделия +
Консервация+
> sqrt(9591095)
[1] 3097
> universam_lm$coefficients
(Intercept) -1612.10
Диабетическое питание 27.77
Хлеб и хлебобулочные изделия 5.24
Консервация 1.44
Оборот +- 3097 = -1612.10 + 27.77 *Диабетическое питание + 5.24 *Хлеб и хлебобулочные изделия + 1.44 *Консервация
Интересный выбор товаров, что он значит рассмотрим ниже.
Данные по количеству упоминаний товаров в чеках в Универсаме
- Хлеб и хлебобулочные изделия
- Молоко и молочная продукция
- Диабетическое питание
- Кондитерские изделия
- Колбасные изделия
- Консервация
- Кофе, какао, чай
- Бакалея
- Яйца
- Пирожные и торты
- Сопутствующие продовольственные товары
- Заморозка
- Снеки
- Табачные изделия
- Безалкогольные напитки
- Растительное масло
- Алкоголь
- Товары без НДС
- Товары для животных
- Мясо
- Рыба и морепродукты
universam_formula = sum ~
Хлеб и хлебобулочные изделия+
Молоко и молочная продукция+
Диабетическое питание+
Кондитерские изделия+
Колбасные изделия
> sqrt(3382240)
[1] 1839
> universam_lm$coefficients
(Intercept) 270.43
Хлеб и хлебобулочные изделия 2.24
Молоко и молочная продукция 1.37
Диабетическое питание 14.81
Кондитерские изделия 1.21
Колбасные изделия 1.31
Eсли мы взглянем на ситуацию по Универсаму, то увидим ситуацию явно отличную от Гастронома.
Оборот +- 3097 = -1612.10 + 27.77 *Диабетическое питание + 5.24 *Хлеб и хлебобулочные изделия + 1.44 *Консервация
и
Receipt_qty+-1839 = 270.43 + 2.24 *Хлеб и хлебобулочные изделия + 1.37 *Молоко и молочная продукция + 14.81*Диабетическое питание + 1.21*Кондитерские изделия + 1.31 *Колбасные изделия
Всего 3 категории товаров влияют на оборот магазина, и Диабетическое питание особенно, практически в 5 раз больше чем Хлеб и хлебобулочные изделия. Как такое могло получится? Нам тоже стало интересно. Мы копнули глубже, заглянув в список товаров входящих в Универсаме в эту категорию. Оказалось все очень просто Универсам в категорию Диабетического питания включил всю линейку детского питания, что, естественно, значительно повысило продажи именно этой категории.
А вот на количество чеков по Универсаму влияет уже 5 категорий товаров. Но, например, Консервация влияет на оборот магазина, но не отражается на количестве чеков. Кондитерка и Колбасы влияют на количество чеков, но слабее на общий оборот магазина.
В чем, собственно, суть? Все использованные в статье примеры достаточно просты, но практическое их применение дает большой простор для анализа, прогноза продаж, планирования работы ритейлера, организации акций,… Не обязательно только одного или двух магазинов, но и торговой сети в целом.
Так давайте подходить к процессу прогнозирования в ритейле не только творчески, но и аналитически. С уважением, Datawiz.io.
Комментарии (8)
mephistopheies
07.08.2015 16:58+3рекомендую https://class.coursera.org/econometrics-001, тогда не будет странных фраз типа
Мы можем определить наиболее эффективное количество фичей для построения модели. Как видим, оптимальным является использование 9, но удобным для нас будет использовать топ-6.
В модели представлены коэффициенты значения, чем коэффициент выше 0, тем более он влияет на результат.
тогда в анализе появится исследование на мультиколлинеарность, эндогенность, статистическая значимость коэффициентов, а не просто «чем больше тем важнее» и тд
Cekory
07.08.2015 19:28+3Р-квадрата для моделей не хватает. И много других ляпов — выглядит по-дилетантски, на студенческом уровне. И совсем непонятно, как ваши модели можно использовать для «прогноза продаж, планирования работы ритейлера, организации акций,…».
OlegUV
07.08.2015 21:20+2Вы пропустили стадию составления модели (включая её валидацию), вернее проскочили её так быстро, что даже не понадобилась нормальная нотация. А модель — это минимум 90% (!) всего анализа, остальное — чистая рутина.
zmey2
08.08.2015 20:38А зачем здесь вообще регрессия? Оборот магазина это сумма проданных товаров, максимальный объем максимально и влияет, нет?
OlegUV
10.08.2015 08:17я тоже так думаю, но ребята делают интересную штуку — взгляд с другой точки зрения, не важно какой, важно, что другой и имеющей право быть, а это всегда и полезно и интересно
Dreamastiy
10.08.2015 09:24Насколько я понимаю, Ваше утверждение верно для отдельного момента времени, плюс количество совершенно не говорит об обороте (1 шт. Jameson'а окажет влияние наоборот гораздо больше, чем 100 коробков спичек). А регрессия помогает понять как ведет себя оборот за некоторый промежуток. Однако комментарии выше абсолютно верны, корректное построение линейной модели предполагает наличие множества ограничений, которые никак не описаны.
jzha
Вы говорите о «корреляции в ритейле», а группы товаров в ваших линейных моделях для оборота и количества чеков, надо полагать, независимы? Как так?
Кроме того, отрицательный свободный член в линейной регрессии для оборота Универсама намекает, что лучше использовать glm, нет?
Вдобавок, вы даже не указали какой вид корреляции использовали.