0. informa1555 1379 27.11.18 23:29 Сейчас в теме

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

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

Перейти к публикации

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

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

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

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

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

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

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

Голоса в голове подсказываю что можно было обойтись линейной моделью. Почему нет сравнения с более простой моделью?
Это публикуется как продукт или как proof-of-concept? Т.е. есть ли возможность скачать обработку не за стартмани?
19. informa1555 1379 21.01.19 13:37 Сейчас в теме
(18) Только за стартмани. Это заготовка для доработки напильником. В том смысле что работать в обозначенных конфигурациях она будет, но так как бизнесы разные то входы и параметры модели тоже разные соответственно источники данных возможно потребуется добавить свои.
20. venvlad 24 27.06.19 18:00 Сейчас в теме
Почему количество итераций 10000?
21. informa1555 1379 27.06.19 18:19 Сейчас в теме
(20) С запасом. Это подбирается экспериментально.
22. venvlad 24 28.06.19 11:45 Сейчас в теме
(21)
Долго обрабатывает, в фон вытащу.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Специалист внедрения и сопровождения 1С
Москва
зарплата от 80 000 руб.
Полный день

Product Owner (Менеджер по продукту 1С)
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день

Тим лид по разработке 1С (Team Lead 1С)
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству