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
Статистика и котики теннис

Давние читатели канала знают, что я играю в теннис и иногда про него пишу) В воскресенье занял 2 место на amatour masters 200. По ходу 5 матчей задумывался, какая стратегия с наибольшей вероятностью приведет к успеху. И у меня возник ворох статистических задач - хоть на собесах спрашивай

🎾 Задача про подачу
У теннисиста есть 2 попытки на подаче. Он может в любую из них применить «Стабильную» подачу с вероятностью попадания 85%. Или «Мощную» с вероятностью попадания 60%

Стабильная - просто начинает розыгрыш, где теннисист может выиграть с вероятностью 54%. Мощная - увеличивает вероятность выигрыша на 5%. Если теннисист ошибается на подаче 2 раза, то он проигрывает

Собственно, вопросы:
- Какие подачи подавать? Стабильная-Стабильная, Мощная-Стабильная, …
- Начиная с какого % попадания Мощной и Стабильной, вообще выгодно подавать хотя бы одну Мощную?
- Какой параметр (% попадания мощной/стабильной, прирост вероятности победы от мощной, в целом % выигранных мячей после подачи) стоит тренировать?

Ах да, все цифры - моя статистика игры. И это реальные вопросы, над которыми я думаю. В суровом мире тенниса все чуть сложнее: в финале мне не хватило физухи и случился дебафф -10% ко всем характеристикам. Кстати, как бы это повлияло на ответы в задаче?)

Можете писать ответы в комментарии ⬇️
👍24🔥174🙈2
Врываюсь с новостями

Пока все отдыхали на майских, я готовился сразу к двум конференциям (ну ладно, немножко отдыхал тоже)

Буду выступать
- Уже 17 мая на IML в Питере
- 25 мая на DataFest в Москве

🧐 Расскажу про рекомендации Я.Маркета: архитектура, ml- и бизнес-метрики и даже немножко про трансформеры - приходите, будет интересно!

Ну и если хотите лично встретиться в кулуарах - пишите, пересечемся)
👍34🔥136
3 инсайта про реком системы с IML

Пару дней назад рассказал про рекомендации Я.Маркета на конфе IML. А еще послушал доклады и поговорил в кулуарах с ребятами из Окко, Headhunter, Авито, Ламода и не только. Вот какие инсайты я вынес

1. Все начинают работать с контентом в рекомендациях
Массово переходят от моделей на id-товаров/юзеров к контентными трансформерами над историей пользователя. Это сильно лучше масштабируется, помогает идти в real-time и рекомендовать товары из "длинного хвоста"

2. Контента стало гораздо больше
Платформы достигли 10М+ контентых единиц (товаров, документов, рилсов, ...)
Приходится строить действительно большие системы, да еще и в real-time

При этом нужно рекомендовать желательно весь контент, и тут начинается борьба с popularity bias и работа с холодным стартом для контента: нужно рекомендовать не самые популярные и холодные товары

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

3. Реклама и продвижение
Контента много и все контент-мейкеры хотят получать свой кусочек траффика. Но конкуренция растет: по многим отчетам ~80% селлеров на маркетплейсах зарабатывают чистыми <100K в мес, цена подписчика в соцсетях в космосе (в тг 100-150 руб/подписчик). Появилась явная потребность в механиках продвижения контента и запрос на "честное" распределение показов (условно, каждый получает хотя бы 10 показов)

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

↕️ Очень верится, что в ближайшем будущем парадигма рекомедаций сдвинется в сторону комбинаторики, а не просто ранжированию списка

P.S. Официальных фоток и записей с конференции пока нет, поэтому вот вам 1 фотка доклада от меня и немножко питерского вайба
🔥30👍9🤔32👌1
Конференции

Часть моего доклада на Data Fest заблокировал PR. Рассказывать важные куски общими словами мне не хотелось, поэтому решил сняться с конференции(

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

🧐 В итоге, я буду слушателем на Data Fest - ждите интересных саммери и инсайтов
35😱28😢13🤣12👍6
Милиарды параметров и данных для рекомендаций

Пожалуй, самая большая новость в российском мире рекомендаций -- анонс от Яндекса просто огромной трансформерной модели ARGUS-1В и настолько же огромного датасета рекомендаций Я.Музыки YAMBDA-5B. Об этом еще мало где писали, но тем интереснее сделать разбор:)

Датасет Я.Музыки YAMBDA-5B
Типичные проблемы рисерча в рекомендациях и сравнения моделей:
- Датасеты очень маленькие (в сотни-тысячи раз меньше продакшн данных)
- В данных нет последовательностей (даже в movielens!). Поэтому трансформеры так себе под них подходят
- Нет метаданных/признаков айтемов и юзеров (а в продакшен задачах есть)

Ребята попробовали решить это в YAMBDA. Почти 5B событий, около 1М айтемов, есть время события для моделирования последовательности треков (а такая зависимость явно есть). Плюсом идут готовые эмбеды и фичи. Из небольших минусов: нет названий треков и человекочитаемых метаданных. Но это NDA, так что понятно, почему

В общем, в следующий раз вместо Movielens или Amazon reviews вы знаете, какой датасет взять


Рекомендательный трансформер ARGUS-1B
Кажется, не все распарсили, что доклад про ARGUS на датафесте во многом базировался на YAMBDA-подобном датасете. Так что датасет и модель полезно рассматривать в паре

Так что за ARGUS? Насколько я знаю, первый в РФ рекомендательный трансформер с контекстным окном 8К и размером 1В параметров. Из крутого:

- Таргеты Next item + Feedback prediction. То есть модель предсказывает, с каким треком провзаимодействует пользователь, и какой фидбек ему даст (дослушал до конца, лайкнул, ..). Вообще-то это сразу и отбор кандидатов, и ранжирование - ну кайф же 🔥

- Достаточно подробно рассказали архитектуру: позднее связывание, кодирование товара через DCN, трансформеры

- Намекнули, как все-таки удалось масштабироваться до 8К действий юзера в контексте трансформера: берем последовательность действий юзера, сдвигаем на одно действие. Одним проходом трансформера получаем эмбеды во всех стейтах. Далее эффективен считаем лосс. Очень похоже на BERT/GPT-подобные "эффективности" архитектуры в NLP, но в рекоме мало кто смог завести

- В итоге, от ARGUS получили колоссальные приросты в продакшене Музыки и Алисы. Ну и мы в Я.Маркете тоже тестим Argus: ожидаем не менее колоссальных приростов)

Разбор подготовил тг-канал @ml4value
🔥3510👍7
Глянцевый журнал рекомендаций

Какое-то время назад были популярны журналы моды, тачек и всего прочего. Там собраны красивые картинки, которые дополняют друг друга. И смотрится все это как единое целое

Казалось бы, рекомендации товаров в приложении устроены также? А вот ни разу. Обычно мы скорим каждый товар независимо, поэтому все рекомендации могут состоять условно только из кроссовок. Чтобы такого не случалось, добавляются эвристики разнообразия

🩼 Иногда костыли эвристики простые типа «не более 5 товаров из одной категории». Иногда это ml-эвристики как у Авито: ребята сделали занятный рассказ про замену статистической эвристики разнообразия на ml-эвристику предсказания будущей категории покупки (см скрины)

Но все же мы не собираем рекомендации «как журнал». Не прогнозируем скор сразу всей пачки рекомендаций из 10 товаров, а очень хочется. Формально, это переход от pointwise/pairwise к listwise лоссу. Есть острое желание потестить это в проде и даже есть пара наработок. Придется бороться с комбинаторным взрывом, учиться учитывать «полезность» сразу пачки рекомендаций и многое
другое!

И вот стало интересно, может кто-то уже пробовал listwise подход в рекоме/поиске? Или есть идеи/рисерчи на этот счет? Буду рад услышать ваши мысли в комментариях ⬇️
13👍11🔥62👎1
AB платформа X5 - reverse engineering

Периодически слежу за развитием подходов А/В в индустрии. За год вышло немало статей от Х5 про их АВ-плафторму + наткнулся на новость, что ее проверили на ФКН Вышки и подвтердили, что все валидно. Тех репортов нет, но кто мне помешает сделать reverse engineering этой АВ платформы по статьям Х5 с Хабра?)

Отправная точка - 2019г
Была подробная статья про А/В экспы Х5 в оффлайне на 15к магазинах

Если я все верно понял, то 5 лет назад все работало так:
1. Сэмплируем контрольную группу из K магазинов
2. К каждому контрольному магазину подбираем 1 наиболее похожий тестовый магазин по фичам на предтестовом периоде
3. Проводим А/В
4. Применяем методы снижения дисперсии (почему-то сюда вписана и линеаризация, ну да ладно)
5. Применяем стандартный Т-тест

После этого было довольно много статей на Хабре - так давайте обьединим их в одну картинку


А/В плафторма X5 на 2025г из этих разрозненных кусочков на Хабре (сугубое имхо)!

1. Статистический фильтр
В оффлайне маленькое кол-во данных (15-30к магазинов) - это огромная проблема. Приходится выстраивать очередь экспов. Логичная идея: давайте сначала проверять на исторических данных, можно ли вообще ожидать эффект от фичи? Если да, то только тогда зпускать АВ. Как я понял, способ такой проверки у Х5 эволюционировал от diff-in-diff до поиска коинтеграции временных рядов через эконометрические VECM модели (мое бакалаврское прошлое ликует 🔥). В общем случае VECM-модель - это хиттрая линейная регрессия на временных рядах, которую можно посчитать и на исторических данных без АВ, и потом уже в самом АВ для снижения дисперсии

2. Разбиение магазинов
Видимо осталось тем же, что и в 2019-ом: К каждому контрольному магазину подбираем 1 наиболее похожий тестовый

3. Проводим сам А/В

4. Снижение дисперсии через линейную регрессию
Когда-то в своем видео "13 способов ускорить А/В тест: не CUPED-ом единым" я и сам рассказывал, что все методы ускорения А/В сводятся к линейной регрессии. Похоже, этот подход и внедрен в Х5

5. Т-тест: все еще один в поле воин!)
Была просто куча статей про плюсы/минусы разных стат критериев. Чем плох баес, можно ли заменить t-test на welch test, как поживает манн-уитни. Но из этих статей я делаю вывод, что T-test все еще держится по совокупности плюсов и минусов

6. Мета-анализ
Тут начинается кое-что занятное) Часто одна команда проводит за квартал серию экспов на улучшение одной и той же метрики. Хорошо бы понять, а какой прирост метрики был в сумме от всех внедрений? Спойлер - это часто сильно меньше суммы каждого отдельного внедрения. Есть разные способы делать такой подсчет. Сразу несколько статей про мета-анализ наводит на мысль, что Х5 живет инвестиционными циклами в квартал-полгода. И на самом деле важны не сами зеленые А/В, а суммарные эффект от команды/продукта за период. Такой подход одобряем

Если вы из Х5 и готовы сказать, в чем я прав, а в чем - нет, то welcome в комментарии ⬇️

// Reverse engineering AB плафтормы X5 подготовил тг-канал @ml4value
20👍15🔥10👎2
Выбрать цену и не прогореть: Юнит экономика, ч1

В России и мире некоторый кризис, поэтому опять актуальна эффективность бизнеса. Ну и куда же в ней без оптимизации цен?
Обычно мы хотим больше прибыли за счет оптимальных цен. В более продвинутых кейсах не только прибили, а баланса выручка-прибыль, но об этом в следующий раз

Прибыль = прогноз спроса * (цена - издержки) —> max

Про прогноз спроса (он, кстати, зависит от цены) я уже рассказывал на pml и писал (раз, два). Цену мы выбираем сами. Для решения задачи осталось посчитать издержки, но они вроде же известны? Закупочная цена товара есть во всех ERP-системах

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

UE, unit economics - цена за вычетом всех (вообще всех!) издержек на этот товар

И вот тут начинаются проблемы: на этих детали, кстати, погорело много селлеров на маркетплейсах
- Товар нужно доставить до покупателя - логистические издержки
- При доставке его могут еще и вернуть (х2 логистика), и попортить/потерять - списания
- В конце сезона / срока годности нужно хоть как-то распродать остатки - будем выдавать скидки
- Товары нужно хранить, и это стоит приличных денег - издержки хранения
- Храня товар, мы замораживаем в нем деньги. А могли бы положить их на депозит под 15-18% и получить прибыль - недополученная прибыль

🧪 Итого, мы получаем формулу прибыли:

Прибыль = прогноз спроса * UE
= sales * (price - цена закупки - логистические издержки - скидки для продажи) - списания * цена закупки - фикс косты - time * ст-ть хранения * средний обьем хранения - deposit_rate * time * sales * закуп - …


Несколько сложнее, чем цена - закупочная цена, да?) И нам нужно оптимизировать вот это все сразу, выбирая цену. При этом цена сидит почти в каждом компоненте: в скидках, списаниях, обьеме и времени хранения, ...

Поэтому считайте юнит экономику товара, а не "купил за 70, продал за 100"
А как прогнозировать ее компоненты (списания, обьем хранения и тп) расскажу уже в следующем посте

To be continued...
2👍34🔥1662
Сын маминой подруги Soham Parekh и 5 работ

В твиттере вирусится индус Soham Parekh, который прекрасно проходит собесы, а потом работает на нескольких работах в топ стартапах сразу

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

Другие восхищаются и тиражируют мемасики на эту тему - честно скопировал этот из дружеского тг-канала

Лично я скорее позитивно отношусь к 2 работам сразу, если человек с ними обеими справляется. На практике это обычно одна основная full time и вторая - part time (преподавание, тг канал 😅, фриланс и тп). При этом у меня уже есть опыт увольнения такого «soham parekh” ровно за то, что он почти ничего не делал на работе

А вы что думаете?
🔥 - уже работаю на 2+ работах: это новая реальность
👍 - пока сомневаюсь, но смотрю в эту сторону
🤔 - мне и на одной работе хорошо
🤔65👍45🔥322😁2