Какие плюсы в подходе ребят я вижу:
- Просто. А простая модель - то, что нужно для MVP
- Легко масштабируется
- Показывает впечатляющее качество
Но есть и минусы:
- Написали про точность (precision) в 58%, но ничего не сказали про recall. Наверняка в магазине есть товары, которые всегда заканчиваются к 14:00 (горячий хлеб, пирожки, салаты). Вполне может оказаться так, что модель классно определяет именно эти товары (условно 10% от всех Stock-out), а оставшиеся вообще не определяет
- Порог вероятности в 1% тоже выглядит немного подозрительно и наводит на мысль о низком recall
- Как я понял, А/В теста не было
- Время пополнения со склада в 14:00 выглядит как бизнес правило. Возможно, получится сильно все улучшить просто делая пополнение условно и в 14:00, и в 18:00
- Просто. А простая модель - то, что нужно для MVP
- Легко масштабируется
- Показывает впечатляющее качество
Но есть и минусы:
- Написали про точность (precision) в 58%, но ничего не сказали про recall. Наверняка в магазине есть товары, которые всегда заканчиваются к 14:00 (горячий хлеб, пирожки, салаты). Вполне может оказаться так, что модель классно определяет именно эти товары (условно 10% от всех Stock-out), а оставшиеся вообще не определяет
- Порог вероятности в 1% тоже выглядит немного подозрительно и наводит на мысль о низком recall
- Как я понял, А/В теста не было
- Время пополнения со склада в 14:00 выглядит как бизнес правило. Возможно, получится сильно все улучшить просто делая пополнение условно и в 14:00, и в 18:00
Но допустим, что минусы несущественны, и у модели приличный recall в 40%. Допустим, этот подход даже внедрили во всей сети. Возникает вопрос - как дальше развивать проект?
Anonymous Poll
7%
Оценивать параметр mu (среднее) через ML
28%
Тестить другие временные интервалы для пополнения (условно 14:00 и 18:00)
49%
Завести систему мониторинга остатков
11%
Попробовать более сложный подход с камерами + распознаванием stock-out
5%
Свой вариант (в комментарии)
После опроса выше я крепко задумался, а почему, собственно, все ритейлеры не внедряют систему мониторинга остатков на складе + учёт данных с касс = знание об остатках на полках?
А вместо этого компании внедряют очень дорогой computer vision для детекции stock-out на полке, и стартапы в этой сфере растут как на дрожжах (примеры 1, 2, 3). Поговорил с несколькими дата саентистами из индустрии и узнал, что главная проблема - лаг в поступлении данных с касс. И он может быть не несколько минут, а скорее 6+ часов! Понятное дело, что с таким лагом наш подход не работает
А вот в статье из нашего кейса, либо данные с касс льются почти в риал тайме, либо о лаге умлочали 😕
Да, кстати, все DS-ы из индустрии, с которыми я говорил, согласились, что риал-тайм данные с касс + мониторинг остатков - пожалуй, самый простой и дешёвый (!) способ очень точно знать стоки на полках, если:
- у ритейлера уже есть система мониторинга стоков на складе
- данные с касс льются с небольшим лагом
А вместо этого компании внедряют очень дорогой computer vision для детекции stock-out на полке, и стартапы в этой сфере растут как на дрожжах (примеры 1, 2, 3). Поговорил с несколькими дата саентистами из индустрии и узнал, что главная проблема - лаг в поступлении данных с касс. И он может быть не несколько минут, а скорее 6+ часов! Понятное дело, что с таким лагом наш подход не работает
А вот в статье из нашего кейса, либо данные с касс льются почти в риал тайме, либо о лаге умлочали 😕
Да, кстати, все DS-ы из индустрии, с которыми я говорил, согласились, что риал-тайм данные с касс + мониторинг остатков - пожалуй, самый простой и дешёвый (!) способ очень точно знать стоки на полках, если:
- у ритейлера уже есть система мониторинга стоков на складе
- данные с касс льются с небольшим лагом
Trax Retail
Home
Optimize shopper experiences, monitor and analyze insights, increase sales and simplify your retail business life with Trax retail management solutions.
Сегодня речь пойдёт о рейтинге. Вроде бы обыденная привычная вещь: все мы видели рейтинги фильмов на Netflix или Кинопоиске, рейтинг товаров в том же М.Видео, рейтинг ресторанов, да и вообще рейтинги везде. Но как они получаются и зачем нужны?
Первая мысль - ну, клиенты ставят оценки от 1 до 5, они усредняются и получается рейтинг, что сложного-то?
С одной стороны, да. С другой, рейтинг должен:
1. Быть честным
2. Помогать потребителям делать выбор
3. Мотивировать продавцов товаров/услуг их улучшать
Допустим, один отель получил средний рейтинг 5.0 от 6 человек. А другой - 4.6, но от 1 000 человек. Честен ли такой рейтинг? Очевидно нет: пройдёт время, больше людей оценит первый отель, и скорее всего его рейтинг снизится. Ну и очевидно, что рейтинги из примера выше скорее мешают пользователям выбирать между отелями
А теперь представьте себя на месте владельца отеля с рейтингом 4.6: у него есть очевидный вопрос "Как мне улучшить мой рейтинг?". Ведь от рейтинга зависит то, сколько клиентов и прибыли у него будет
Первая мысль - ну, клиенты ставят оценки от 1 до 5, они усредняются и получается рейтинг, что сложного-то?
С одной стороны, да. С другой, рейтинг должен:
1. Быть честным
2. Помогать потребителям делать выбор
3. Мотивировать продавцов товаров/услуг их улучшать
Допустим, один отель получил средний рейтинг 5.0 от 6 человек. А другой - 4.6, но от 1 000 человек. Честен ли такой рейтинг? Очевидно нет: пройдёт время, больше людей оценит первый отель, и скорее всего его рейтинг снизится. Ну и очевидно, что рейтинги из примера выше скорее мешают пользователям выбирать между отелями
А теперь представьте себя на месте владельца отеля с рейтингом 4.6: у него есть очевидный вопрос "Как мне улучшить мой рейтинг?". Ведь от рейтинга зависит то, сколько клиентов и прибыли у него будет
Например, Booking решает эти 3 сложности с рейтингом с помощью достаточно необычного ML подхода. Сначала эксперты вручную ставят рейтинг части отелей. Затем Booking обучает 4 lightgbm моделей, которые прогнозируют P(рейтинг > k), k=1,...4
ML модель "сглаживает" рейтинги, которые ставят эксперты. Поэтому 1 конкретный эксперт не может испортить рейтинг конкретному отелю - таким образом достигается честность рейтинга
Booking сортирует ленту в том числе по рецтингу - этим он помогает клиентам выбирать отели
А потом с помощью shap векторов Booking объясняет отелям, почему их рейтинг именно такой, и рекомендует, как его улучшить. Выглядит довольно просто, элегантно и эффективно - все как я люблю 😋
ML модель "сглаживает" рейтинги, которые ставят эксперты. Поэтому 1 конкретный эксперт не может испортить рейтинг конкретному отелю - таким образом достигается честность рейтинга
Booking сортирует ленту в том числе по рецтингу - этим он помогает клиентам выбирать отели
А потом с помощью shap векторов Booking объясняет отелям, почему их рейтинг именно такой, и рекомендует, как его улучшить. Выглядит довольно просто, элегантно и эффективно - все как я люблю 😋
Ну а если вам понравилась тема про рейтинги, то подробности подхода Booking вы можете почитать здесь. Поставьте палец вверх, и в следующих постах я расскажу ещё много крутых вещей про рейтинги:)
https://nplus1.ru/news/2021/05/26/citing-nonreplicable-publications
Недавно наткнулся на статью о том, что "Статьи с невозпроизводимыми результатами цитруются чаще"
Интересно, что все больше научных трудов невоспроизводимы ~ им особо нельзя доверять. Из этого рисерча кажется что это проблема достигла действительно больших масштабов
Ещё более забавно то, что кто-то перевёл заголовок статьи на русский как "невоспроизводимость научных статей только увеличивает их цитируемость"
Переводчики этого рисерча сами допускают одну из логических ошибок. Вы наверняка её знаете: "Correlation does not imply causality". Авторы нашли некую корреляцию между воспроизводимостью результатов и цитируемостью. И написали в статье именно о корреляции. Намеренно снижая воспроизаодимость результатов, вы конечно же не повысите цитируемость статьи:)
Но переводчики рисерча недосмотрели / решили сделать более кликбейтный заголовок. Грустно.
Недавно наткнулся на статью о том, что "Статьи с невозпроизводимыми результатами цитруются чаще"
Интересно, что все больше научных трудов невоспроизводимы ~ им особо нельзя доверять. Из этого рисерча кажется что это проблема достигла действительно больших масштабов
Ещё более забавно то, что кто-то перевёл заголовок статьи на русский как "невоспроизводимость научных статей только увеличивает их цитируемость"
Переводчики этого рисерча сами допускают одну из логических ошибок. Вы наверняка её знаете: "Correlation does not imply causality". Авторы нашли некую корреляцию между воспроизводимостью результатов и цитируемостью. И написали в статье именно о корреляции. Намеренно снижая воспроизаодимость результатов, вы конечно же не повысите цитируемость статьи:)
Но переводчики рисерча недосмотрели / решили сделать более кликбейтный заголовок. Грустно.
N + 1 — главное издание о науке, технике и технологиях
Невоспроизводимость научных статей только увеличила их цитируемость
Этому не мешает даже публикация результатов проверки воспроизводимости
Но к чему я все это:
Когда вы как аналитик/DS показываете результаты своего рисерча (сравнения средних / коэффициенты линейной регрессии /..) бизнес-заказчику, то внимательно следите за разницей Correlation VS causality
Бизнес-заказчик вполне может воспринять корреляцию (из коэффициентов линейной регрессии) как причинно-следственную связь, когда это не так
Например, многие сервисы в случае плохого качества услуг (жалоба от клиента) дают ему скидку на следующий заказ. И ваша лог-регрессия легко может найти связь "плохое качество услуг" - - > рост вероятности совершить следующий заказ. Хотя на самом деле на вероятность следующего заказа влияет скидка!
Будьте осторожны 📈📉❗️
Когда вы как аналитик/DS показываете результаты своего рисерча (сравнения средних / коэффициенты линейной регрессии /..) бизнес-заказчику, то внимательно следите за разницей Correlation VS causality
Бизнес-заказчик вполне может воспринять корреляцию (из коэффициентов линейной регрессии) как причинно-следственную связь, когда это не так
Например, многие сервисы в случае плохого качества услуг (жалоба от клиента) дают ему скидку на следующий заказ. И ваша лог-регрессия легко может найти связь "плохое качество услуг" - - > рост вероятности совершить следующий заказ. Хотя на самом деле на вероятность следующего заказа влияет скидка!
Будьте осторожны 📈📉❗️
Около полугода назад я стал тимлидом команд персонализации и А/В в Delivery Club. И примерно с тех пор почти не было новых постов в канале 🙂
За это время произошло много интересного: мы запустили несколько крупных проектов, наняли крутых ребят (это заслуживает отдельного поста), я вновь был студентом, а ещё научился совершенно неожиданным для себя вещам
Кажется, настало время возобновить посты и поделиться этим интереснейшим опытом с вами!)
За это время произошло много интересного: мы запустили несколько крупных проектов, наняли крутых ребят (это заслуживает отдельного поста), я вновь был студентом, а ещё научился совершенно неожиданным для себя вещам
Кажется, настало время возобновить посты и поделиться этим интереснейшим опытом с вами!)
И для начала небольшое резюме того, что я понял за эти полгода:
1. Вдруг осознал, что на своем опыте смог проследить, зачем действительно нужны все best practice в техническом плане ⚙️
За 2 года в деливери мы прошли крутое путешествие от PostgreSQL --> python + jenkins --> metabase до всех современных buzzwords: зоопарк apache, poetry, docker, автотесты, микросервисная архитектура, Golang и много всего еще! Прямо на моих глазах поменялась бОльшая часть технического стека. И самое главное - я четко понимаю, почему и зачем мы его меняли
Если вкратце, то best practice в долгосрочной перспективе сильно упрощают жизнь и позволяют в целом масштабировать data science в компании. 1 DS может и в ноутбуке крутить ML, а вот 10 DS уже должны обзавестить всеми best practices
2. Agile работает
Спринты, планирование, задачи в jira, документация в конфлюенс и все-все и правда делает вашу жизнь проще и эффективнее в среднесрочной перспективе. Но сначала будет немного больно
3. Планировать нужно
Еще раз убедился, что лучше потратить 2 недели на брейншторм и планирование DS проекта, чем потом 2 месяца менять все на ходу
4. 💪Сильный продакт в DS проекте - ваш главный друг и залог успеха проекта
Одна и та же ML-модель (в моем случае recsys) может выглядеть и влиять на пользователя совершенно по-разному. Это очень сильно зависит от того, как ее результаты будут представлены пользователям
5. Вокруг очень много крутых ребят, у которых есть чему поучиться
Даже если вы Ян Лекун в ML, то всегда можно научиться хорошим практикам кода у разработчиков, продуктовому видению у менеджеров, пониманию метрик у аналитиков
1. Вдруг осознал, что на своем опыте смог проследить, зачем действительно нужны все best practice в техническом плане ⚙️
За 2 года в деливери мы прошли крутое путешествие от PostgreSQL --> python + jenkins --> metabase до всех современных buzzwords: зоопарк apache, poetry, docker, автотесты, микросервисная архитектура, Golang и много всего еще! Прямо на моих глазах поменялась бОльшая часть технического стека. И самое главное - я четко понимаю, почему и зачем мы его меняли
Если вкратце, то best practice в долгосрочной перспективе сильно упрощают жизнь и позволяют в целом масштабировать data science в компании. 1 DS может и в ноутбуке крутить ML, а вот 10 DS уже должны обзавестить всеми best practices
2. Agile работает
Спринты, планирование, задачи в jira, документация в конфлюенс и все-все и правда делает вашу жизнь проще и эффективнее в среднесрочной перспективе. Но сначала будет немного больно
3. Планировать нужно
Еще раз убедился, что лучше потратить 2 недели на брейншторм и планирование DS проекта, чем потом 2 месяца менять все на ходу
4. 💪Сильный продакт в DS проекте - ваш главный друг и залог успеха проекта
Одна и та же ML-модель (в моем случае recsys) может выглядеть и влиять на пользователя совершенно по-разному. Это очень сильно зависит от того, как ее результаты будут представлены пользователям
5. Вокруг очень много крутых ребят, у которых есть чему поучиться
Даже если вы Ян Лекун в ML, то всегда можно научиться хорошим практикам кода у разработчиков, продуктовому видению у менеджеров, пониманию метрик у аналитиков
Сегодня речь пойдёт про А/В платформы. И почему это не только про стат тесты
Думаю, многие видели статью "Hidden technical debt in ML systems" с её знаменитой картинкой
Вкратце статья о том, что мало построить ML-модели и показать SOTA качество. Нужно ещё и построить инфраструктуру вокруг модели, иначе все рискует обернуться полным провалом. Ведь изменение в логгировании данных, высокая нагрузка в проде и множество других вещей может сделать самую прекрасную модель совершенно бесполезной
Вышла статья в далёком 2015 году. На мой взгляд из 2021 года, там явно не хватает блока "А/В testing". Этот блок тянет на ещё одну статью, которую я бы назвал "Hidden technical debt in A/B testing systems"
Думаю, многие видели статью "Hidden technical debt in ML systems" с её знаменитой картинкой
Вкратце статья о том, что мало построить ML-модели и показать SOTA качество. Нужно ещё и построить инфраструктуру вокруг модели, иначе все рискует обернуться полным провалом. Ведь изменение в логгировании данных, высокая нагрузка в проде и множество других вещей может сделать самую прекрасную модель совершенно бесполезной
Вышла статья в далёком 2015 году. На мой взгляд из 2021 года, там явно не хватает блока "А/В testing". Этот блок тянет на ещё одну статью, которую я бы назвал "Hidden technical debt in A/B testing systems"
Часть 1. Разделение пользователей на группы
Почему-то все думают, что это самый простой этап: "Делим случайно и все дела"! Но на самом деле, это одно из самых сложных и спорных мест во всех А/В платформах
Опустим очень сложные кейсы, когда пользователи (наблюдения) зависят друг от друга. Как например, в логистике или соц сетях. Или кейс с оффлайн А/В тестированием, когда наблюдений мало и они очень разные: например, тесты над оффлайн магазинами
Пусть у вас есть самое классическое мобильное приложение: скажем, онлайн-магазин одежды. Даже в таком случае начнутся проблемы при разделении "Просто случайным образом"
Пусть вы проводите одновременно 2 теста на изменение в дизайне на главной странице. Очевидно, они влияют друг на друга - хорошо бы сделать так, чтобы эти тесты проводились на разных пользователях. Такой подход довольно популярен и называется двойным солированием. Упрощенно, вы сначала делите пользователей случайно с random_seed=Х (солью) условно на 100 групп. Группы 1-50 попадают в первый тест, а группы 51-100 - во второй. А потом внутри каждого теста делите пользователей второй раз с random_seed=Y (солью) на тест и контроль. При этом не стоит забывать, что у каждого теста должна быть своя вторая соль
Неплохо, мы смогли развести 2 влияющих друг на друга теста! Но тут нас подстерегает вторая проблема: если разводить все тесты, то у нас будет очень мало экспериментального пространства. Если 1 тест занимает в среднем 10 из 100 групп, то одновременно мы можем запускать всего 10 тестов - грустно😥
Тут нам может помочь подход со слоями от Гугла. Идея весьма проста: давайте разделим наше приложение на "слои". Внутри одного слоя эксперименты считаем зависимыми и разводим их = пользователи не пересекаются. А вот между слоями считаем эксперименты независимыми - пользователь может попасть сразу в N экспериментов в разных слоях. Слой - обычно логически отдельный кусок приложения (главная страница, поиск, экран оплаты заказа и т.д). Вуаля, мы только что смогли проводить не 10 параллельных экспериментов, а 10 * N, где N - число слоев
Я описал лишь пару сложностей и варианты их решения. Когда мы строили свою А/В платформу v1.0 в Delivery Club, таких неочевидных моментов было гораздо больше! Со времени написания статьи произошло множество улучшений в платформе. Но на мой взгляд, до сих пор одной из крупнейших побед остается именно корректное разделение пользователей на группы. Помните, что это, пожалуй, ключевой шаг, и начинайте делать А/В тесты в своей компании именно с него 😉
#ab
Почему-то все думают, что это самый простой этап: "Делим случайно и все дела"! Но на самом деле, это одно из самых сложных и спорных мест во всех А/В платформах
Опустим очень сложные кейсы, когда пользователи (наблюдения) зависят друг от друга. Как например, в логистике или соц сетях. Или кейс с оффлайн А/В тестированием, когда наблюдений мало и они очень разные: например, тесты над оффлайн магазинами
Пусть у вас есть самое классическое мобильное приложение: скажем, онлайн-магазин одежды. Даже в таком случае начнутся проблемы при разделении "Просто случайным образом"
Пусть вы проводите одновременно 2 теста на изменение в дизайне на главной странице. Очевидно, они влияют друг на друга - хорошо бы сделать так, чтобы эти тесты проводились на разных пользователях. Такой подход довольно популярен и называется двойным солированием. Упрощенно, вы сначала делите пользователей случайно с random_seed=Х (солью) условно на 100 групп. Группы 1-50 попадают в первый тест, а группы 51-100 - во второй. А потом внутри каждого теста делите пользователей второй раз с random_seed=Y (солью) на тест и контроль. При этом не стоит забывать, что у каждого теста должна быть своя вторая соль
Неплохо, мы смогли развести 2 влияющих друг на друга теста! Но тут нас подстерегает вторая проблема: если разводить все тесты, то у нас будет очень мало экспериментального пространства. Если 1 тест занимает в среднем 10 из 100 групп, то одновременно мы можем запускать всего 10 тестов - грустно😥
Тут нам может помочь подход со слоями от Гугла. Идея весьма проста: давайте разделим наше приложение на "слои". Внутри одного слоя эксперименты считаем зависимыми и разводим их = пользователи не пересекаются. А вот между слоями считаем эксперименты независимыми - пользователь может попасть сразу в N экспериментов в разных слоях. Слой - обычно логически отдельный кусок приложения (главная страница, поиск, экран оплаты заказа и т.д). Вуаля, мы только что смогли проводить не 10 параллельных экспериментов, а 10 * N, где N - число слоев
Я описал лишь пару сложностей и варианты их решения. Когда мы строили свою А/В платформу v1.0 в Delivery Club, таких неочевидных моментов было гораздо больше! Со времени написания статьи произошло множество улучшений в платформе. Но на мой взгляд, до сих пор одной из крупнейших побед остается именно корректное разделение пользователей на группы. Помните, что это, пожалуй, ключевой шаг, и начинайте делать А/В тесты в своей компании именно с него 😉
#ab
DoorDash
Experiment Rigor for Switchback Experiment Analysis - DoorDash
At DoorDash, we believe in learning from our marketplace of Consumers, Dashers, and Merchants and thus rely heavily on experimentation to make the data-driven product and business decisions.
👍2
Часть 2. Выбор метрик в А/В
В идеальном мире для дизайна А/В нужно взять 3 вида метрик:
- Приемочные (обычно 1-3) = те, по прокрасу которых мы принимаем решение об успехе эксперимента
- Контрольные = те, по которым мы понимаем, что ничего не сломалось. Ожидаемое поведение - нет стат значимых изменений
- Барьерные = если покрасились в красный, то тест неудачный не смотри ни на что. Обычно это какие-то крупные метрики всего бизнеса вроде ARPU
Во-первых, достаточно сложно обьяснить такое разделение менеджерам: стандартная проблема - хочется в "примемочные" запихнуть штук 20 метрик. А потом увидеть, что покрасилась конверсия из "одной кнопки в другую" и решить, что тест успешен
Во-вторых, очень сложно выбрать 1-3 приемочных метрики даже если вы аналитик, который все прекрасно понимает. Бизнес - довольно многогранная штука, его состояние тяжело аггрегировать всего 1-3 размерностями. Но это делать нужно! Иначе вы рискуете в приемочные метрики отправить кучу скоррелированных метрик + не забывайте про поправки на множественность. С ними есть мой любимый парадокс: если в тесте 1 метрика, то она стат значима, а если 10, то с поправками на множественность та же метрика уже НЕ стат значима
В-третьих, даже если вы договорились на 1-3 приемочные метрики, то внезапно может оказаться, что тест нужно крутить 3 месяца. Обычно тут как между Сциллой и Харибдой: либо метрика явно влияет на бизнес (как конверсия из захода в приложение в заказ), либо она достаточно чувствительная = держим тест 2 недели, а не 3 месяца. И как выбрать хорошую прокси метрику к вашей целевой - это целая наука
Так что цените ваших аналитиков, которые помогают выбрать правильные метрики, и прислушивайтесь к ним!)
#ab
В идеальном мире для дизайна А/В нужно взять 3 вида метрик:
- Приемочные (обычно 1-3) = те, по прокрасу которых мы принимаем решение об успехе эксперимента
- Контрольные = те, по которым мы понимаем, что ничего не сломалось. Ожидаемое поведение - нет стат значимых изменений
- Барьерные = если покрасились в красный, то тест неудачный не смотри ни на что. Обычно это какие-то крупные метрики всего бизнеса вроде ARPU
Во-первых, достаточно сложно обьяснить такое разделение менеджерам: стандартная проблема - хочется в "примемочные" запихнуть штук 20 метрик. А потом увидеть, что покрасилась конверсия из "одной кнопки в другую" и решить, что тест успешен
Во-вторых, очень сложно выбрать 1-3 приемочных метрики даже если вы аналитик, который все прекрасно понимает. Бизнес - довольно многогранная штука, его состояние тяжело аггрегировать всего 1-3 размерностями. Но это делать нужно! Иначе вы рискуете в приемочные метрики отправить кучу скоррелированных метрик + не забывайте про поправки на множественность. С ними есть мой любимый парадокс: если в тесте 1 метрика, то она стат значима, а если 10, то с поправками на множественность та же метрика уже НЕ стат значима
В-третьих, даже если вы договорились на 1-3 приемочные метрики, то внезапно может оказаться, что тест нужно крутить 3 месяца. Обычно тут как между Сциллой и Харибдой: либо метрика явно влияет на бизнес (как конверсия из захода в приложение в заказ), либо она достаточно чувствительная = держим тест 2 недели, а не 3 месяца. И как выбрать хорошую прокси метрику к вашей целевой - это целая наука
Так что цените ваших аналитиков, которые помогают выбрать правильные метрики, и прислушивайтесь к ним!)
#ab
Зачем нужен продакт менеджер в ML-проектах?
Много кто спрашивал в комментариях к прошлым постам об этом. Поэтому решил сделать отдельный пост на эту тему
Вообще, ML product manager - довольно редкий человек на рынке, особенно в России. И я очень рад, что мне с такими продактами удалось поработать. Сразу оговорюсь, что я в основном встречал продакт менеджеров, которые выполняют сразу 2 роли: продакта и проджекта (то есть формируют видение продукта и помогают вести проект) - дальше речь пойдет именно о таких людях. Итак, что же делает ML product manager?
1. Формирует бизнес-требования к ML-модели
В общем-то это тот человек, который должен разобраться, на какую бизнес-метрику мы хотим повлиять ML-проектом, и какие есть ограничения
Пример
Классика: вы оптимизировали в рекомендациях кол-во кликов (оно даже и в А/В выросло!), но что-то бизнес не очень рад: ведь заказы упали
2. Собирает всех вовлеченных в проект
Если вы думаете, что "все вовлеченные" - это data scientist, data engineer и еще пара data-***, то вы глубоко ошибаетесь)
Внезапно, практически на любой ML-проект нужны:
- Классические бэк/фронт разработчики
- UX-рисерчеры, чтобы хотя бы на макетах финального продукта (спойлер: это НЕ ml-модель) понять, нужно ли пользователям именно это
- Дизайнеры, чтобы нарисовать эти макеты и финальный продукт
- Аналитики, которые помогут найти "слабые места" в продукте, где будет больше всего выхлопа от ML
- Список может продолжиться еще дальше
Примеры
Согласитесь, будет неприятно узнать на этапе выкатки в прод, что бэкенд разработчики были не в курсе всего происходящего, и что бэкенд не способен сейчас поддерживать ваше ML-решение?
Или что ваше мега-решение по рекомендациям фильмов с precision@5 = 90% (что вы и оптимизировали) вдруг окажется не слишком хорошим, потому что дизайнеры нарисовали карточку рекомендаций с всего 2 фильмами вместо ожидаемых вами 5?
3. Помогает формировать гипотезы ДО начала разработки
Как же много ML-моделей не доходит до прода, потому что оказываются ненужными конечному пользователю. Поэтому важно собрать всех вместе и понять, на какие метрики мы должны влияеть (продакт), в какие точки продукта стоит приложить усилия (тут помогут аналитики), каким должен быть дизайн и еще бы проверить это все хотя бы на UX-макетах
Пример
Непопсовая классика: вы вырастили конверсию из показа блока "Похожие товары" в заказ на 20%! Ну круто же! Но этими рекомендациями пользуются <1% пользователей, потому что они расположены на далеееком и никому неизвестном экране приложения
4. Помогает формировать бэклог "широкой" команды проекта
Не нуждается в представлении, поэтому сразу:
Пример
Сформировать бэклог всех вовлеченных супер важно, иначе вы можете выкатить свой мега крутой ML-микросервис, но бэк сможет с ним интегрироваться через 2 месяца, а фронты отрисовать - через 3
5. И еще бесконечно много вещей!
Цените ваших продактов - они решают миллион маленьких сложностей, о которы вы даже не догадываетесь. Неплохой список таких сложностей/рисков можно почитать вот тут
Много кто спрашивал в комментариях к прошлым постам об этом. Поэтому решил сделать отдельный пост на эту тему
Вообще, ML product manager - довольно редкий человек на рынке, особенно в России. И я очень рад, что мне с такими продактами удалось поработать. Сразу оговорюсь, что я в основном встречал продакт менеджеров, которые выполняют сразу 2 роли: продакта и проджекта (то есть формируют видение продукта и помогают вести проект) - дальше речь пойдет именно о таких людях. Итак, что же делает ML product manager?
1. Формирует бизнес-требования к ML-модели
В общем-то это тот человек, который должен разобраться, на какую бизнес-метрику мы хотим повлиять ML-проектом, и какие есть ограничения
Пример
Классика: вы оптимизировали в рекомендациях кол-во кликов (оно даже и в А/В выросло!), но что-то бизнес не очень рад: ведь заказы упали
2. Собирает всех вовлеченных в проект
Если вы думаете, что "все вовлеченные" - это data scientist, data engineer и еще пара data-***, то вы глубоко ошибаетесь)
Внезапно, практически на любой ML-проект нужны:
- Классические бэк/фронт разработчики
- UX-рисерчеры, чтобы хотя бы на макетах финального продукта (спойлер: это НЕ ml-модель) понять, нужно ли пользователям именно это
- Дизайнеры, чтобы нарисовать эти макеты и финальный продукт
- Аналитики, которые помогут найти "слабые места" в продукте, где будет больше всего выхлопа от ML
- Список может продолжиться еще дальше
Примеры
Согласитесь, будет неприятно узнать на этапе выкатки в прод, что бэкенд разработчики были не в курсе всего происходящего, и что бэкенд не способен сейчас поддерживать ваше ML-решение?
Или что ваше мега-решение по рекомендациям фильмов с precision@5 = 90% (что вы и оптимизировали) вдруг окажется не слишком хорошим, потому что дизайнеры нарисовали карточку рекомендаций с всего 2 фильмами вместо ожидаемых вами 5?
3. Помогает формировать гипотезы ДО начала разработки
Как же много ML-моделей не доходит до прода, потому что оказываются ненужными конечному пользователю. Поэтому важно собрать всех вместе и понять, на какие метрики мы должны влияеть (продакт), в какие точки продукта стоит приложить усилия (тут помогут аналитики), каким должен быть дизайн и еще бы проверить это все хотя бы на UX-макетах
Пример
Непопсовая классика: вы вырастили конверсию из показа блока "Похожие товары" в заказ на 20%! Ну круто же! Но этими рекомендациями пользуются <1% пользователей, потому что они расположены на далеееком и никому неизвестном экране приложения
4. Помогает формировать бэклог "широкой" команды проекта
Не нуждается в представлении, поэтому сразу:
Пример
Сформировать бэклог всех вовлеченных супер важно, иначе вы можете выкатить свой мега крутой ML-микросервис, но бэк сможет с ним интегрироваться через 2 месяца, а фронты отрисовать - через 3
5. И еще бесконечно много вещей!
Цените ваших продактов - они решают миллион маленьких сложностей, о которы вы даже не догадываетесь. Неплохой список таких сложностей/рисков можно почитать вот тут
skillsetter.io
Риски проекта: анализ, оценка и стратегии управления
Разбираем виды рисков и выбираем стратегии управления.
ML for Value / Ваня Максимов pinned «Зачем нужен продакт менеджер в ML-проектах? Много кто спрашивал в комментариях к прошлым постам об этом. Поэтому решил сделать отдельный пост на эту тему Вообще, ML product manager - довольно редкий человек на рынке, особенно в России. И я очень рад, что…»