Продолжение про скидки
Если вы тоже любите ML и персонализацию, то наверняка задумывались про персонализацию скидок = оптимальный размер скидки для каждого клиента
Глобально есть 3 варианта это сделать:
- Классические прогноз churn + даем скидку тем, кто наиболее вероятно уйдет
- Uplift
- Контекстуальные многорукие бандиты + RL
На конференциях вы скорее всего услышите про успехи Uplift и бандитов. Сегодня я расскажу про то, почему они в моей практике не заводились, и почему старый-добрый churn все еще весьма хорош
Uplift
- Для построения модели аплифта нужна рассылка скидок со случайным размером номинала. Это дорого!
- Нужно регулярно такую рассылку повторять - иначе данные устаревают
- Если у вас вводится новый тип оффера, то случайную рассылку придется повторить
В целом, история с рассылками может быть и технически сложной (разослать, проверить что все долшло, аггрегировать дланные), долгой и дорогой
Также крайне проблематично интерпретировать uplift бизнесу и тем более построить дашборды для бизнеса по uplift модели
Бандиты и RL
- Для персонализации нужны как минимум контекстуальные бандиты. Придется здорово постараться, чтобы они начали сходиться к оптимуму за разумное число итераций. Нужно будет применить много трюков, чтобы оно в принципе работало
- Сложно конструировать долгосрочный reward
- Сложно построить дашборды поверх и отвечать на вопросы "Почему мы даем этому человеку такую скидку?"
Churn
- Крайне прост. Уже знаком бизнесу = можно легко интерпретировать, строить дашборды. Любому человеку в компании понятно верхнеуровнево, что это за модель и зачем она нужна
- Явно влияет на долгосрочные метрики (снижает churn)
- Относительно легко считать юнит экономику модели
- Есть накопленный опыт ml-сообщества с best practices
В общем, я бы предложил вам начать оптимизацию маркетинга точно с модели churn. А уже потом 7 раз подумать, стоит ли внедрять uplift/бандитов/rl 😉
#marketing@ml4value
Если вы тоже любите ML и персонализацию, то наверняка задумывались про персонализацию скидок = оптимальный размер скидки для каждого клиента
Глобально есть 3 варианта это сделать:
- Классические прогноз churn + даем скидку тем, кто наиболее вероятно уйдет
- Uplift
- Контекстуальные многорукие бандиты + RL
На конференциях вы скорее всего услышите про успехи Uplift и бандитов. Сегодня я расскажу про то, почему они в моей практике не заводились, и почему старый-добрый churn все еще весьма хорош
Uplift
- Для построения модели аплифта нужна рассылка скидок со случайным размером номинала. Это дорого!
- Нужно регулярно такую рассылку повторять - иначе данные устаревают
- Если у вас вводится новый тип оффера, то случайную рассылку придется повторить
В целом, история с рассылками может быть и технически сложной (разослать, проверить что все долшло, аггрегировать дланные), долгой и дорогой
Также крайне проблематично интерпретировать uplift бизнесу и тем более построить дашборды для бизнеса по uplift модели
Бандиты и RL
- Для персонализации нужны как минимум контекстуальные бандиты. Придется здорово постараться, чтобы они начали сходиться к оптимуму за разумное число итераций. Нужно будет применить много трюков, чтобы оно в принципе работало
- Сложно конструировать долгосрочный reward
- Сложно построить дашборды поверх и отвечать на вопросы "Почему мы даем этому человеку такую скидку?"
Churn
- Крайне прост. Уже знаком бизнесу = можно легко интерпретировать, строить дашборды. Любому человеку в компании понятно верхнеуровнево, что это за модель и зачем она нужна
- Явно влияет на долгосрочные метрики (снижает churn)
- Относительно легко считать юнит экономику модели
- Есть накопленный опыт ml-сообщества с best practices
В общем, я бы предложил вам начать оптимизацию маркетинга точно с модели churn. А уже потом 7 раз подумать, стоит ли внедрять uplift/бандитов/rl 😉
#marketing@ml4value
YouTube
Лекция 9 Case Study: Прогнозирование оттока пользователей
Группа ВК: https://vk.com/data_mining_in_action
Репозиторий курса на гитхабе: https://github.com/vkantor/MIPT_Data_Mining_In_Action_2016
Репозиторий курса на гитхабе: https://github.com/vkantor/MIPT_Data_Mining_In_Action_2016
👍21🔥7
ML helicopter view
Есть такое интересное выражение "helicopter view" - взгляд сверху, чтобы понять, а что вообще нужно делать в вашей ситуации
Кажется, в ML не хватает helicopter view. Сегодня попробую рассказать на примере, зачем это нужно и как работает
Ситуация
У вас есть модель, которая рекомендует пользователю товары в продуктовом магазине. Пользователи жалуются, что им "нерелевантно"
Что делают обычно
Тюнят модель, улучшают ml- метрики и запускают А/В
Helicopter view
А что вообще нужно пользователям? Так ли плохо, что части из них рекомендации "нерелевантны"?
Возможно, "релевантно" для пользователя - рекомендовать товары, которые он уже покупал. Тогда вы можете безо всякого ML сделать категорию "Вы покупали". А ML-ем рекомендовать что-то новое
Иногда "нерелевентность" - не так уж и плохо. Допустим, вы хотите повышать маржинальность бизнеса и продавать товары собственной торговой марки (СТМ), потому что у них выше маржа. Даже если они релевантны 15% пользователей (высокая вероятность заказа), то продвигать их в рекомендациях может быть все еще выгодно с точки зрения ожидаемой прибыли = вероятность заказа * прибыль
Так что иногда бывает полезно применять ML helicopter view 🚁
Есть такое интересное выражение "helicopter view" - взгляд сверху, чтобы понять, а что вообще нужно делать в вашей ситуации
Кажется, в ML не хватает helicopter view. Сегодня попробую рассказать на примере, зачем это нужно и как работает
Ситуация
У вас есть модель, которая рекомендует пользователю товары в продуктовом магазине. Пользователи жалуются, что им "нерелевантно"
Что делают обычно
Тюнят модель, улучшают ml- метрики и запускают А/В
Helicopter view
А что вообще нужно пользователям? Так ли плохо, что части из них рекомендации "нерелевантны"?
Возможно, "релевантно" для пользователя - рекомендовать товары, которые он уже покупал. Тогда вы можете безо всякого ML сделать категорию "Вы покупали". А ML-ем рекомендовать что-то новое
Иногда "нерелевентность" - не так уж и плохо. Допустим, вы хотите повышать маржинальность бизнеса и продавать товары собственной торговой марки (СТМ), потому что у них выше маржа. Даже если они релевантны 15% пользователей (высокая вероятность заказа), то продвигать их в рекомендациях может быть все еще выгодно с точки зрения ожидаемой прибыли = вероятность заказа * прибыль
Так что иногда бывает полезно применять ML helicopter view 🚁
👍29🔥6❤3🤔2
Вдруг осознал, что не написал ни строчки кода за 2 мес в роли хэда клиентской аналитики 😅
Мне всегда было интересно, чем же, если не кодом, занимаются такие люди, и вот чем:
1. Формулируют цели
Точнее, разделают верхнеуровневые цели компании на OKR команд и крупные фичи
Путь от "увеличить выручку компании на Х" до условно "сделать садджесты в поиске, чтобы повысить конверсию поиска на Y%", как оказалось, очень непрост, но интересен 🔎
2. Сетапят новые проекты
Никогда раньше мне не приходилось питчить и защищать столько идей
Узнал про такие штуки как amazon 6-pager, пресс-релиз идеи и другое
3. Строят процессы
Да-да, это я тот человек, который ставит стендапы, регулярный встречи по проектам и т.п. 😅
А еще помогаю найти лидеров в проектах, общаюсь со смежными отделами, получаю бюджеты и делаю прочие "неплпулярные" активности
4. Еще 1000 и 1 дело
Но об этом уже будет скучновато рассказывать)
------------
P.S. Мне все же хочется повышать уровень кода и ML, поэтому буду очень благодарен, если вы сможете мне в комментариях посоветовать годный курс по трансформерам в nlp/recsys на торче) Чтобы прям advanced, с кодом и домашками!
Мне всегда было интересно, чем же, если не кодом, занимаются такие люди, и вот чем:
1. Формулируют цели
Точнее, разделают верхнеуровневые цели компании на OKR команд и крупные фичи
Путь от "увеличить выручку компании на Х" до условно "сделать садджесты в поиске, чтобы повысить конверсию поиска на Y%", как оказалось, очень непрост, но интересен 🔎
2. Сетапят новые проекты
Никогда раньше мне не приходилось питчить и защищать столько идей
Узнал про такие штуки как amazon 6-pager, пресс-релиз идеи и другое
3. Строят процессы
Да-да, это я тот человек, который ставит стендапы, регулярный встречи по проектам и т.п. 😅
А еще помогаю найти лидеров в проектах, общаюсь со смежными отделами, получаю бюджеты и делаю прочие "неплпулярные" активности
4. Еще 1000 и 1 дело
Но об этом уже будет скучновато рассказывать)
------------
P.S. Мне все же хочется повышать уровень кода и ML, поэтому буду очень благодарен, если вы сможете мне в комментариях посоветовать годный курс по трансформерам в nlp/recsys на торче) Чтобы прям advanced, с кодом и домашками!
👍16🔥5👎2😱2
Зачем учить менеджеров и разработчиков аналитике?
Даным-давно на ранних этапах развития компании существовали 2 занятных метода провеления экспериментов: "метод ступеньки" и "города-близнецы"
Как вы могли догадаться, это сравнение неделя-к-неделе и город-к-городу. Если планомерно не обучать бизнес аналитической культуре, то все будут придумывать такие эксперименты 🙃
Как это исправить?
1. Провести единое обучение для всех менеджеров. Желательно позвать туда всех, вплоть до директоров. И предварительно до этого пообщаться с директорами про культуру экспериментов в их отделе
2. Онбординг бот для новичков. Пишет про АВ в их первый день. Просто, эффективно, надежно
3. Приходить на все запуски фичей и рассказывать, почему конкретно для этой фичи А/В тоже важен
Спойлер: это поначалу крайне сложно. Но настрйчивость и последовательность вам помогут. Раньше мы приходили под каждый пост с запуском фичи без А/В и просвещали людей. За это и стикер 🚨 нас даже прозвали А/В police
Даным-давно на ранних этапах развития компании существовали 2 занятных метода провеления экспериментов: "метод ступеньки" и "города-близнецы"
Как вы могли догадаться, это сравнение неделя-к-неделе и город-к-городу. Если планомерно не обучать бизнес аналитической культуре, то все будут придумывать такие эксперименты 🙃
Как это исправить?
1. Провести единое обучение для всех менеджеров. Желательно позвать туда всех, вплоть до директоров. И предварительно до этого пообщаться с директорами про культуру экспериментов в их отделе
2. Онбординг бот для новичков. Пишет про АВ в их первый день. Просто, эффективно, надежно
3. Приходить на все запуски фичей и рассказывать, почему конкретно для этой фичи А/В тоже важен
Спойлер: это поначалу крайне сложно. Но настрйчивость и последовательность вам помогут. Раньше мы приходили под каждый пост с запуском фичи без А/В и просвещали людей. За это и стикер 🚨 нас даже прозвали А/В police
🔥10👍2
АВ police существует до сих пор
Первые члены АВ police - @ermolova и я - недоумевают, как можно запускать фичи без А/В
Первые члены АВ police - @ermolova и я - недоумевают, как можно запускать фичи без А/В
🔥9😁5👍3
ML explainability & rude errors
Зачитался серией постов про обьяснимость ML-моделей. На мой взгляд, со стороны бизнеса чаще всего она нужна, чтобы не допускать грубых ошибок: путать класс "человек" и "обезьяна", отрицательный прогноз продаж, рекомендации алкоголя (запрещено законом) и тп
Поэтому часто обсудить с бизнесом, что такое "грубая ошибка" и учесть это в лоссе или ML-метрике становится очень хорошей идеей 😉
Вроде бы очень простая идея, но я крайне редко видел, чтобы ее применяли на практике
Зачитался серией постов про обьяснимость ML-моделей. На мой взгляд, со стороны бизнеса чаще всего она нужна, чтобы не допускать грубых ошибок: путать класс "человек" и "обезьяна", отрицательный прогноз продаж, рекомендации алкоголя (запрещено законом) и тп
Поэтому часто обсудить с бизнесом, что такое "грубая ошибка" и учесть это в лоссе или ML-метрике становится очень хорошей идеей 😉
Вроде бы очень простая идея, но я крайне редко видел, чтобы ее применяли на практике
🤔1
Forwarded from Reliable ML
Интерпретируемость ML моделей для конечного пользователя: где нужна на практике и что делать
Где нужна на практике
Мы недавно рассмотрели ключевых пользователей интерпретации ML-моделей и различия в их потребностях в интерпретации.
На практике - и в рамках концепции Reliable ML - ключевой целью работы над моделью является ее итоговое применение в бизнес-процессах и финансовая польза от этого применения. Следовательно, ключевыми целями интерпретации являются цели бизнес-заказчика (финансовая польза) и пользователя ML-решения (корректное применение в бизнес-процессе).
При этом чаще всего и бизнес-заказчик и пользователь ML-решения формулируют требования и участвуют в приемке решения совместно, поэтому для простоты в некоторой литературе их называют конечными пользователями модели.
В каких блоках цикла управления продуктом продвинутой аналитики интерпретируемость моделей машинного обучения для конечного пользователя вашей модели становится важной? Поделимся своим видением.
В отдельных случаях критично думать об интерпретируемости уже на этапе разработки MVP. Особенно, когда нужно «продать» ваше решение конечному пользователю, или при очень высокой цене ошибки, когда без интерпретируемости моделей бизнес не готов идти даже на проведение пилота.
Но наиболее важное значение интерпретируемость имеет на этапах внедрения решения и мониторинга модельного риска. То есть, понятность модели конечным пользователям приобретает критическое значение именно тогда, когда модель доказала свою эффективность по итогам пилотного эксперимента и было принято решение о ролл-ауте (масштабировании модели на все целевые объекты).
Что именно становится важным?
- Доверие к результату. Принятие решений моделью должно быть понятно бизнесу как в целом (global interpretation), так и на отдельных примерах (local interpretation).
В случае низкого доверия к работе модели и к её логике принятия решений (модель позиционируется или воспринимается как черный ящик) сильно возрастают трудности с интеграцией модели в бизнес-процесс и обучением конечных пользователей ее использованию. Попросту говоря, моделью не хотят пользоваться, нарушают рекомендации, а если что-то идет не так, то виновата всегда модель. Особенно, если решение о ее ролл-ауте в итоге было принято сверху.
И наоборот, высокое доверие к модели способствует ее корректному применению и эффективной и быстрой интеграции в бизнес-процессы.
- Применимость модели в реальных условиях. Реальные условия, в которых работает модель, всегда так или иначе отличаются от тех, на которых она строилась. Кажется, что это уже ни для кого не секрет на фоне большого числа форс-мажорных событий последних лет.
Понятность модели конечному пользователю в продуктиве – как модель пришла к конкретному результату (данные, факторы, логика работы, итоговый прогноз/рекомендация) – снижает риск некорректного применения модели на новых данных, при сложных кейсах, в меняющейся среде. В случае аномального поведения модели человек, которому понятна модель, с большей вероятностью исправит или предотвратит неправильное решение. Митигации риска аномального поведения модели с технической стороны также очень помогают системы мониторинга модельного риска. О них мы поговорим в отдельных постах.
- Информативность для бизнес-процесса. Конечному пользователю должно быть понятно, что делать при виде результата работы модели. Именно это называют информативностью. То есть, для работы в боевых условиях чаще всего критически важно, чтобы результат работы был не просто красивыми сведениями, а содержал конкретную рекомендацию к действию (push to action).
#interpretable_ml #business
Где нужна на практике
Мы недавно рассмотрели ключевых пользователей интерпретации ML-моделей и различия в их потребностях в интерпретации.
На практике - и в рамках концепции Reliable ML - ключевой целью работы над моделью является ее итоговое применение в бизнес-процессах и финансовая польза от этого применения. Следовательно, ключевыми целями интерпретации являются цели бизнес-заказчика (финансовая польза) и пользователя ML-решения (корректное применение в бизнес-процессе).
При этом чаще всего и бизнес-заказчик и пользователь ML-решения формулируют требования и участвуют в приемке решения совместно, поэтому для простоты в некоторой литературе их называют конечными пользователями модели.
В каких блоках цикла управления продуктом продвинутой аналитики интерпретируемость моделей машинного обучения для конечного пользователя вашей модели становится важной? Поделимся своим видением.
В отдельных случаях критично думать об интерпретируемости уже на этапе разработки MVP. Особенно, когда нужно «продать» ваше решение конечному пользователю, или при очень высокой цене ошибки, когда без интерпретируемости моделей бизнес не готов идти даже на проведение пилота.
Но наиболее важное значение интерпретируемость имеет на этапах внедрения решения и мониторинга модельного риска. То есть, понятность модели конечным пользователям приобретает критическое значение именно тогда, когда модель доказала свою эффективность по итогам пилотного эксперимента и было принято решение о ролл-ауте (масштабировании модели на все целевые объекты).
Что именно становится важным?
- Доверие к результату. Принятие решений моделью должно быть понятно бизнесу как в целом (global interpretation), так и на отдельных примерах (local interpretation).
В случае низкого доверия к работе модели и к её логике принятия решений (модель позиционируется или воспринимается как черный ящик) сильно возрастают трудности с интеграцией модели в бизнес-процесс и обучением конечных пользователей ее использованию. Попросту говоря, моделью не хотят пользоваться, нарушают рекомендации, а если что-то идет не так, то виновата всегда модель. Особенно, если решение о ее ролл-ауте в итоге было принято сверху.
И наоборот, высокое доверие к модели способствует ее корректному применению и эффективной и быстрой интеграции в бизнес-процессы.
- Применимость модели в реальных условиях. Реальные условия, в которых работает модель, всегда так или иначе отличаются от тех, на которых она строилась. Кажется, что это уже ни для кого не секрет на фоне большого числа форс-мажорных событий последних лет.
Понятность модели конечному пользователю в продуктиве – как модель пришла к конкретному результату (данные, факторы, логика работы, итоговый прогноз/рекомендация) – снижает риск некорректного применения модели на новых данных, при сложных кейсах, в меняющейся среде. В случае аномального поведения модели человек, которому понятна модель, с большей вероятностью исправит или предотвратит неправильное решение. Митигации риска аномального поведения модели с технической стороны также очень помогают системы мониторинга модельного риска. О них мы поговорим в отдельных постах.
- Информативность для бизнес-процесса. Конечному пользователю должно быть понятно, что делать при виде результата работы модели. Именно это называют информативностью. То есть, для работы в боевых условиях чаще всего критически важно, чтобы результат работы был не просто красивыми сведениями, а содержал конкретную рекомендацию к действию (push to action).
#interpretable_ml #business
👍4❤1
Lessons learned
Наткнулся на отличную статью от Андрея Лукьяненко про опыт, полученный за 10 лет в DS. Подписываюсь под каждым пунктом!
Что из неочевидного хочу добавить от себя
1. Ваш руководитель / старший товарищ - это ваш "ресурс"
Я глобально верю в идею TLaaS - Team Lead as a Service. TL очень заинтересован в вашем росте, поэтому если у вас есть блокеры (инфраструктура, непонятные требования etc), то вы можете "использовать" TL как ваш ресурс)
2. Вы лучше всех в компании разбираетесь в своей области
В конкретном юпитер ноутбуке, задаче или области вы разбираетесь лучше, чем ваш старший товарищ, тим лид или CEO/CTO. Вы - эксперт) И скорее всего именно вы знаете как лучше - предлагайте свои идеи!
3. Ошибаться - нормально. Ненормально не учиться на своих ошибках
Однажды я чуть не выкатил в прод рекомендательный блок с обратным порядком сортировки товаров. Просто забыл указать
df.s
Наткнулся на отличную статью от Андрея Лукьяненко про опыт, полученный за 10 лет в DS. Подписываюсь под каждым пунктом!
Что из неочевидного хочу добавить от себя
1. Ваш руководитель / старший товарищ - это ваш "ресурс"
Я глобально верю в идею TLaaS - Team Lead as a Service. TL очень заинтересован в вашем росте, поэтому если у вас есть блокеры (инфраструктура, непонятные требования etc), то вы можете "использовать" TL как ваш ресурс)
2. Вы лучше всех в компании разбираетесь в своей области
В конкретном юпитер ноутбуке, задаче или области вы разбираетесь лучше, чем ваш старший товарищ, тим лид или CEO/CTO. Вы - эксперт) И скорее всего именно вы знаете как лучше - предлагайте свои идеи!
3. Ошибаться - нормально. Ненормально не учиться на своих ошибках
Однажды я чуть не выкатил в прод рекомендательный блок с обратным порядком сортировки товаров. Просто забыл указать
df.s
ort_values(ascending=False)
Но из этого кейса у меня родился неплохой подход по автотестам для рек систем. И с тех пор эта ошибка не повторялась (но конечно бывали другие 🙃)🔥30👍10
Сегодня пост про soft-навыки
Есть у меня странное хобби: я собираю истории провалов ML проектов 😱
В историях успеха на конференциях вы чаще всего слышите про новые архитектуры нейронок, хитрые аналитические приемы и все то, что называется hard skills. Но в извечтных мне историях провалов чаще говорят про soft: не обсудили до конца финальный ml-результат, поехали сроки на полгода, отлично решили не ту задачу - и это еще не полный список 😉
Недавно видел общедоступную историю не успеха в канале "Нескучный data sceince" https://news.1rj.ru/str/not_boring_ds
В общем, кейс довольно сильно совпадает с моим опытом. Действительно, стоит заранее убедиться, что:
- бизнес понимает, зачем ему нужна модель
- как ее применять
- какой бизнес-эффект
Помимо этого я бы добавил от себя:
- определены промежуточные и финальный дедлайн, есть роудмап
- проговорили зависимости с соседними командами
- есть человек, который ведет роудмап. Обычно это проджект, но если его нет - то найдите кого-то, кт оисполнит его роль
Всем успешных ML-проектов!)
Есть у меня странное хобби: я собираю истории провалов ML проектов 😱
В историях успеха на конференциях вы чаще всего слышите про новые архитектуры нейронок, хитрые аналитические приемы и все то, что называется hard skills. Но в извечтных мне историях провалов чаще говорят про soft: не обсудили до конца финальный ml-результат, поехали сроки на полгода, отлично решили не ту задачу - и это еще не полный список 😉
Недавно видел общедоступную историю не успеха в канале "Нескучный data sceince" https://news.1rj.ru/str/not_boring_ds
В общем, кейс довольно сильно совпадает с моим опытом. Действительно, стоит заранее убедиться, что:
- бизнес понимает, зачем ему нужна модель
- как ее применять
- какой бизнес-эффект
Помимо этого я бы добавил от себя:
- определены промежуточные и финальный дедлайн, есть роудмап
- проговорили зависимости с соседними командами
- есть человек, который ведет роудмап. Обычно это проджект, но если его нет - то найдите кого-то, кт оисполнит его роль
Всем успешных ML-проектов!)
Telegram
Нескучный Data Science
Все DSы в моей команде начинают решение задачи с изучения бизнес-процесса, подобно тому, как физик изучает природу. Чтение документации, глубинное интервью с участниками процесса, наблюдение за процессом и даже участие — это не полный список инструментов…
👍16🔥1
Как тестировать рекомендательные системы
Под одним из прошлых постов было много вопросов о тестировании рек систем: как не выкатить на прод рекомендации в обратном порядке, например)
Я на практике использовал такие тесты:
1. Полнота данных
70% ошибок максимально глупые: упала база и не залились данные. Сменился год с 21 на 22 и у вас полетела часть запросов
Решается обычным assert-ом на кол-во строк, уникальных дат/юзеров/товаров
2. Качество фичей
Есть тысяча статей про distribution shift, детекцию выбросов и т.д., но обычно проблемы куда проще. Использовать np.mean вместо np.nanmean и получить 90% NaN в фиче? Иметь средние чеки в 1млрд руб, хотя реальные чеки до 5-10к? Вот с чем стоит побороться в первую очередь!
Решается также обычным assert-ом
3. ML и бизнес метрики
Assert-ы на ml метрики на тестовой выборке. Если позволяет инфра, то каждое переобучение модели сопровождать мини-АВ
4. Бизнес-адекватность
У 70% пользователей в топе рекомендаций рестораны с рейтингом < 3.0? Популярные товары не в топе? Тоже стоит с этим побороться
Лучше классическими автотестами на real-time / батчевых запросах к модели
Обычно хватает ~1к запросов и базовой логики с теми же assert-ами
5. Смотреть глазами
Никто не любит это делать, но потратьте 3 минуты своего времени и посмотрите рекомендации модели для себя и своего соседа на адекватность перед выкаткой. Это спасет вам много времени и денег 😅
#recsys
Под одним из прошлых постов было много вопросов о тестировании рек систем: как не выкатить на прод рекомендации в обратном порядке, например)
Я на практике использовал такие тесты:
1. Полнота данных
70% ошибок максимально глупые: упала база и не залились данные. Сменился год с 21 на 22 и у вас полетела часть запросов
Решается обычным assert-ом на кол-во строк, уникальных дат/юзеров/товаров
2. Качество фичей
Есть тысяча статей про distribution shift, детекцию выбросов и т.д., но обычно проблемы куда проще. Использовать np.mean вместо np.nanmean и получить 90% NaN в фиче? Иметь средние чеки в 1млрд руб, хотя реальные чеки до 5-10к? Вот с чем стоит побороться в первую очередь!
Решается также обычным assert-ом
3. ML и бизнес метрики
Assert-ы на ml метрики на тестовой выборке. Если позволяет инфра, то каждое переобучение модели сопровождать мини-АВ
4. Бизнес-адекватность
У 70% пользователей в топе рекомендаций рестораны с рейтингом < 3.0? Популярные товары не в топе? Тоже стоит с этим побороться
Лучше классическими автотестами на real-time / батчевых запросах к модели
Обычно хватает ~1к запросов и базовой логики с теми же assert-ами
5. Смотреть глазами
Никто не любит это делать, но потратьте 3 минуты своего времени и посмотрите рекомендации модели для себя и своего соседа на адекватность перед выкаткой. Это спасет вам много времени и денег 😅
#recsys
Telegram
ML for Value
Lessons learned
Наткнулся на отличную статью от Андрея Лукьяненко про опыт, полученный за 10 лет в DS. Подписываюсь под каждым пунктом!
Что из неочевидного хочу добавить от себя
1. Ваш руководитель / старший товарищ - это ваш "ресурс"
Я глобально верю…
Наткнулся на отличную статью от Андрея Лукьяненко про опыт, полученный за 10 лет в DS. Подписываюсь под каждым пунктом!
Что из неочевидного хочу добавить от себя
1. Ваш руководитель / старший товарищ - это ваш "ресурс"
Я глобально верю…
🔥27👍8❤1
Сколько денег приносит платфома А/В тестирования?
Наткнулся на неплохую бизнесовую статью об этом от Glowbyte. Там описаны 3 источника выгоды от АВ платформы:
1. Снижение трудозатрат аналитиков
2. Возможность тестить больше гипотез
3. Рост доверия к алгоритму принятия решений
В целом, согласен) Я бы сюда еще добавил:
4. Можем понять, что фича/проект не успешны и откатить их
Вы даже не представляете, сколько только на моем опыте было скидок, партнерств с брендами и продуктовых фичей, которые казались гениальными. На них тратились огромные бюджеты, силы разработки, но всего пара А/В тестов показывала, что инкрементального эффекта они не дают. Хотя в абсолютах от продаж занимают значимую долю
5. Скорость принятия решений
На ручной обсчет А/В может уйти много времени. Бывают более приоритетный задачи. А платформа А/В считает тесты обычно на следующий день после окончния
Наткнулся на неплохую бизнесовую статью об этом от Glowbyte. Там описаны 3 источника выгоды от АВ платформы:
1. Снижение трудозатрат аналитиков
2. Возможность тестить больше гипотез
3. Рост доверия к алгоритму принятия решений
В целом, согласен) Я бы сюда еще добавил:
4. Можем понять, что фича/проект не успешны и откатить их
Вы даже не представляете, сколько только на моем опыте было скидок, партнерств с брендами и продуктовых фичей, которые казались гениальными. На них тратились огромные бюджеты, силы разработки, но всего пара А/В тестов показывала, что инкрементального эффекта они не дают. Хотя в абсолютах от продаж занимают значимую долю
5. Скорость принятия решений
На ручной обсчет А/В может уйти много времени. Бывают более приоритетный задачи. А платформа А/В считает тесты обычно на следующий день после окончния
Хабр
Сколько денег приносит системное решение по А/Б тестам?
Хабр, привет! Меня зовут Наталья Тоганова, я работаю старшим бизнес-аналитиком в компании GlowByte. Мы помогаем компаниям с построением моделей, задачами на стыке data science и инфраструктуры, а...
👍13🔥5👎2
Живем в безумное время: планы очень быстро меняются, куча перемещений, и в целом изменений в жизни
Одно из них связано с тем, что Яндекс купил Delivery Club. Что ж, это хорошая возможность, чтобы немного сменить вектор своего развития
В ближайшее время я перехожу в Яндекс.Лавку 🛒 руководить ML в коммерции: прогноз спроса, оптимизация остатков, цен, промо и многое другое!
Так что скоро будут новые посты на эту тему 😉
Одно из них связано с тем, что Яндекс купил Delivery Club. Что ж, это хорошая возможность, чтобы немного сменить вектор своего развития
В ближайшее время я перехожу в Яндекс.Лавку 🛒 руководить ML в коммерции: прогноз спроса, оптимизация остатков, цен, промо и многое другое!
Так что скоро будут новые посты на эту тему 😉
🔥63👍22❤4🤔2🍓2
Оптимизация цен на товары: прогноз спроса ч.1
Фундаментальная задача везде, но вокруг неё так много мифов! Давайте начнём разбираться с базы
Q = Q(P) - спрос в штуках, зависит от цены
P - цена
C - издержки на 1 штуку товара
Базово задача - максимизировать прибыль:
Q(P) * (P - C) --> max
И самое сложное - смоделировать зависимость Q(P)
Экономисты предполагают, что спрос складывается из многих таких выборов между продавцами, товарами и тд. Поэтому
Важна не абсолютная цена (79 руб), а относительная (Р/ P_competitor = +2% к цене конкурента, P / P_analogue = -5% к цене товара-аналога, P/ P_yesterday = +3% к вчерашней цене этого же товара)
Поэтому функция спроса на товары
Q = f(P/ P_competitor, P / P_analogue, ...)
Вообще, теоретически, на этом можно остановиться и применять наш любимый ML для прогноза Q с фичами на относительные цены. Но в реальности все сложнее 😅
Об этом - в следующих постах
#pricing #timeseries
Фундаментальная задача везде, но вокруг неё так много мифов! Давайте начнём разбираться с базы
Q = Q(P) - спрос в штуках, зависит от цены
P - цена
C - издержки на 1 штуку товара
Базово задача - максимизировать прибыль:
Q(P) * (P - C) --> max
И самое сложное - смоделировать зависимость Q(P)
Экономисты предполагают, что спрос складывается из многих таких выборов между продавцами, товарами и тд. Поэтому
Важна не абсолютная цена (79 руб), а относительная (Р/ P_competitor = +2% к цене конкурента, P / P_analogue = -5% к цене товара-аналога, P/ P_yesterday = +3% к вчерашней цене этого же товара)
Поэтому функция спроса на товары
Q = f(P/ P_competitor, P / P_analogue, ...)
Вообще, теоретически, на этом можно остановиться и применять наш любимый ML для прогноза Q с фичами на относительные цены. Но в реальности все сложнее 😅
Об этом - в следующих постах
#pricing #timeseries
👍35🔥14😐4🤔3
Пока думал, с чего начать серию постов о трудностях прогноза спроса Q(P, др. факторы), коллеги из Самоката выпустили статью о своём прогнозе спроса
В основном рассказ про то, как заставить бустинги работать на шумных временных рядах. Из интересного:
- Доп. статистическая модель прогноза ошибки бустинга. Деревья плохо ловят тренды и иногда средние по товарам, поэтому подход оправдан
- Восстановление спроса с учётом остатков товара
- Прогноз новинок
Мой рекомендасьон к прочтению. Особенно если вы раньше тесно не работали с временными рядами)
В основном рассказ про то, как заставить бустинги работать на шумных временных рядах. Из интересного:
- Доп. статистическая модель прогноза ошибки бустинга. Деревья плохо ловят тренды и иногда средние по товарам, поэтому подход оправдан
- Восстановление спроса с учётом остатков товара
- Прогноз новинок
Мой рекомендасьон к прочтению. Особенно если вы раньше тесно не работали с временными рядами)
Хабр
Как построить прогноз спроса и не потерять голову
Какой ваш прогноз спроса? Всем привет! Представьте себе ситуацию: ваша уютная маленькая команда Data Science занимается прогнозированием спроса для пары десятков дарксторов с помощью какого-нибудь...
👍24🔥8🤯1
Прогноз спроса ч.2
Несмещенность эффекта цены
Итак, мы прогнозируем спрос в зависимости от цены Q(P). Для наглядности возьмем самую простую линейную модель:
Q(P) = c0 + c1 * P
Нам важна несмещенность коэффициента c1, чтобы корректно управлять ценой. Пожалуй, важнейший фактор, влияющий на несмещенность - пропущенные переменные
Есть даже красивая теорема о пропущенной переменной:
Если ты забыл добавить в модель фичу, которая влияет на таргет и коррелирует с ценой, то коэффициент c1 (~влияние цены) смещается
То есть, если в праздники растут скидки, и вы не добавили фичу на праздники - влияние цен учтено неверно:)
(!) Также если влияние цены нелинейно, и ты не добавил условно price**2 / не применил нелинейную модель, то коэффициент смещается 🥶
#pricing #timeseries
Несмещенность эффекта цены
Итак, мы прогнозируем спрос в зависимости от цены Q(P). Для наглядности возьмем самую простую линейную модель:
Q(P) = c0 + c1 * P
Нам важна несмещенность коэффициента c1, чтобы корректно управлять ценой. Пожалуй, важнейший фактор, влияющий на несмещенность - пропущенные переменные
Есть даже красивая теорема о пропущенной переменной:
Если ты забыл добавить в модель фичу, которая влияет на таргет и коррелирует с ценой, то коэффициент c1 (~влияние цены) смещается
То есть, если в праздники растут скидки, и вы не добавили фичу на праздники - влияние цен учтено неверно:)
(!) Также если влияние цены нелинейно, и ты не добавил условно price**2 / не применил нелинейную модель, то коэффициент смещается 🥶
#pricing #timeseries
👍12🔥5😐2
..и что делать?
Во-первых, учитывать другие фичи, которые коррелируют с ценами. То есть в случае линейной модели важно прогнозировать
Q(P) = f(P) + g(other features)
Я бы не рекомендовал использовать что-то сложнее:
Q(P) = f(P) + g(other features)
Q(P) = f(P) * g(other features)
Иначе потом будет крайне сложно решать оптимизационную задачу. Например, коллеги из Я.Маркета используют довольно сложные нейронки для функций f(P) и g(*). Но в конце эти функции просто суммируются и нормируются
А что ещё можно делать - расскажу в следующих постах 😉
Во-первых, учитывать другие фичи, которые коррелируют с ценами. То есть в случае линейной модели важно прогнозировать
Q(P) = f(P) + g(other features)
Я бы не рекомендовал использовать что-то сложнее:
Q(P) = f(P) + g(other features)
Q(P) = f(P) * g(other features)
Иначе потом будет крайне сложно решать оптимизационную задачу. Например, коллеги из Я.Маркета используют довольно сложные нейронки для функций f(P) и g(*). Но в конце эти функции просто суммируются и нормируются
А что ещё можно делать - расскажу в следующих постах 😉
Хабр
ML для оптимизации цен на основе эластичности по цене
English version Статья подготовлена для конференции Aha'22 и рассказывает про задачу вычисления оптимальных цен. Я в последнее время работал над этой задачей в Яндекс Маркете и попробовал выписать ряд...
👍14🔥4
Итоги года
2022 был очень напряжённым на события в мире. Много переживаний и саморефлексии. Что я понял за это время и во что это вылилось:
1. Стал "Head of ..." на 9 мес и вернулся обратно в "ML team lead"
Как оказалось, на уровне "Head of ..." вместо многоточия можно ставить что угодно: в основном, тут работа по построению команды, найму, росту людей в команде, общению с бизнесом. Поэтому условно не так важно Head of чего вы становитесь
Это был прикольный опыт (со стороны "менеджеров" бизнес, команда и вообще все выглядит иначе), но я все же хочу быть поближе именно к ML продуктам. Из этого последовал такой поинт
2. Переход в Яндекс.Лавку 🥖
В целом, критериев выбора работы я сформировал 3:
- Интересная и сложная ML / оптимизационная задача
- Большое влияние на бизнес
- Сильная команда
В Лавке все это было! Поэтому тут я занимаюсь как Team lead алгоритмами прогноза спроса, закупки товаров, и ценообразованием
3. Кажется стал digital nomad-ом
За год побывал в Киргизии, Армении, Грузии, Турции и на 2ух островах: Сахалине и Шри-Ланке. И даже покатал на борде недели 3 суммарно 🏂
Совмещать продуктивную работу и кучу путешествий можно - проверено ✔️
4. Запустил свой курс по А/В
Долго к этому шёл, и наконец первый поток курса завершен!) Смог рассказать кучу всего про бизнесовые моменты в АВ, но осознал, что многим интересны ещё и технические детали. В 2023 будет второй запуск, но уже в обновлённом формате - сейчас думаю над ним
..и в 2023 надеюсь мир вокруг меня станет постабильнее - смогу писать больше постов 😄
2022 был очень напряжённым на события в мире. Много переживаний и саморефлексии. Что я понял за это время и во что это вылилось:
1. Стал "Head of ..." на 9 мес и вернулся обратно в "ML team lead"
Как оказалось, на уровне "Head of ..." вместо многоточия можно ставить что угодно: в основном, тут работа по построению команды, найму, росту людей в команде, общению с бизнесом. Поэтому условно не так важно Head of чего вы становитесь
Это был прикольный опыт (со стороны "менеджеров" бизнес, команда и вообще все выглядит иначе), но я все же хочу быть поближе именно к ML продуктам. Из этого последовал такой поинт
2. Переход в Яндекс.Лавку 🥖
В целом, критериев выбора работы я сформировал 3:
- Интересная и сложная ML / оптимизационная задача
- Большое влияние на бизнес
- Сильная команда
В Лавке все это было! Поэтому тут я занимаюсь как Team lead алгоритмами прогноза спроса, закупки товаров, и ценообразованием
3. Кажется стал digital nomad-ом
За год побывал в Киргизии, Армении, Грузии, Турции и на 2ух островах: Сахалине и Шри-Ланке. И даже покатал на борде недели 3 суммарно 🏂
Совмещать продуктивную работу и кучу путешествий можно - проверено ✔️
4. Запустил свой курс по А/В
Долго к этому шёл, и наконец первый поток курса завершен!) Смог рассказать кучу всего про бизнесовые моменты в АВ, но осознал, что многим интересны ещё и технические детали. В 2023 будет второй запуск, но уже в обновлённом формате - сейчас думаю над ним
..и в 2023 надеюсь мир вокруг меня станет постабильнее - смогу писать больше постов 😄
🔥57👍22
Что тебя ждет при переходе Team Lead —> Head of ML
Вы просили в комментариях пост на эту тему - я делаю)
Если кратко в 3 пунктах:
- Позиция именно про людей = команду 💪
- Умей говорить “нет” так, чтобы не обижать людей
- Как сам все организуешь - так все и будет. А-ля “Делай нормально - нормально будет" 🧐
Дальше немного рандомных, но важных поинтов про работу с людьми, задачами и деньгами
Люди
Ты руководишь непосредственно team lead-ами (1-3 чел), а не дата саентистами (суммарно их до 25 чел). Если маркетинг говорит, что кто-то неверно сделал дешборд / модель странная / whatever, то нужно прийти к тим лиду, обсудить это с ним - а он сам уже поговорит с командой
Приходится давать негативный фидбек (если не ты, то кто?). А потом еще и придумывать на 1-1, как можно исправить проблемы
Приходится сравнивать людей между собой (привет, review) - лично мне это не очень нравилось
Если бизнес хочет от вас странных вещей, то ты должен им обьяснить, что не так и предложить альтернативу
Задачи
Внезапно задач а-ля “Сделай модель оттока” нет. Вместо этого есть боли бизнеса. “Кажется, мы тратим слишком много денег на привлечение новичков. Как нам растить клиентскую базу?”. В куче болей ищешь действительно важные (95% негативного фидбека - про крайние кейсы, которые в масштабах компании ни на что не влияют). И думаешь “что ML-ного делать?”, чтобы это исправить. А вот “как делать?” - решают скорее тим лиды и члены команд
Надо продавать ML идеи бизнесу. Это сложно. Нужно считать финансовый эффект от моделей: да, возможно ты откроешь эксель😱
Внезапно обнаруживаешь, что гениальные идеи изначально финансово убыточны
Вдруг понимаешь, что иногда хороший дашборд полезнее SOTA модели
Деньги
Бюджет на команду, новые ставки, закупка чего-то - теперь это к тебе)
Например, бюджет на команду Х, суммарно все хотят повышений зп до 1.5 Х - тебе нужно что-то с этим делать 🤔
Нужно много общаться про ревью и про то, кто что хочет от него
Надо показывать денежный эффект от работы команды (не ROC AUC +3%, и даже не +2% конверсии), и убеждать бизнес, что именно вы его принесли. А/В тут здорово помогают! Ах да.. помогают, если ты обьяснил бизнесу, что это такое:)
Вы просили в комментариях пост на эту тему - я делаю)
Если кратко в 3 пунктах:
- Позиция именно про людей = команду 💪
- Умей говорить “нет” так, чтобы не обижать людей
- Как сам все организуешь - так все и будет. А-ля “Делай нормально - нормально будет" 🧐
Дальше немного рандомных, но важных поинтов про работу с людьми, задачами и деньгами
Люди
Ты руководишь непосредственно team lead-ами (1-3 чел), а не дата саентистами (суммарно их до 25 чел). Если маркетинг говорит, что кто-то неверно сделал дешборд / модель странная / whatever, то нужно прийти к тим лиду, обсудить это с ним - а он сам уже поговорит с командой
Приходится давать негативный фидбек (если не ты, то кто?). А потом еще и придумывать на 1-1, как можно исправить проблемы
Приходится сравнивать людей между собой (привет, review) - лично мне это не очень нравилось
Если бизнес хочет от вас странных вещей, то ты должен им обьяснить, что не так и предложить альтернативу
Задачи
Внезапно задач а-ля “Сделай модель оттока” нет. Вместо этого есть боли бизнеса. “Кажется, мы тратим слишком много денег на привлечение новичков. Как нам растить клиентскую базу?”. В куче болей ищешь действительно важные (95% негативного фидбека - про крайние кейсы, которые в масштабах компании ни на что не влияют). И думаешь “что ML-ного делать?”, чтобы это исправить. А вот “как делать?” - решают скорее тим лиды и члены команд
Надо продавать ML идеи бизнесу. Это сложно. Нужно считать финансовый эффект от моделей: да, возможно ты откроешь эксель😱
Внезапно обнаруживаешь, что гениальные идеи изначально финансово убыточны
Вдруг понимаешь, что иногда хороший дашборд полезнее SOTA модели
Деньги
Бюджет на команду, новые ставки, закупка чего-то - теперь это к тебе)
Например, бюджет на команду Х, суммарно все хотят повышений зп до 1.5 Х - тебе нужно что-то с этим делать 🤔
Нужно много общаться про ревью и про то, кто что хочет от него
Надо показывать денежный эффект от работы команды (не ROC AUC +3%, и даже не +2% конверсии), и убеждать бизнес, что именно вы его принесли. А/В тут здорово помогают! Ах да.. помогают, если ты обьяснил бизнесу, что это такое:)
🔥42👍13🤔3
А ты сам бы..
Anonymous Poll
36%
Рос как Senior (individual contributor)
15%
Остановился на Team Lead
49%
Рос до Head и выше