ML for Value / Ваня Максимов @ml4value Channel on Telegram

ML for Value / Ваня Максимов

@ml4value


Про путь от ML-модели до Value для компании. На задачах RecSys, Pricing, Time Series и A/B

Ваня Максимов, @Ivan_maksimov
Head of Applied Research, Recsys @ Wildberries, ex-Yandex, ex-Delivery Club, ex-PwC
Консультирую компании, веду курсы по DS

ML for Value / Ваня Максимов (Russian)

В поисках современных решений в области машинного обучения для увеличения ценности вашего бизнеса? Тогда канал "ML for Value / Ваня Максимов" (@ml4value) станет вашим незаменимым помощником. nnЭтот канал посвящен пути от построения ML-модели до достижения ценности для вашей компании. Здесь вы найдете информацию и рекомендации по таким задачам, как RecSys, Pricing, Time Series и A/B тестирование. И все это представлено экспертом в области, Ваней Максимовым (@Ivan_maksimov). nnВаня Максимов - руководитель по прикладным исследованиям в Recsys @ Wildberries, который работал ранее в таких известных компаниях, как Yandex, Delivery Club и PwC. Он консультирует компании и ведет курсы по Data Science, делая акцент на применении ML-технологий для достижения ценности в бизнесе. nnПрисоединяйтесь к каналу "ML for Value / Ваня Максимов" прямо сейчас, чтобы узнать последние тенденции и лучшие практики в области машинного обучения, которые помогут вам повысить эффективность вашего бизнеса и добиться новых высот в развитии!

ML for Value / Ваня Максимов

15 Nov, 06:19


Мой топ-10 проблем с рекомендательными системами. Часть 1/4: Junior

По следам классного поста о топ-10 моделях в рек системах. Когда вы их выучите и внедрите, то 100% столкнетесь с проблемами
То, какие проблемы вы заметите и качественно решите, часто и определяет уровень синьерности. Поехали!

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

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

Решается очень по-разному: обучением отдельных моделей под сегменты пользователей, фичами в ранжирующем бустинге, костылями на проде - придется быть креативным 😇

2. Почти дубли + Низкое разнообразие
99% моделей оценивают некий скор релевантности товара пользователю. Часто очень похожие товары примерно одинаково релевантны, поэтому могут забить весь топ рекомендаций. Например, разные версии айфонов

Решается продуктово склейкой почти одинаковых товаров в одну карточку товара и на уровне ранжирования учетом разнообразия через DPP / MMR. Есть и более современные подходы: наиболее близки к этой теме multi-interest learning, listwise ranking

3. Кликбейт
Принимает разные формы:
- Слишком дешевые товары
- Слишком дорогие товары (золотой айфон за 1 млн)
- Кричащие заголовки / картинки (Напиток для похудения за 3 дня, курсы по ML с нуля до миддла за 3 месяца )
- Фрод продавцов или создателей контента (Фейковые отзывы, самовыкупы, циклические короткие видео)
- И еще добрая сотня вариантов

В основном борятся с кликбейтом аккуратным выбором таргета (вместо кликов использовать только долгие клики, например) и фильтрацией отдельных товаров/продавцов/тем по рейтингу, CTR и продуктовым свойствам

А как бы вы решали эти 3 проблемы?)

ML for Value / Ваня Максимов

29 Sep, 09:55


Сегодня я на конфе E-Code

Планирую послушать все про рекомендации и поиск) Если хотите встретиться - напишите в комменты: давайте попробуем пересечься 🙃

ML for Value / Ваня Максимов

24 Sep, 10:00


Где искать работу зарубежом?

Международные стартапы с русскоговорящими фаундерами или командами – один из эффективных способов получить оффер за рубежом сейчас.

Вакансии именно в таких компаниях собирают ребята в канале Dev & ML Jobs за рубежом, а также делятся прямыми контактами HR для отклика.
Как результат – уже десятки читателей получили офферы в Neon, InDrive, 1inch, Wheely и др.

Несколько актуальных вакансий:
– Data Scientist в Easybrain (Кипр, помогают с релокацией)
– Senior ML Engineer в Fluently AI, $5000 - $10 000 в месяц (remote)
– Data Scientist (Finance Infrastructure) в MoonPay (Португалия, Испания, Польша)
– Middle ML Engineer в Mayflower (Кипр, помогают с релокацией)

💙Подписывайтесь и развивайте карьеру в будущем единороге!

ML for Value / Ваня Максимов

08 Sep, 16:05


Немного о личном

Завершаю летний сезон победой на теннисном турнире Amatour masters и 28 строчкой в рейтинге полу-про в России 🎾 🏆

Чтобы попасть в топ-30, я выиграл всего лишь 55% геймов! Для сравнения (немножко нечестного, но все же) легенда тенниса и долгое время 1-ая ракетка мира Роджер Федерер выиграл 58% геймов в своей карьере

В общем, помните, что даже если вы допускаете просто кучу неудач, то вы все равно можете быть топ-1. Учитесь на ошибках и не унывайте!)

Ну а еще, вся жизнь - это numbers game, где +1% успешности может кратно улучшить ваши позиции

P.S. Вот бы мне +3% выигранных геймов, чтобы сравняться с Федерером 😇

ML for Value / Ваня Максимов

21 Aug, 16:32


Как растить деньги и ронять менять продуктовые метрики ч.2

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

Если чуть преувеличить, то принимается решение «давайте решать проблемы пользователя - деньги сами придут». А они не приходят 🥲

Тут фишка в том, что хорошие прокси-метрики денег придумать даже один раз сложно, при этом они еще и эволюционировать должны!

Вот кто б заранее знал, что зумеры будут искать мероприятия в тик токе? Или что в «утилитарном» поиске Гугла люди могут искать вдохновение (этот рынок как раз отжал Pinterest у Гугл)

В нашем кейсе с игрушками Гарри и книгами других серий по запросу «Книга Гарри Поттер» я бы предложил за целевые брать около-дегежные метрики страницы поиска: конверсию в клик/заказ и средний чек. И пробовать подбирать для них несколько прокси: точная текстовая релевантность поиска, попадание в широкую категорию поискового запроса, разнообразие и тп

В продукте это может выглядеть так (и вы много где это встретите):
- Первые 10 позиций идет обычная поисковая выдача. А чем дальше, тем больше exploration/discovery
- Горизонтальный блок с результатами query expansion (поиск по более широкому запросу): в целом похожие фэнтези книги
- Еще 5 позиций из поисковой выдачи
- Горизонтальный блок сопутствующих товаров: игрушки Гарри
- Еще 10 позиций
- Блок в целом популярных товаров (если за 25 позиций ничего не нашлось, то дальше вряд ли листают)

Такие дела 😇

ML for Value / Ваня Максимов

16 Aug, 15:17


Как растить деньги и ронять продуктовые метрики 😐

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

Представьте, что вы улучшаете Поиск. У него есть продуктовая метрика «поисковой релевантности» - насколько найденный товар соответствует поисковому запросу. Ее можно посчитать через асессоров (и еще парой способов)

С точки зрения поисковой релевантности на запрос «Книга Гарри Поттер» очевидно нужно выдавать книги о Гарри Поттере. И чем точнее мы их находим, тем больше денег зарабатываем. Или нет? 💣

Представьте, что топ-4 результата поиска - и правда книги о Гарри. А потом частенько попадаются игрушки/диски/постеры из вселенной Поттера. И люди из запроса про книгу покупают детские игрушки! Деньги растут, а поисковая релевантность нервно курит в сторонке 🥲

Похожий кейс, когда с ~10 позиции появляются книги других серий, которые похожи на Поттериану

Следующим постом напишу, как я считаю, нужно решать такие кейсы. А что думаете вы? Пишите в комменты ⬇️

ML for Value / Ваня Максимов

21 Jul, 09:59


Пост про спрос ч.2

В первой части я разобрал проблему с сезонностью внутри дни и закинул удочку про распределение Пуассона.

2. Чертов Пуассон - продолжение
Напомню, в чем основная проблема: Если за 1/4 дня продали 1 штуку товара и он кончился - это не означает, что за весь день продали бы 4 штуки. Из-за длинного хвоста распределния Пуассона эта 1 штука могла быть продана просто случайно

Чтобы это побороть можно использовать среднее спроса за последние несколько дней и ограничивать восстановленный спрос, скажем, средним +2 std. На практике работают и дугие эвристики - предлагаю вам их придумать самим:)

Общая формула спроса = MIN(sales / weigted_OSA; avg_demand + 2 std)

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

Это крупная проблема, которая может ломать всю логику заказа товаров в больших масштабах. Поэтому проверяйте, что на уровне категорий нет корреляции наполняемости (OSA) и спроса. Корреляции не должно быть из определения спроса: Спрос - обьем продаж при 100% наполняемости

FAQ
Почему нельзя обучать прогноз спроса только на днях с наполняемоcтью (OSA) = 100%?
- Можно, но только осторожно. Такой подход неизбежно ведет к проблемам из-за пропусков во временном ряду: классические методы ARIMA / Prophet плохо с ними работают, агрегаты за N дней плохо считаются, можно накосячить с внутринедельной сезонностью

Почему нельзя просто восстанавливать спрос значением прошлого дня?
- Восстановить можно, но тогда вы потеряете "особую" динамику спроса. Товар ведь заканчивается не случайно: началось промо, праздник, настала жара, что-то еще. Без знания настоящего таргета спроса в прошлом будет довольно сложно выучить эти зависимости в модели


Правильно определить таргет (спрос) в прошлом - чуть ли не половина успеха в прогноза спроса на будущее. Так что будьте внимательны 😉

Канал @ml4value
#timeseries #demand

ML for Value / Ваня Максимов

03 Jul, 16:06


📱 RecSys каналы, обьединяйтесь!

Собрали папку с самыми интересными и полезными каналами, в которых пишут про RecSys

Часть каналов делают обзоры статей по RecSys, другие - пишут про новости, новинки индустрии и многое другое

➡️ Присоединяйтесь, чтобы не пропустить ничего важного!

ML for Value / Ваня Максимов

03 Jul, 06:52


Запрос про спрос

На прошлой неделе словил вьетнамский флешбек: однажды из-за моей ошибки в алгоритме списали фуру мяса в Ростове 🥩

А вспомнил я про это, потому что меня аж 4 раза спросили про задачу восстановления спроса. Или как считать спрос на товар, если его не было в наличии весь день? Это немного необычная задача backcasting - восстановление данных в прошлом:

Вчера к 12 дня продали 1 штуку товара - товар кончился. Какой был бы спрос за вчера, если бы товар был в наличии весь день?

99% решений этой задачи заканчиваются примерно так:
Товар продавался с 8 утра до 12, а не было его с 13 до 23. Получается он был в наличии 4 часа из 16 = 25% времени (этот показатель в ритейле называют OSA - on shelf availability). Раз за 25% дня продали 1 штуку товара, то за весь день продали бы 1 / 0.25 = 4 штуки.
Профит, задача решена!

Общая формула спроса = sales / OSA

Логика c OSA проста и элегантна, но у нее есть 3 проблемы - давайте разбираться

1. Сезонность внутри дня
Расчет выше неявно предполагает, что спрос равномерно распределен внутри дня. Но это не так:
- Есть "часы пик" в районе обеда и вечером
- Некоторые товары чаще продаются утром (кофе)

Поэтому надо знать распределение спроса внутри дня и взвешивать формулу на него. Обычно вес добавляют к OSA: 1 час наличия кофе утром имеет бОльший вес, чем 1 час вечером
Общая формула спроса = sales / weigted_OSA

2. Чертов Пуассон

Все было бы хорошо, если бы спрос не был распределен по Пуассону - с длииииным хвостом продаж при низком мат ожидании
В нашем же примере про 1 продажу с 8 до 12 утра есть немаленький риск (спойлер - его можно посчитать!), что мат ожидание спроса за день = 1, но эта 1 штука просто случайно выпала на первую половину дня. И мы резко завысили спрос за день в 4 раза. Глобально формула выше всегда в среднем завышает спрос. Чем меньше средние продажи товара, тем больше ошибка

Казалось бы, может и не так страшно? Товар же непопулярный. Но непопулярных товаров много (пусть 50%). И если вы для 50% товаров завышаете спрос в несколько раз - это крупная проблема. Крупная, как фура с мясом: да-да, в Ростове ее списали ровно из-за этого…
Но проблема решаемая! Об этом и 3-ей проблеме в следующей серии

To be continued..

Канал @ml4value
#timeseries #demand

ML for Value / Ваня Максимов

14 Jun, 06:32


➡️ Навигация по каналу v2

На связи Ваня Максимов @Ivan_maksimov - Head of RecSys R&D в Wildberries, 8+ лет в DS

Пишу алгоритмы рекомендаций тех самых кроссовок nike на WB, которые дешевле оригинала в 2 раза.. но почти такие же качественные 😇
Если посерьезнее, то исследую и внедряю новые алгоритмы рекомендаций товаров на WB. До этого построил с нуля все рекомендации в Delivery Club

Еще активно зарабатывал деньги для компаний классическим ML: оптимизация промо-акций, автоматический заказ товаров на склады, планирование смен курьеров. Ну и конечно А/В тестировал все это дело! Довелось даже построить 2 платформы А/В: в Delivery Club и Лавке

В канале пишу о том, как преодолеть путь от ML модели до реального Value для бизнеса. И какие грабли я собрал на этом пути

👍 Самые залайканные / обсуждаемые посты с хэштегами
- 13 способов ускорить АВ тест или “не CUPED-ом единым” #ab
- Отсортируй товары “по популярности” - делов на 30 минут! Стой, а почему 3 спринта? #recsys
- 70% фейлят ML system design собеседование #hiring #system_design
- Что тебя ждет при переходе team lead —> head of ML #hiring
- Серия про оптимизацию цен на товары #pricing
- Серия постов о метриках регрессии: от RMSE до WAPE и SMAPE #timeseries
- Какая трансформация фичи влияет на перформанс CatBoost? Спойлер: log(x) - влияет! #timeseries

💡Написать мне: @Ivan_maksimov
Можно позвать меня рассказать что-то интересное на конференции или в вашей компании, обсудить занятную ml-задачу, или проконсультироваться на счет ml-проекта

ML for Value / Ваня Максимов

13 Jun, 07:15


Когда знал, что #recsys - горячая тема, но не подозревал, насколько...

ML for Value / Ваня Максимов

09 Jun, 08:55


Как собрать красные флаги на собесах

🚩Fake it till you make it: Расскажите, как строили NLP-модели с нуля, даже если не помните разницу BERT и GPT

🚩Никому не важны результаты в денежных метриках - просто расскажите, с какими библиотеками вы работали

🚩Включите достижения команды, отдела и Илона Маска в ваши личные - в какой-то мере вы же с ними связаны!)

🚩Для стажеров: Обязательно пишите время обучения на доп курсе, как отдельное место работы. Ваш pet-проект / GitHub никто не посмотрит, а вот полгода учебы на курсе - это ж, считай, год опыта работы 📈

🚩На вопрос "Как бы вы сделали поиск?" сразу расскажите про GPT и RAG: кому нужны эти полнотекстовые бейзлайны и bm25?

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

P.S. К сожалению, все кейсы реальные. Будьте бдительны)

#hiring #ml
тг-канал @ml4value

ML for Value / Ваня Максимов

07 Jun, 07:28


Прикольные товары или Serendipity

Считается, что пользователям стоит рекомендовать необычные товары, которые их «удивят» (придумали даже термин serendipity). Это в теории растит удовлетворенность сервисом и заставляет раз за разом возвращаться - растет retention и выручка в долгосроке

Есть разные вариации метрики serendipity. Например, можно считать «необычным» товар, если мы его рекомендуем юзеру Х, товар ему релевантен, при этом всем остальным его рекомендуем редко

Но иногда попадаются настоящие товары-шедевры. Как думаете, какой метрикой можно отловить подобную «необычную» рекомендацию? 😅

ML for Value / Ваня Максимов

02 Jun, 08:41


Гиганты индустрии учат зарабатывать деньги на рекомендациях 💸

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

Гиганты индустрии (Netflix, Pintereset, Alibaba, Amazon, Google, ...) уже настолько большие, что им разумно вкладываться в оптимизацию метрик второго порядка:
- Более дешевое обучение моделей: экономит им миллионы на инфраструктуре
- Рост "справедливости" рекомендаций: продвижение нового / узкоспециализированного контента
- Счастье авторов и другое

Напрямую про существенный рост денег они пишут редко (из-за NDA в том числе), но бывают приятные исключения!

Трансформеры в персональных рекомендациях - PinnerFormer (Pinterest)
Если внимательно приглядеться, то они завели не более традиционные SASRec / BERT4Rec, а довольно близкий к реалиям трансформер: Предсказывают все действия пользователя за следующие 28 дней. Это лучше коррелирует с результатами А/В и помогает растить разнообразие

Похожие товары на графах - Billion scale commodity embeddings (Alibaba)
Показывали еще в 2018 году, что графы рулят!) Ну и что в них можно впихнуть любую информацию о товарах: рейтинги, цены и тп - это тоже помогает

В общем, моя рейкомендасьон к прочтению 🧐

тг-канал @ml4value
#ml #graph #recsys

ML for Value / Ваня Максимов

26 May, 10:25


Хайлайты DataFest: RecSys

Послушал все доклады на вчерашнем datafest, с частью спикеров пообщались в кулуарах — сформировал несколько хайлайтов в индустриальном recsys

💡В академических статьях много скама
- Игрушечные датасеты
- Лики в валидации
- Неправильные метрики

Имхо, самая большая проблема еще в том, что все соревнуются в end-to-end рекомендациях одной моделью. А реальные продакшен системы многостадийные + на первом этапе делается union нескольких моделей. Поэтому надо делать модели с разными рекомендациями (растить union метрики), а не соревноваться, какая из 10 +- одинаковых побеждает на 2%

💡Трансформеры уже везде, но есть нюанс
Open source реализации часто работают хуже статей и страдают от багов. Все спикеры писали SasRec/Bert4Rec с нуля

В WB, кстати, тоже самописный ALBERT4Rec

💡Рекомендации категорий, а не товаров
Зачастую сложно угадать, какой товар понравится пользователю - давайте угадаем хотя бы категорию (моторные лодки, сообщество про котиков и тп)

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

Тг-канал @ml4value
#recsys

ML for Value / Ваня Максимов

25 May, 08:54


DataFest 2024: RecSys

Неожиданно для себя вернулся в Москву сегодня в 2 ночи и …успел на оффлайн день DataFest в VK!)

До 18 буду в основном зале слушать доклады по RecSys. Если у вас есть желание пообщаться на больших перерывах
14:30-15:30, 17:00-18:00, пишите в комменты - постараемся встретиться 🙂

ML for Value / Ваня Максимов

20 May, 07:04


70% фейлят ML System design 😱

За последние пару месяцев я провел 20+ ml system design собеседований.
~70% кандидатов после него оценил на грейд ниже ожиданий / неподходящие к вакансии (но Ок на другие) / no hire
Дам несколько советов, как можно улучшить результаты на таких собесах 🚀

У вас будет +- 40 минут на дизайн всей системы:
- Понять бизнес-проблему
- Сформулировать, зачем мы ее решаем + на какие бизнес-метрики влияем
- Перевести все это в ML-задачу
- Определить X, y
- Не забыть про loss и ml metrics (часто это разные вещи)
- Рассказать про алгоритм
- Способ валидации
- Обсудить, как катить все это дело в прод
- Проведение А/В
- Выкатка на 100%, мониторинг в проде и пару слов о дальнейшем развитии

1. Потренируйся хотя бы 2-3 раза
Как видите, пунктов много. Забыли хотя бы один - огромный минус. Потренируйтесь проходить такой тип собесов
У меня был кандидат, который пришел на ML system design, но даже не погуглил, что это - конечно это был фейл 🥲

2. Используйте Miro / draw.io
Если вы рисуете хорошую схему архитектуры, то становится в разы понятнее + вы точно не забудете детали. Но опять же, потренируйтесь рисовать схемы - иначе вы просто будете терять время на рисование непонятных квадратиков

3. Расскажите бейзлайн подробно, SOTA - кратко
Цель собеса - сделать рабочее решение. Показать свои знания SOTA - важно, но вторично. Поэтому сначала сделайте бейзлайн-решение со всеми пунктами выше, кратко упоминая как можно его улучшить. Останется время - в конце вернетесь к пункту Х и расскажете подробнее про SOTA

Хорошо: В бейзлайн версии переводим текстовое название и описание товара в вектор предобученным FastText. Потом можно потестировать файнтюн BERT / E5 / your_fancy_model
Плохо: Переводим текстовое описание в вектор через GPT-4о

В плохом варианте сразу возникнут вопросы, на которые вы НЕ успеете ответить: Как же стоимость api? как на проде это будет работать? что с перс данными? а кандидат точно знает, как работает gpt? и тд. Даже если вы знаете ответы - можете не успеть их рассказать, и впечатление будет смазанным

4. Простой как пробка продакшен
Вы даже не представляете, сколько кандидатов посыпалось на дизайне real-time рекомендаций, потому что это правда сложно
Если можете задизайнить batch-предикт для продакшена раз в ночь - сделайте лучше так. Останется время - попробуете вместо рассказа про SOTA прикинуть, как можно делать batch-предикт раз в пару минут или real-time

5. Не забывайте, что вы решаете бизнес-проблему
Очень легко в задаче "Удержания клиента" закончить на дизайне классификатора оттока. Проблема в том, что сам классификатор проблему не решает 🧠
Нужно еще поверх него накрутить логику push-рассылок с промокодами, понять издержки на них, выбрать оптимальную скидку и много всего вот этого бизнесового. Хорошо расскажете про бизнес - почти гарантированно получите +1 грейд

Прочитали? Вспомните п.1 и потренируйтесь -- решите хотя бы в 5-минутном MVP варианте дизайн для "Матчинг товаров нашего маркетплейса с маркетплейсом-конкурентом для прайсинга: Хотим ставить цены не дороже конкурента". Готов после ответов в комментариях накидать каверзные вопросы ⬇️

тг-канал @ml4value
#ml_design #ml

ML for Value / Ваня Максимов

20 Apr, 09:46


Пропасть между middle и senior в России растет

По калькулятору зарплат хабр карьеры за 2-ю половину 2023 медианная зп ML-специалистов в Москве выросла:
+20% (290к --> 360к) у Senior
+4% (210к --> 220к) у Middle

Из имхо наблюдений достаточно много висит вакансий senior с вилками 300-450к в крупнейших (топ-20) компаниях на рынке
То есть в теории с переходом из middle средней компании на senior в топ-20 компаний, можно увеличить зп в 1.5-2 раза 😱

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

- Всех Senior людей (которых немного) пробуют схантить топ-20 компаний или же синьеры устраиваются зарубеж

- Возможно, в России острая нехватка Senior мл-щиков и переизбыток Middle. Если год-два назад все говорили, что слишком много junior, то сейчас они уже стали миддлами. При этом вряд ли это касается крепких middle+

- От Senior уже ждут понимания доменной области: nlp/cv/таблички, особенности ритейл/банковской/... индустрий, чтобы приносить деньги компании сразу после выхода

А вы что думаете на этот счет? Пишите в комменты ⬇️
@ml4value