Как стать автором
Обновить
5
0
Евгений @Mentalitet

Пользователь

Отправить сообщение
Лично я вообще не сторонник технического анализа, потому что он пытается предсказывать рябь на воде, на основе предыдущей ряби на воде. Все предсказания ломаются реальными новостями и реальными экономическими показателями деятельности компаний. Никакой технический анализ не сможет предсказать, что следующая выходящая отчетность будет плохой. А цена акций между тем упадет, не смотря ни на какие осцилляторы, скользящие средние, головы-плечи и так далее. Вы правы, что часто после падений бывает отскок, но не зря появилась поговорка: «Купил одно дно — второе получи в подарок»
Опять таки, суть замечания была не в этом. Вы говорите о предсказании с большим шагом (например, недельные предсказания, которые вы делали во второй части), а я говорю о предсказании на несколько шагов, которое, опять таки, как раз и нужно ретейлерам. В вашем же примере, если у товара срок годности 5 дней, то вам нужен не прогноз на день вперёд или на неделю вперёд, а, вероятнее всего, daily prediction примерно на пять дней.


По видимому я действительно не правильно вас понял.
Насчет нужд по прогнозу на несколько дней вперед — вы совершенно правы.
Однако, это не обнуляет необходимость дневного прогноза — например, если срок годности истекает завтра — послезавтра. В целом, думаю, можно использовать две модели, с таймфреймом пять дней, например, и с моделью на день, предсказывая на день — два вперед (качество предсказания падает на каждый последующий шаг, спору нет). И совмещая их работу каким то образом. Но в любом случае продажи на более долгий срок безусловно полезнее.

Так, может, вам надо было MAPE мерять, а не R^2? Объясните мне, как вы по значению R^2_adj=0.4 сделали вывод о качестве предсказания, если оно практически не интерпретируемо? И даже по MAPE как бы вы делали вывод, если вы не задали себе нужные значения метрик?

image
image
У одной модели R2adj 0,41, у другой 0,77
Угадайте, где какая и на основе какой стоит пытаться рекомендовать цену, а на основе которой нет. В моем понимании задача рекомендации цены требует прогноз на спрос высокой точности, от сюда и выбор наиболее качественной модели. При этом выбор R2adj я уже описывал, в данном случае мне было важнее донести идею, а не сделать все кристально чисто с точки зрения теории.

Про арифметику — я написал скрипт, который по очереди выкидывал переменные (из оставшихся кандидатов) и смотрел как лучше предсказывается. Скрипт сказал — так лучше. Кто я такой, чтобы спорить? :) Может вы знаете из-за чего это может быть?

Я и не говорил про обучение на тестовой части. Я говорил про тюнинг гиперпараметров, который вы, очевидно, делали на тестовой части, потому что отдельной валидационной у вас просто не было. Простите, что кидаю ссылки на видео из курсов по ML, но объяснять самому у меня плохо получается.

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

Вы путаете data leakage и overfitting.

Не путаю, добавил просто из-за того, что не совсем был уверен, что вы имели ввиду в своем комментарии. Но теперь мы с этим разобрались

То, что у вас модель хорошо работает на трейне и отвратительно в продакшене — это симптом оверфита по определению.

Не спорю, однако, это не единственный возможный вариант.
1) Про валидацию уже написал.
2) Основное — выкладка. Лично видел как продажи на калоши выросли одномоментно в 10 раз, потому что выкладку товара поменяли. Такое в модель не заложишь, как минимум, потому что никто изменения выкладки вообще никак не фиксировал в данных, хотя, уверен, это сильно бы помогло.

По поводу списания Основного средства (того же сервера): чтож, вы предлагаете амортизировать сервер, который уже не функционирует ещё последующие пять лет? Это введение в заблуждение главного пользователя отчётности — собственника, говорить что сервер работает и амортизируется, хотя он умер два года назад.
Вы путаете списать в расходы (через амортизацию) и списать с баланса, из за потери технико экономических свойств, разово призная в отчётности убыток.
Если его затопило, то составляется акт о причинённом ущербе в котором говорится, что сервер больше не пригоден для эксплуатации и он списывается с баланса. В отчёте о прибылях и убытках при этом признаётся в прочих доходах/расходах убыток от его списания.
Никаких супер пупер экспертиз для этого не нужно :)

Ничто не мешает юридическому лицу заключить договор займа. Например, популярно по договорам займа внутри группы компаний деньги перегонять.

Совершенно с вами согласен, проблема всего моделирования каких бы то ни было процессов то, что прошлое не всегда определяет будущее и на финансовых рынках мы видим это постоянно. Как аудитор по профессии я вам это тоже могу сказать, когда видишь реальные процессы в фирме до выпуска отчетности в свет, смотря на комментарии в сети и ожидания людей купивших / продавших бумаги становится понятно, что зачастую происходит как в меме «ожидание — реальность», только еще и с грустными последствиями
Постараюсь ответить на все обстоятельно:
Главная проблема этой работы в том, что когда вы создавали модель, вы работали с одним конкретным рядом. Затюнить модель так, чтобы она более-менее хорошо предсказывала спрос на один товар, можно. Но на практике ретейлеру обычно нужно предсказывать спрос сразу на все товары, а вот тут сложные модели типа бустингов и сетей становится куда сложнее настраивать, а также появляется необходимость в более сложном feature engineering (например, нельзя сделать dummy-переменные под конкретные акции, потому что у каждого товара может быть свой набор скидок в разные моменты времени, которые комбинируются произвольным образом, и приходится из этих данных строить какие-то новые, более общие фичи). Кроме того, редко ретейлеру реально нужно предсказывать спрос на день вперёд для менеджмента закупок, да и для оптимизации цен это, наверное, не вполне корректно. Поэтому я, честно говоря, сомневаюсь в том, насколько построенная модель способна принести пользу заказчику в реальной жизни (помимо того, что она в целом демонстрирует практическую жизнеспособность работы с price elasticity с помощью ML-алгоритмов).

На сколько показывает мой опыт, который также описан в статье, все ровно да наоборот:
Тяжело предсказывать спрос на отдельно взятый товар, гораздо легче на спрос по группе товаров или даже по сети в целом (в моем случае я описал предсказание дневного количества чеков по всей сети с высоким уровнем точности, данные можно посмотреть в статье). Я пробовал предсказывать спрос как в штуках, так и по сумме продаж по группам товаров и все выходило гораздо лучше, чем по индивидуальному товару, как на уровне дней, так и на более продолжительных масштабах времени (дальше месяца не смотрел потому что данных мало). Поэтом я сходу и в цепился в дневные продажи, пытаясь провалиться на самый минимально возможный таймфрейм (чего делать оказалось не нужно). Насчет дневных продаж не соглашусь, потому что, во первых, существуют продуктовые ретейлеры, у которых продаются товарыс ограниченным сроком использования (например, 5 дней) и предсказать, продадим мы остатки товаров с подходящим к концу сроком использования или нет, очень может быть кстати. Другое дело что для товаров для дома это не актуально и менять цены каждый день по всем тысячам номенклатур еще и очень накладно окажется. Однако динамическое ценообразование оно на то и динамическое, что хоть когда-то но цены менять надо :)
Почему вы считаете, что так корректно делать? Деревянные модели работают с признаками совсем не так, как сети. Фичи, которые бустингу показались полезными, могут не взлететь в сети, и наоборот. И уж точно фичи, подаваемые на вход бустингу, надо обрабатывать совсем не так, как фичи, подаваемые на вход сети.

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

Здесь я исходил из того, что для того, чтобы изменять цену перед эти предсказывая спрос, делать это надо достаточно точно. Потому что предсказание +-50% (например) от факта продаж сводит на нет всю адекватность системы установления цены соразмерно ожидаемому спросу. Если систематически ошибаться в предсказании и достаточно сильно, то какой смысл в таких рекомендациях? Поэтому, я не говорю, что само по себе значение 0.4 плохо, я говорю лишь о том, что оно не достаточно.
Если вы делали это, валидируясь на той же части датасета, которую вы называете тестовой (а судя по графикам и коду, вы это делали), поздравляю — вы оверфитнулись.

Не знаю, с чего вы это взяли, графики построены, включая всю историю для визуального восприятия информации. Обучение происходило на тренировочной части, затем обученная модель предсказывала спрос на тестовой выборке. После этого обучения никакого не происходило.
По нескольким строчкам кода судить о чем то не совсем корректно (вы же не знаете что там в неопубликованной части кода).

• Соотношение цены за килограмм исследуемого товара и грунтовки CERESIT СТ 17 10 л.;
• Соотношение цены исследуемого товара и товара и грунтовки CERESIT СТ 17 10 л;
Разве вторая фича не получается из первой линейным преобразованием?

Первое:
(Цена исследуемого товара / литры в упаковке этого товара) / (Цена «CERESIT СТ 17» / 10 литров)
Второе:
Цена исследуемого товара / цена грунтовки «CERESIT СТ 17»

Эти два фактора несут разную информацию, потому что в исследуемом товаре 5л, а в «CERESIT СТ 17» – 10 литров

С одной стороны, сигмоида на конце — это удобно. С другой стороны, таким образом вы практически лишаете модель возможности экстраполировать, что довольно важно для построения кривой эластичности, не так ли?


С этим сложно спорить, но не ошибается тот, кто ничего не делает)

Позволю себе не согласиться. Если сравнить даже 2016 и 2015 годы, можно увидеть огромный естественный прирост (очевидно, связанный с тем, что ретейлер работает в плюс и расширяется), так что ваш эксперимент абсолютно не показателен и, вполне вероятно, мог не принести повышения прибыли (во всяком случае, ваши данные этого не подтверждают).
Кроме того, то, насколько сильно ваша модель ошибалась в предсказаниях (намного сильнее, чем на тестовой части датасета), ещё раз свидетельствует о том, о чём я писал выше — настраивая параметры под тестовую часть, вы сильно заоверфитились.

Какой именно прирост вы увидели (в деньгах, в штуках?)
Я вижу лишь прирост в штуках незначительный, +8% и +13%, который вполне можно списать на случайные колебания (все таки применения модели длилось 4 недели, а не год) и если вы посмотрите график продаж с 2015 в статье, то увидите, что никакого повышения продаж в штуках нет и более того, есть тенденция снижения продаж в целом (это уже со слов маркетолога). Реальный же прирост по выручке и прибыли за время применения модели объясняется только одним фактором: повышение цены. Насчет того стоит ли слепо верить таким вещам и повышать цены без оглядки на что либо я тоже написал – повышение цены пройдет на краткосрочном периоде, но долгосрочно фирма проиграет и тут при оптимизации цен надо вводить уже оптимизацию «сквозь периоды».
Насчет промаха в предсказании спроса: про оверфит я уже ответил, что ни заглядывания в будущее, ни обучения на тестовой выборке не было. Тем не менее, промах в предсказании – неприложный факт. Я думаю, тут сыграло свою роль два фактора как минимум (недостаточно качественная модель это по умолчанию) 1) Сильные выбросы в отдельные недели по продажам, которые не удалось достаточно хорошо предсказывать, 2) То, что магазин поменял выкладку по товару, на котором проводился тест модели. Про это я, действительно, забыл упомянуть в статье (добавлю в статью чуть позже)

В целом, вроде и хороший пример использования ML в бизнесе, но при этом недочётов столько, что результаты вызывают огромное сомнение.


Почувствовал себя вновь как на защите :) Вопросы конструктивные, спасибо за проявленный интерес!
2

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность

Специализация

Data Scientist, ML Engineer
Lead
OOP
Git
Python
English
SQL
Docker
Fastapi