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

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

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

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

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

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

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

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

Вакансии

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день

Специалист 1 категории (Программист 1С)
Фрязино
зарплата от 110 000 руб.
Полный день

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

Специалист 1 категории (Методист-аналитик 1С)
Фрязино
зарплата от 100 000 руб.
Полный день