Отчет «Прогноз спроса» на нейросетях. Пример применения и оценка эффективности

27.11.18

Учетные задачи - Оптовая торговля

После публикации https://infostart.ru/public/649065/ я получил массу вопросов в комментариях и в личку о том, как конкретно написать отчет или обработку на нейросетях, как это применить на предприятии. Поэтому я решил выложить один из примеров – отчет по прогнозированию спроса в зависимости от различных факторов. Также я сделал оценку эффективности такого прогноза в самом отчете. Надеюсь, это снимет часть вопросов и поможет построить на своём проекте нужную модель прогнозирования. Данные отчеты можно использовать как базу для разработки своих прогнозных моделей. Отчеты тестировались на УПП 1.3.59.1 , УТ11.4.2.144 на платформе 1С 8.3.12.1412

Скачать файлы

Наименование Файл Версия Размер
Отчет "Прогноз спроса" для УПП 1.3, УТ 10.3, КА 1.1
.erf 27,10Kb
70
.erf 27,10Kb 70 Скачать
Отчет «Прогноз спроса» для УТ11, КА2, ERP2:
.erf 38,71Kb
62
.erf 38,71Kb 62 Скачать

Описание задачи

Требуется на основе статистики продаж за 2 года создать модель прогнозирования спроса на месяц в для ключевых и прочих клиентов в разрезе групп товара. Ключевые клиенты берут товар с постоянной ритмичностью. Состав групп однороден по единицам хранения, ценам. Требуется создать модель предсказания спроса в зависимости от уровня скидок/цен, с учетом сезонности и ритмичности. И если есть зависимость уровня спроса от цен и цены скидки на будущий месяц можно менять, то в модели можно будет использовать цены и скидки в качестве параметром прогнозирования. Т.е. рассчитывать например сколько товара возьмет клиент если дать ему скидку 10%, а сколько если дать 5%.

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

Входные и выходные данные

Для обучения/прогноза были выбраны следующие показатели

Входы:

Номер месяца – с этим все просто. Выраженная сезонность спроса. Собственно, если убрать все остальные входы сети и оставить только "номер месяца", то  сеть сделает некую функцию для каждого клиента. Даже  хватит одного нейрона. Это вполне можно использовать на замену обычному планированию которое есть в типовых.  

Цена/скидка. Попытка построить для каждого клиента что-то наподобие «кривой спроса» (https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D1%81%D0%BF%D1%80%D0%BE%D1%81%D0%B0) на основе статистики и использовать для получения прогноза. Т.е. можно поиграться с параметрами - указывать цены в параметрах и на основе модели получать прогноз продаж. По факту оказалось что более правильным было использовать скидку а не цену, но я оставил «средние цены» - может в каком то другом случае это пригодится. Зависимость от скидки оказалась предсказуемая – чем больше скидка тем больше продажи.

Количество за предыдущий месяц – количество товара купленного покупателем за предыдущий месяц

В обработке нет еще одного важного входа – «Промоакции». Я убрал его так как для его получения требуется дописанный документ которого нет в типовых. Документ фиксирует маркетинговые мероприятия.

Выход: количество продаж группы товаров у клиента за месяц

Как это устроено?

На каждого постоянного покупателя и группу товара (или Родителя) создается 3-х или 4-х- слойный перцептрон (остальные покупателя попадают в группу «Прочие клиенты»). Потом он обучается на истории продаж и все эти сети сохраняются в один файл. А потом на основе этого файла-обученной модели можно выполнять прогнозирование, т.е. решение сети. Сами созданные сети между собой никак не созданы. Данная модель не учитывает зависимость между группами (одного товара берут больше за счет другого). Данная модель предполагает полностью обеспеченный запасами спрос.

Работа с отчетом

  1. Выбираются общие настройки – показатель цены, ном группа, количество периодов. Начало месяца за котрый надо получить прогноз (при условии что факт по предшествующему периоду присутствует)
  2. Выбираются постоянные покупатели
  3. Выбираются параметры обучения – количество слоев, количество итераций. При необходимости «2 скрытых слоя». Это подбирается экспериментально. Также можно встретить различные подходы. Например, в этой ветке (https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw) есть  вот такой метод

 

Или вот такой (как видно совсем другой подход) http://mei06.narod.ru/sem7/iis/shpora/page2_9.htm

 

Выбор количества слоев зависит от свойств аппроксимируемой зависимости. Считается что 4-х слойный перцептрон (2 скрытых слоя) теоретически может аппроксимировать любую функцию. С одним скрытым слоем обучение проходит быстрее, но ориентироваться надо конечно на погрешность результата. Я не пишу тут про риски переобучения и другие сложности, так как это тема для отдельной статьи и в интернете их множество.

  1. Нажимается кнопка «Запустить обучение». Оно может быть долгим – до пары часов.
  2. После того как сеть обучена она с прочими параметрами хранится в файле. Это позволяет обращаться к ней и выполнять расчет быстро.
  3. Для получения прогноза нужно указать начало месяца прогноза
  4. Можно установить цены/скидки вручную которые планируется использовать в предстоящем периоде. Или можно поиграться ценами и посмотреть что будет со спросам при разных уровнях скидок.
  5. Сформировать отчет.

 

Проверка эффективности

Для проверки эффективности я оставил пару последних месяцев для того чтобы сравнить расчет с фактом. Т.е. например в ноябре я делал расчет на 1 сентября, чтобы потом сделать прогноз на Сентябрь, а так как сентябрь уже завершился то проверить насколько не сошелся факт с тем что показал прогноз. Для этого я в отчете добавил колонки Факт, Отклонение и Отклонение в %. Получил отклонения как на картинке в пределах 10-15%. Конечно это ни о чем не говорит и для оценки погрешности, мат. ожидания нужно больше наблюдений, но в целом результат приемлем учитываю непредсказуемость нашей экономической обстановки.

нейросети прогноз спроса план продаж

См. также

SALE! 15%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

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

33529 28500 руб.

21.04.2017    89865    105    39    

188

ЕГАИС++. Опт, производство, импорт

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 руб.

15.12.2015    165795    673    361    

385

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

Обмен между базами 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2. Перенос данных находится в продаже с 2015 года, постоянно развивается, им воспользовались уже более 240 компаний. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    190292    268    238    

268

Обмен с системой ЦРПТ (Универсальная конфигурация ХамелеонЦРПТ + маркировка табака, обуви, одежды, лекарств, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин)

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Данная публикация создана для помощи разработчикам, интеграторам и другим заинтересованным лицам по настройке системы маркировки обуви, одежды, лекарств, табака, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин. Смело задавайте нам вопросы по работе с ЦРПТ, GS1, ЭДО, Национальным каталогом, мы накопили достаточно большую базу знаний по данным темам и готовы ответить на все Ваши вопросы.

104000 руб.

18.03.2019    110209    33    114    

177

Простое ценообразование (установка цен номенклатуры) для 1С 8.3 (УТ 11 / ERP 2 / КА 2 / Розница 2) + (УТ 10.3 / УПП / КА 1 / Розница 1)

Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:CRM ПРОФ, КОРП Управленческий учет Платные (руб)

Есть проблемы с расчетом и установкой цен на товары? Универсальная подсистема для ценообразования в 1С поможет навести порядок с ценами! Механизм позволяет задавать произвольные правила расчета колонок цен для разных групп товаров и легко их изменять. Может автоматически (по расписанию) обновлять цены в 1С и выполнять проверку наличия и корректности цен на все товары.

30000 руб.

13.11.2017    77830    40    11    

46

Бонусная система для УТ 10.3

Управление взаимоотношениями с клиентами (CRM) Оптовая торговля Розничная торговля Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 10 1С:Розница 2 Россия Управленческий учет Платные (руб)

Подсистема призвана упростить и автоматизировать процесс расчета и начисления бонусов покупателей. Работает с конфигурациями 1С:УТ 10.3, 1С:Розница. Механизм реализован в начале 2013г. и работает до сих пор с постоянными совершенствованиями.

30000 руб.

02.11.2015    109561    93    87    

181
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nomadon 367 27.11.18 23:31 Сейчас в теме
Воронцов есть такой ученый, вы как-то связаны?)
3. informa1555 2605 28.11.18 06:36 Сейчас в теме
(1) Погуглил. Неа, просто однофамилец.
2. CheBurator 3119 28.11.18 03:03 Сейчас в теме
Хороший материал.
Осталось определиться, что считать "регулярными клиентами".
что значит "берут постоянно"..?
есть клиенты которые берут раз в два-три месяца. есть которые каждый месяц. объемы (в деньгах/тоннах/кубах) - могут и примерно одинаковые. а могут и нет.
.
даст ли что-то если проиграть несколько "сценариев", когда периодж может быт разный - поиграть сетью с "месяцем". поиграть сетью с кварталом..?
4. informa1555 2605 28.11.18 06:59 Сейчас в теме
(2) В моем случае "постоянные клиенты" - это те, которые что то покупают каждый месяц за интервал статистики и даже присутствуют во внутренних фин. отчетах предприятия как предпределенные строки (типа Дебиторская задолженность "АО Тандер" ... и т.д.). Но это ничего не значит. Можно добавлять свои варианты или вообще все засунуть в "Прочие клиенты". Но разбивка по клиентам все же имеет смысл так как для каждого создается сеть в которой рассчитывается модель его потребительского поведения. И общий спрос - как сумма моделей потребления. Такая была идея. С другой стороны всех покупателей подряд рассматривать как постоянных тоже не вариант при таких входных данных, так как могут быть вообще единоразовые покупки. Поэтому критерий, по которому можно отнести покупателей к постоянным - какой то процент периодов когда были покупки к общему числу периодов. Например 80%.

даст ли что-то если проиграть несколько "сценариев", когда периодж может быт разный - поиграть сетью с "месяцем". поиграть сетью с кварталом..?

Тут важно от чего зависят продажи. В моем случае период - это не элемент ряда, а фактор сезонности. Например в декабре перед новым Годом большой спрос (подарки). И если "зарыть" декабрь в 4-й квартал, а планировать все так же на месяц то этот фактор размоется я думаю.
16. user1002645 10.12.18 11:23 Сейчас в теме
(4)Дмитрий, наша компания занимается розничными продажами. Имеем 40 розничных точек. Работаем в 1С комплексная автоматизация. Хотим добавить в 1С внешние обработки по прогнозу спроса на основе нейросетей. Можете проконсультировать возможность такого внедрения в нашем случае и примерную стоимость?
17. informa1555 2605 10.12.18 12:06 Сейчас в теме
5. Hans 2 28.11.18 07:56 Сейчас в теме
Ну и что? Насколько прогноз сбывается?
6. nomadon 367 28.11.18 08:12 Сейчас в теме
(5) коварно в самом конце материала расположилось заключение с ответом на вопрос
Для этого я в отчете добавил колонки Факт, Отклонение и Отклонение в %. Получил отклонения как на картинке в пределах 10-15%.
Созинов; artempo; +2 Ответить
7. Stepa86 1520 28.11.18 10:29 Сейчас в теме
1. Пробовали на этих данных более простые модели? Среднее, наивная (брать такой же месяц годом ранее), аппроксимация, Холта-Винтерса? С использованием сезонности от 1С.
2. Пробовали на этих данных что нить из ML? Фейсбучного пророка https://infostart.ru/public/862671/ , линейную регрессию, бустинг, арима?
3. Кросс-валидация хотя бы на полгода?
4. Игрались с группировками и периодами? Группы без учета клиентов, или прогноз до недель/дней, а затем свертка до месяца
8. informa1555 2605 28.11.18 11:17 Сейчас в теме
(7) 1. Сравнивали с обычным планированием на 1С (типовым) с учетом сезонности c усреднением за аналогичные периоды - результат точнее. По поводу Холта-Винтерса - там же надо каким то образом подбирать параметры. Честно говоря не знаю как это осуществить.
2. У меня задача другая нежели просто прогнозирование временных рядов. Статистические методы типа регрессии(почему обязательно линейной кстати?) тут можно применить только если не применять другие параметры - т.е. не указывать другую скидку например. Тут применение всех этих "статистических" а не "структурных" методов можно использовать как дополнение чтобы учесть влияние тренда, который у меня не учитывается, да.
3. Пока только 2 месяца, 1 и 1 месяц в 3х базах
4.Группы без учета клиентов - можно не указывать клиентов тогда будут все "Прочие клиенты" - разброс больше процентов на 20. До дней не делал.
9. Stepa86 1520 28.11.18 11:33 Сейчас в теме
(8) 1. У Холта-Винтерса параметры перебором подбираются. Для каждого набора запускается кросс-валидация и лучший результат - вот она модель. Я уже не помню по времени, но один ряд на 30 точек так минут 10 подбирался у меня, вроде б.

Вот, кстати, парадокс. Делаем очень крутую штуку, с мощным мат. аппаратом, почти ИИ. А средняя все равно дает результат лучше...

2. Линейная, потому что результат это линейная формула от входных коэффициентов. Чем там больше влияющих на результат признаков - тем лучше. Как раз прогнозирование временного ряда от задачи регрессии и отличается тем, что для прогнозирования есть только дата+целевое значение, а для регрессии куча признаков+целевое значение. Задача прогнозирование может быть сведена к задаче регрессии, наоборот - нет. Где то видел, что бустинг рвет все спец. библиотеки по прогнозированию, ариму и простую линейную регрессию.

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

Именно в качестве прогнозирования у меня сложилась такая картина:
сперва юзаем простейшие методы, типа средней и наивной.
Если точности мало или хотим доп. признаки, или сезонность хитрая - фейсбучный пророк, если нужны графики и понимание или бустинг, если нужен результат, линейную регрессию только для оценки влияния признака на цель можно погонять.
А уже на это сверху можно навешивать полноценное планирование продаж и операций с прогнозом приростов от акций, расчетом загрузки производства, бюджетами и прочими ништяками.
10. informa1555 2605 28.11.18 11:57 Сейчас в теме
(9) нет средняя как раз хуже. Может я неправильно выразился.
И вот как раз в задаче регрессии появляется возможность добавлять доп. признаки
- вы имеете ввиду регрессию с фиктивными переменными? Но там же сдвиг или наклон только. От этого же форма зависимости не поменяется. А есть какой то материал с формулами с примером применения? Ну или вкратце - как добавить параметр?
11. Stepa86 1520 28.11.18 12:14 Сейчас в теме
(10) Нашел вот такое. Как в пророке добавлять свои сезонности, праздники и регрессоры (скидка и цена это как раз регрессор) https://facebook.github.io/prophet/docs/seasonality,_holiday_effects,_and_regressors.html

Пример прогнозирования на пайтоне с помощью линейной регрессии http://nbviewer.jupyter.org/github/Yorko/mlcourse_open/blob/master/jupyter_russian/p­rojects_individual/project_sales_prediction_ad_ilyas.ipynb?flush_cache=true

Пример/сравнение прогнозирования по ARIMA, Facebook Prophet, XGBoost http://nbviewer.jupyter.org/github/Yorko/mlcourse_open/blob/master/jupyter_russian/p­rojects_individual/project_candy_production_prediction_Evgen­iyLatyshev.ipynb?flush_cache=true

Пример, где доп. признаков больше и они важнее, чем даты. Там 5 различных моделей http://nbviewer.jupyter.org/github/Yorko/mlcourse_open/blob/master/jupyter_russian/p­rojects_individual/project_area_bike_share_tbb.ipynb?flush_cache=true
Созинов; Il; ABudnikov; informa1555; +4 Ответить
12. informa1555 2605 28.11.18 12:49 Сейчас в теме
(11) хорошие ссылки. Спасибо!
13. informa1555 2605 28.11.18 13:44 Сейчас в теме
(11) В статьях правда только куски кода с вызовом функций, это не очень помогает понять механику но видно это работает. Но к вопросу почему "нейросети а не стат. методы ?" Думаю могу ответить так: если сравнивать аппроксимацию разными методами больших различий не будет, но это если определена задача и определены влияющие переменные. Т.е. априори мы знаем о задаче эту информацию. Если же есть только гипотезы о влияющих факторах то применение сетей как раз проще - они сами "загасят" ненужные входы и настроят апроксимацию как надо. Т.е. больше универсальность и простота применения.
AlexanderEkb; +1 Ответить
14. Stepa86 1520 28.11.18 14:11 Сейчас в теме
(13) Если хочется исходников, то https://scikit-learn.org/stable/ и там по ссылкам. Там вроде даже где то научные работы есть, что в основе лежат.
15. Азверин 3 29.11.18 11:47 Сейчас в теме
Вы там потом под 1С запилить не забудьте)
товарищ Ын; +1 Ответить
18. утюгчеловек 38 21.01.19 10:53 Сейчас в теме
учитывая непредсказуемость нашей экономической обстановки
полезность любой прогнозной модели стремится к нулю.

Голоса в голове подсказываю что можно было обойтись линейной моделью. Почему нет сравнения с более простой моделью?
Это публикуется как продукт или как proof-of-concept? Т.е. есть ли возможность скачать обработку не за стартмани?
19. informa1555 2605 21.01.19 13:37 Сейчас в теме
(18) Только за стартмани. Это заготовка для доработки напильником. В том смысле что работать в обозначенных конфигурациях она будет, но так как бизнесы разные то входы и параметры модели тоже разные соответственно источники данных возможно потребуется добавить свои.
20. venvlad 25 27.06.19 18:00 Сейчас в теме
Почему количество итераций 10000?
21. informa1555 2605 27.06.19 18:19 Сейчас в теме
(20) С запасом. Это подбирается экспериментально.
22. venvlad 25 28.06.19 11:45 Сейчас в теме
(21)
Долго обрабатывает, в фон вытащу.
23. YA_1130000057973079 25.01.24 08:53 Сейчас в теме
Кто-нибудь смог получить качественный прогноз на нейросетях на реальной базе 1С?
Lacoste4life; +1 Ответить
Оставьте свое сообщение