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

27.11.18

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Отчет "Прогноз спроса" для УПП 1.3, УТ 10.3, КА 1.1
.erf 27,10Kb
70
70 Скачать (2 SM) Купить за 2 150 руб.
Отчет «Прогноз спроса» для УТ11, КА2, ERP2:
.erf 38,71Kb
64
64 Скачать (2 SM) Купить за 2 150 руб.

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

Требуется на основе статистики продаж за 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! 20%

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

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

8970 7176 руб.

15.12.2015    170787    955    364    

400

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    234069    1062    898    

1003

SALE! 10%

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

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

55778 50200 руб.

24.04.2015    194944    150    243    

280

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

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий (тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

44000 руб.

08.11.2017    122934    292    140    

398

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

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

30000 руб.

02.11.2015    112278    102    87    

185

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

Автоматический обмен данными с системой ФГИС Меркурий из 1С через ВетИС API: загрузка данных по хозяйствующим субъектам, предприятиям; типов, групп, видов, наименований продукции, сопоставление данных и запись их в базу данных; создание на основании расходных документов транспортных партий, отправка на сервер, печать полученных ветеринарных свидетельств, запрос остатков складского журнала, проведение инвентаризаций, оформление производственных партий.

10000 руб.

08.12.2017    104276    236    110    

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

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

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

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

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

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

Именно в качестве прогнозирования у меня сложилась такая картина:
сперва юзаем простейшие методы, типа средней и наивной.
Если точности мало или хотим доп. признаки, или сезонность хитрая - фейсбучный пророк, если нужны графики и понимание или бустинг, если нужен результат, линейную регрессию только для оценки влияния признака на цель можно погонять.
А уже на это сверху можно навешивать полноценное планирование продаж и операций с прогнозом приростов от акций, расчетом загрузки производства, бюджетами и прочими ништяками.
10. informa1555 2715 28.11.18 11:57 Сейчас в теме
(9) нет средняя как раз хуже. Может я неправильно выразился.
И вот как раз в задаче регрессии появляется возможность добавлять доп. признаки
- вы имеете ввиду регрессию с фиктивными переменными? Но там же сдвиг или наклон только. От этого же форма зависимости не поменяется. А есть какой то материал с формулами с примером применения? Ну или вкратце - как добавить параметр?
11. Stepa86 1531 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 2715 28.11.18 12:49 Сейчас в теме
(11) хорошие ссылки. Спасибо!
13. informa1555 2715 28.11.18 13:44 Сейчас в теме
(11) В статьях правда только куски кода с вызовом функций, это не очень помогает понять механику но видно это работает. Но к вопросу почему "нейросети а не стат. методы ?" Думаю могу ответить так: если сравнивать аппроксимацию разными методами больших различий не будет, но это если определена задача и определены влияющие переменные. Т.е. априори мы знаем о задаче эту информацию. Если же есть только гипотезы о влияющих факторах то применение сетей как раз проще - они сами "загасят" ненужные входы и настроят апроксимацию как надо. Т.е. больше универсальность и простота применения.
AlexanderEkb; +1 Ответить
14. Stepa86 1531 28.11.18 14:11 Сейчас в теме
(13) Если хочется исходников, то https://scikit-learn.org/stable/ и там по ссылкам. Там вроде даже где то научные работы есть, что в основе лежат.
15. Азверин 3 29.11.18 11:47 Сейчас в теме
Вы там потом под 1С запилить не забудьте)
товарищ Ын; +1 Ответить
18. утюгчеловек 40 21.01.19 10:53 Сейчас в теме
учитывая непредсказуемость нашей экономической обстановки
полезность любой прогнозной модели стремится к нулю.

Голоса в голове подсказываю что можно было обойтись линейной моделью. Почему нет сравнения с более простой моделью?
Это публикуется как продукт или как proof-of-concept? Т.е. есть ли возможность скачать обработку не за стартмани?
19. informa1555 2715 21.01.19 13:37 Сейчас в теме
(18) Только за стартмани. Это заготовка для доработки напильником. В том смысле что работать в обозначенных конфигурациях она будет, но так как бизнесы разные то входы и параметры модели тоже разные соответственно источники данных возможно потребуется добавить свои.
20. venvlad 25 27.06.19 18:00 Сейчас в теме
Почему количество итераций 10000?
21. informa1555 2715 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 Ответить
Оставьте свое сообщение