ML for Value / Ваня Максимов – Telegram
ML for Value / Ваня Максимов
5.59K subscribers
191 photos
1 video
1 file
119 links
Путь от ML-модели до Value для компании | RecSys, Search, LLM, Pricing и CLTV

Ваня Максимов, @Ivan_maksimov
Head of AI | Recsys, search, llm @Y.Market, ex-WB, ex-Delivery Club

Консультирую компании, Веду курсы
Публикую релевантную рекламу
Download Telegram
Продолжение про скидки

Если вы тоже любите ML и персонализацию, то наверняка задумывались про персонализацию скидок = оптимальный размер скидки для каждого клиента

Глобально есть 3 варианта это сделать:
- Классические прогноз churn + даем скидку тем, кто наиболее вероятно уйдет
- Uplift
- Контекстуальные многорукие бандиты + RL

На конференциях вы скорее всего услышите про успехи Uplift и бандитов. Сегодня я расскажу про то, почему они в моей практике не заводились, и почему старый-добрый churn все еще весьма хорош

Uplift
- Для построения модели аплифта нужна рассылка скидок со случайным размером номинала. Это дорого!
- Нужно регулярно такую рассылку повторять - иначе данные устаревают
- Если у вас вводится новый тип оффера, то случайную рассылку придется повторить

В целом, история с рассылками может быть и технически сложной (разослать, проверить что все долшло, аггрегировать дланные), долгой и дорогой

Также крайне проблематично интерпретировать uplift бизнесу и тем более построить дашборды для бизнеса по uplift модели

Бандиты и RL
- Для персонализации нужны как минимум контекстуальные бандиты. Придется здорово постараться, чтобы они начали сходиться к оптимуму за разумное число итераций. Нужно будет применить много трюков, чтобы оно в принципе работало
- Сложно конструировать долгосрочный reward
- Сложно построить дашборды поверх и отвечать на вопросы "Почему мы даем этому человеку такую скидку?"

Churn
- Крайне прост. Уже знаком бизнесу = можно легко интерпретировать, строить дашборды. Любому человеку в компании понятно верхнеуровнево, что это за модель и зачем она нужна
- Явно влияет на долгосрочные метрики (снижает churn)
- Относительно легко считать юнит экономику модели
- Есть накопленный опыт ml-сообщества с best practices

В общем, я бы предложил вам начать оптимизацию маркетинга точно с модели churn. А уже потом 7 раз подумать, стоит ли внедрять uplift/бандитов/rl 😉
#marketing@ml4value
👍21🔥7
ML helicopter view

Есть такое интересное выражение "helicopter view" - взгляд сверху, чтобы понять, а что вообще нужно делать в вашей ситуации

Кажется, в ML не хватает helicopter view. Сегодня попробую рассказать на примере, зачем это нужно и как работает

Ситуация
У вас есть модель, которая рекомендует пользователю товары в продуктовом магазине. Пользователи жалуются, что им "нерелевантно"

Что делают обычно
Тюнят модель, улучшают ml- метрики и запускают А/В

Helicopter view
А что вообще нужно пользователям? Так ли плохо, что части из них рекомендации "нерелевантны"?

Возможно, "релевантно" для пользователя - рекомендовать товары, которые он уже покупал. Тогда вы можете безо всякого ML сделать категорию "Вы покупали". А ML-ем рекомендовать что-то новое

Иногда "нерелевентность" - не так уж и плохо. Допустим, вы хотите повышать маржинальность бизнеса и продавать товары собственной торговой марки (СТМ), потому что у них выше маржа. Даже если они релевантны 15% пользователей (высокая вероятность заказа), то продвигать их в рекомендациях может быть все еще выгодно с точки зрения ожидаемой прибыли = вероятность заказа * прибыль

Так что иногда бывает полезно применять ML helicopter view 🚁
👍29🔥63🤔2
Вдруг осознал, что не написал ни строчки кода за 2 мес в роли хэда клиентской аналитики 😅

Мне всегда было интересно, чем же, если не кодом, занимаются такие люди, и вот чем:

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
🔥10👍2
АВ police существует до сих пор

Первые члены АВ police - @ermolova и я - недоумевают, как можно запускать фичи без А/В
🔥9😁5👍3
ML explainability & rude errors

Зачитался серией постов про обьяснимость ML-моделей. На мой взгляд, со стороны бизнеса чаще всего она нужна, чтобы не допускать грубых ошибок: путать класс "человек" и "обезьяна", отрицательный прогноз продаж, рекомендации алкоголя (запрещено законом) и тп

Поэтому часто обсудить с бизнесом, что такое "грубая ошибка" и учесть это в лоссе или ML-метрике становится очень хорошей идеей 😉

Вроде бы очень простая идея, но я крайне редко видел, чтобы ее применяли на практике
🤔1
Forwarded from Reliable ML
Интерпретируемость ML моделей для конечного пользователя: где нужна на практике и что делать
Где нужна на практике

Мы недавно рассмотрели ключевых пользователей интерпретации ML-моделей и различия в их потребностях в интерпретации.

На практике - и в рамках концепции Reliable ML - ключевой целью работы над моделью является ее итоговое применение в бизнес-процессах и финансовая польза от этого применения. Следовательно, ключевыми целями интерпретации являются цели бизнес-заказчика (финансовая польза) и пользователя ML-решения (корректное применение в бизнес-процессе).

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

В каких блоках цикла управления продуктом продвинутой аналитики интерпретируемость моделей машинного обучения для конечного пользователя вашей модели становится важной? Поделимся своим видением.

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

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

Что именно становится важным?

- Доверие к результату. Принятие решений моделью должно быть понятно бизнесу как в целом (global interpretation), так и на отдельных примерах (local interpretation).

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

И наоборот, высокое доверие к модели способствует ее корректному применению и эффективной и быстрой интеграции в бизнес-процессы.

- Применимость модели в реальных условиях. Реальные условия, в которых работает модель, всегда так или иначе отличаются от тех, на которых она строилась. Кажется, что это уже ни для кого не секрет на фоне большого числа форс-мажорных событий последних лет.

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

- Информативность для бизнес-процесса. Конечному пользователю должно быть понятно, что делать при виде результата работы модели. Именно это называют информативностью. То есть, для работы в боевых условиях чаще всего критически важно, чтобы результат работы был не просто красивыми сведениями, а содержал конкретную рекомендацию к действию (push to action).

#interpretable_ml #business
👍41
Lessons learned

Наткнулся на отличную статью от Андрея Лукьяненко про опыт, полученный за 10 лет в DS. Подписываюсь под каждым пунктом!

Что из неочевидного хочу добавить от себя

1. Ваш руководитель / старший товарищ - это ваш "ресурс"

Я глобально верю в идею TLaaS - Team Lead as a Service. TL очень заинтересован в вашем росте, поэтому если у вас есть блокеры (инфраструктура, непонятные требования etc), то вы можете "использовать" TL как ваш ресурс)

2. Вы лучше всех в компании разбираетесь в своей области

В конкретном юпитер ноутбуке, задаче или области вы разбираетесь лучше, чем ваш старший товарищ, тим лид или CEO/CTO. Вы - эксперт) И скорее всего именно вы знаете как лучше - предлагайте свои идеи!

3. Ошибаться - нормально. Ненормально не учиться на своих ошибках

Однажды я чуть не выкатил в прод рекомендательный блок с обратным порядком сортировки товаров. Просто забыл указать
df.sort_values(ascending=False)

Но
из этого кейса у меня родился неплохой подход по автотестам для рек систем. И с тех пор эта ошибка не повторялась (но конечно бывали другие 🙃)
🔥30👍10
Сегодня пост про soft-навыки

Есть у меня странное хобби: я собираю истории провалов ML проектов 😱

В историях успеха на конференциях вы чаще всего слышите про новые архитектуры нейронок, хитрые аналитические приемы и все то, что называется hard skills. Но в извечтных мне историях провалов чаще говорят про soft: не обсудили до конца финальный ml-результат, поехали сроки на полгода, отлично решили не ту задачу - и это еще не полный список 😉

Недавно видел общедоступную историю не успеха в канале "Нескучный data sceince" https://news.1rj.ru/str/not_boring_ds
В общем, кейс довольно сильно совпадает с моим опытом. Действительно, стоит заранее убедиться, что:
- бизнес понимает, зачем ему нужна модель
- как ее применять
- какой бизнес-эффект

Помимо этого я бы добавил от себя:
- определены промежуточные и финальный дедлайн, есть роудмап
- проговорили зависимости с соседними командами
- есть человек, который ведет роудмап. Обычно это проджект, но если его нет - то найдите кого-то, кт оисполнит его роль

Всем успешных ML-проектов!)
👍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
🔥27👍81
Сколько денег приносит платфома А/В тестирования?

Наткнулся на неплохую бизнесовую статью об этом от Glowbyte. Там описаны 3 источника выгоды от АВ платформы:

1. Снижение трудозатрат аналитиков
2. Возможность тестить больше гипотез
3. Рост доверия к алгоритму принятия решений

В целом, согласен) Я бы сюда еще добавил:

4. Можем понять, что фича/проект не успешны и откатить их

Вы даже не представляете, сколько только на моем опыте было скидок, партнерств с брендами и продуктовых фичей, которые казались гениальными. На них тратились огромные бюджеты, силы разработки, но всего пара А/В тестов показывала, что инкрементального эффекта они не дают. Хотя в абсолютах от продаж занимают значимую долю

5. Скорость принятия решений

На ручной обсчет А/В может уйти много времени. Бывают более приоритетный задачи. А платформа А/В считает тесты обычно на следующий день после окончния
👍13🔥5👎2
Живем в безумное время: планы очень быстро меняются, куча перемещений,  и в целом изменений в жизни

Одно из них связано с тем, что Яндекс купил Delivery Club. Что ж, это хорошая возможность, чтобы немного сменить вектор своего развития

В ближайшее время я перехожу в Яндекс.Лавку 🛒 руководить ML в коммерции: прогноз спроса, оптимизация остатков, цен, промо и многое другое!

Так что скоро будут новые посты на эту тему 😉
🔥63👍224🤔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
👍35🔥14😐4🤔3
Пока думал, с чего начать серию постов о трудностях прогноза спроса Q(P, др. факторы), коллеги из Самоката выпустили статью о своём прогнозе спроса

В основном рассказ про то, как заставить бустинги работать на шумных временных рядах. Из интересного:

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

Мой рекомендасьон к прочтению. Особенно если вы раньше тесно не работали с временными рядами)
👍24🔥8🤯1
Прогноз спроса ч.2
Несмещенность эффекта цены


Итак, мы прогнозируем спрос в зависимости от цены 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(*). Но в конце эти функции просто суммируются и нормируются

А что ещё можно делать - расскажу в следующих постах 😉
👍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 надеюсь мир вокруг меня станет постабильнее - смогу писать больше постов 😄
🔥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% конверсии), и убеждать бизнес, что именно вы его принесли. А/В тут здорово помогают! Ах да.. помогают, если ты обьяснил бизнесу, что это такое:)
🔥42👍13🤔3