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
В чем value неудачного ML-эксперимента?


1. Возможно ваша оффлайн ML-метрика/таргет не коррелирует с бизнесовой метрикой

Нужно найти новую оффлайн метрику/таргет

Из классики: учили модель рекомендаций на предсказание кликов - получили кликбейт в топе. Меняете на клики + добавление в корзину, например


2. Эффект от простого MVP не превышает стат погрешности (ниже MDE)

Тут стоит подумать, превысит ли ее эффект от SOTA. Обычно простейшие решения дают 80% эффекта


3. Вы круто решаете ML-задачу, но не боль конечного пользователя

Из не-млного, но бесящего постоянно 😇: Фильтр по рейтингу на любых картах

Пользователь хочет найти "хороший, проверенный ресторан". Ставит фильтр "рейтинг > 4.5". Получает кучу ресторанов с рейтингом 5.0 и 1 отзывом (вероятно, фродовый от самого владельца). Ну вот зачем так делать?

Если цель сделать фильтр "хорошие места", то хорошо бы фильтровать по рейтинг > Х и кол-во отзывов > Y

Если вы дочитали до сюда и хотите чего-то ML-ного, то для задачи удержания клиентов лучше предсказывать не по вероятности оттока > Х, а добавить ещё условие и остаточный пусть 3-месячный LTV после удержания > Y
👍31🔥85🥱2
Я очень скурпулезно отношусь к тому, что пишу на канале, поэтому реклама тут бывает очень редко

Сам проходил первый запуск HardML, когда мы уже построили свою платформу АВ и рекомендаций в Delivery Club - и все равно модули по АВ и ранжированию были довольно полезными. Поэтому смело рекомендую)

Ну а 5 июня стартует новый поток HardML, скидка для подписчиков 5% по промокоду ML4VALUE27 ⬇️
9👎7👍3🤡2
Имеете опыт в машинном обучении, но хотите двигаться ещё дальше?

Валерий Бабушкин, Vice President, Data Science в Blockchainꓸcom, вместе с командой опытных специалистов из Яндекса, AliExpress и X5 Retail Group подготовил продвинутый курс, на котором вам предстоит решать сложные и нестандартные задачи бизнеса.

Ранжирование и матчинг, динамическое ценообразование, uplift-моделирование, ускорение и повышение чувствительности A/B-тестов — выбирайте нужные блоки или проходите курс целиком.

Если вы уже сталкивались с чем-то из этого в своей работе, то познакомитесь с best practices индустрии. А если нет — дополните своё резюме новыми кейсами и станете более разносторонним ML-специалистом.

Новый поток стартует уже 5 июня, а по промокоду MLVALUE27 вы получите скидку 5%. Ждем вас!

[Зарегистрироваться]
👎31👍5🔥4🤡31
Что спросить у кандидата про бустинг?

Пока в мире хайпуют нейронки вроде ChatGPT, в табличных данных все еще царят бустинги. Спрашивать у кандидатов классические вопросы уже не комильфо: их все выучили

- "Почему бустинг градиентный? При чем тут вообще градиент"
- "Прогнозируем продажи (они >=0). Случайный лес прогнозирует тоже >=0, а бустинг иногда и отрицательные числа, почему так?"

Поэтому я придумал новый годный вопрос для middle+ 😈

"Мы прогнозируем бустингом сразу много временных рядов: продажи каждого из 10_000 товаров. В приличной доли из них бустинг делает очень странный прогноз - он стабильно выше/ниже среднего значения продаж конкретного товара в 2-3 раза. Почему так может быть?"

Я отвечу на него через несколько дней, ну а вы можете написать свои варианты в комментарии ⬇️
👍24🤔104🥱1
ML for Value / Ваня Максимов
Что спросить у кандидата про бустинг? Пока в мире хайпуют нейронки вроде ChatGPT, в табличных данных все еще царят бустинги. Спрашивать у кандидатов классические вопросы уже не комильфо: их все выучили - "Почему бустинг градиентный? При чем тут вообще градиент"…
"Мы прогнозируем бустингом сразу много временных рядов: продажи каждого из 10_000 товаров. В приличной доли из них бустинг делает очень странный прогноз - он стабильно выше/ниже среднего значения продаж конкретного товара в 2-3 раза. Почему так может быть?"


В комментариях верно подметили глобально одну большую проблема - Underfitting модели. Она может выражаться в:

1. Бустинг с rmse лоссом неустойчив к “выбросам”
Он может учитывать выбросы вверх (праздники, промо) и вниз (кончился товар, продажи = 0) и за счёт этого может "выглядеть на графике", что в среднем прогноз выше/ниже большинства продаж. Хотя с учётом выбросов он равен среднему. Лечится учетом фичей праздников - без них underfit

2. Бустинг плохо ловит тренды
Бустинги плохо учат тренды в данных, поэтому на трейне все модели быть ОК, а вот растущий тренд в тесте бустинг не поймает. Тоже некоторого рода underfit или ограничение деревьев, смотря как на это посмотреть 🙃

3. Не учет timeseries_id (то бишь id товаров)
Да, некоторые товары могут продаваться в тысячах штук, а другие в единицах. Поэтому бустинг может в среднем прогнозировать правильно (сотни), но по конкретным товарам сильно ошибаться:) Это скорее under-fitting


От себя добавлю:
4. Лосс имеет значение
Часто мы не хотим, чтобы выбросы влияли на обучение и берём MAE как лосс. Но помните, что MAE даёт прогноз = медиане, а медиана может очень сильно отличаться от среднего

5. Веса товаров в лоссе имеют значение
Если у вас редко-продающиеся товары имеют меньший вес в лоссе, чем часто-продающиеся в сотни раз, то очевидно редкопродающиеся товары вы будете плохо прогнозировать). Например, в RMSE loss в 10 раз меньше продающийся товар имеет по факту в 100 (!) раз меньший вес

Можно лечить аккуратным установлением весов, скажем, через multi-RMSE loss


Если резюмировать
- Не забывайте важные фичи во временных рядах (праздники, промо, сезоннности, тренды, среднее значение каждого ряда)
- Думайте ооочень внимательно над лоссом 📈

Иначе можно получить очень неприятные артефакты:)
👍34🔥83
This media is not supported in your browser
VIEW IN TELEGRAM
На выходных записали видео с Александром Миленькиным (автор Data Feeling) про наш путь в DS, текущие задачи, найм, удаленку и не только

Пока все монтируется - вот вам небольшое превью кусочка истории о "Очень синьерном миддле". Или почему так сложно бывает расти из миддла в синьера 🚀
👎35👍12🔥4🥴3
Корреляция и время

Фраза “Корреляция не означает причинно-следственную связь” стала уже максимально избитой. Но уже в который раз вижу, что эту фразу в контексте временных рядов понимают неверно. А с учеом того, что 90% табличных данных - по факту временные ряды (цены, продажи, фин показатели и тп) - неверно понимается почти всегда 😱

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

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

Проблема в том, что во временных рядах корреляцию и причинно-следственную связь ищут совсем не так:

*Упрощенно* алгоритм такой:
- Удалить трендовую и сезонную составляющую: e = y - trend - seasonal
- Если временной ряд не один, а много (1 показатель за 10 лет у разных стран, например), то нужно еще вычесть среднее значение каждой страны: e = y - trend - seasonal - group_mean
- После этого считать корреляцию остатков (e) у 2-ух переменных

Тогда никакой ложной корреляции, как в примерах выше, вы не увидите 👌

Ну и в целом, когда ничинаете работать с временными рядами, то очень много из классической статистики работает совсем не так: корреляция, стат значимоть коэффициентов регрессии, what-if анализ на изменение 1 фичи и тп. Тк что будьте крайне аккуратны: ведь временные ряды есть везде 😈


P.S. Хороший пример ложной корреляции - это когда есть 2 переменные, измеренные в 1 момент времени

Например, если вы за 1 день измерите размер стопы и длину волос у 10_000 людей, то найдете отрицательную значимую, но ложную корреляцию между этими показателями
👍25🔥95🥴2
Attention, tabular data!
TabR is coming

Что ж, вот наконец модели на базе attention стали показывать годные результаты на табличных данных!) Если хотите детальнее посмотреть, как, то есть прекрасный обзор новой архитектуры TabR
от Андрея Лукьяненко

Метод выглядит многообещающим, но я бы пока к нему пригляделся в реальных приложениях. Как я понял из статьи (поправьте, если не так), для бустингов и TabR не делали почти никакого feature engineering. Но это очень сильно бустит перформанс бустингов в реальных задачах

Так что будет очень интересно сравнить эти 2 модели, когда в обеих будут мощные фичи 🔥
🔥15👍61
Confidence - АВ платформа Spotify скоро будет продаваться всем желающим

Довольно занятная история произошла на прошлой неделе: Команда spotify анонсировала запуск своей внутренней АВ-платформы Confidence для всех. Видимо, пробуют занять нишу ушедшего Google Optimize

Судя по тех статьям от самих инженеров spotify, под капотом есть вся классика АВ:
- Разведение экспериментов по слоям с двойным солированием
- Календарь экспериментов для разведения тестов по времени
- Проверка сплитования АА-тестами и определение MDE
- Калькулятор размера выборки

Из несколько необычных killer-фич:
- Sequential testing. Можно закончить эксп по достижению стат значимости. Но сами же инженеры Spotify не рекомендуют его использовать 🙃Ведь есть эффект “дня недели” - если в тесте понедельников больше чем суббот, то можно получить смещение
- Явно на уровне UI разделяют целевые и вспомогательные метрики - ну наконец-то! Больше нельзя будет продакту поставить 20 целевых метрик в эксперименте и катить, если прокрасилась хоть одна:)

Остальные детали откопать пока не удалось. Так что ждем официальной раскатки с документацией - будем ее препарировать 😈
🔥24👍10
Если вы не знаете, чем занять себя 7 сентября - приходите на Practical ML Conf

Я буду там одним из спикеров: расскажу, как строить с нуля модель прогноза спроса на примере Яндекс.Лавки 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18
Forwarded from Yandex for ML
⚡️ Рассказываем о первых спикерах Practical ML Conf — большой конференции Яндекса про Machine Learning

Прямо сейчас мы готовим для вас большую хардовую программу с ключевыми инженерами индустрии. И мы уже готовы представить первых спикеров конференции — специалистов из Яндекса, Сбера, Авито, ВТБ, X5 Tech, Дзена и Third Opinion, которые расскажут о реальных кейсах использования ML.

Собрали для вас в карточки всё про первые доклады на Practical ML Conf, которые можно будет услышать уже 7 сентября. И это только часть нашей программы — другие доклады можно посмотреть на сайте конференции.

👉 И если вы ещё не успели зарегистрироваться на Practical ML Conf — то сейчас самое время.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍91
Сегодня была Practical ML Conference: смотрел много докладов, да еще и сам рассказывал про прогноз спроса!)

Очень много прям топ выступлений 🔥

Что понравилось лично мне:

1. Item2Item рекомендации в Дзене
Рекомендации в целом я обожаю, но тут еще и про довольно элегантные вещи с отбором кандидатов и легким ранжированием рассказали

2. CPA аукцион в Маркете
Довольно занятно, что рекламные продукты в маркетплейсах активно развиваются в последние года 2-3, и уже сделали очень мощные архитектуры в проде

3. Рассказ про Kandinsky 2.X
Я про диффузионки знаю только в теории, но доклад так хорошо рассказали, что я понял вообще все:)

4. Мой доклад про прогноз спроса конечно 😅
Рассказывал, как объединить оочень простой бейзлайн с бустингом и получить много профита от этого
👍29🔥191
Почему бустинг плохо понимает линейные зависимости?

Я подумал-подумал и решил прямо в канале отвечать на хорошие вопросы из комментариев) Начнем с вопроса про линейные зависимости в градиентном бустинге над деревьями

Условному LightGBM непросто выучить зависимость y = x по 2 причинам:

1. Нужно довольно много сплитов дерева (большая глубина / мнго деревьев), чтобы это выучить
if x < 10 then y = 9
if x > 10 then y = 11
if x > 12 then y = 13
…. (N раз)
if x > 1000 then y = 1001

2. Сложно прогнозировать out-of-distribution
Вторая проблема хорошо видна из “крайних” условий на х:
if x <10 then y = 9
if x > 1000 then y = 1001

Бустинг довольно плох для значений Х, которых не было в трейне (out-of-distribution). И если у вас, например, продажи с растущим трендом, то прогнозировать больше, чем было раньше - очень проблемно

Можно конечно для продаж прогнозировать не сами продажи, а их прирост. Но и это не всегда решает проблему: представьте, что на товар была скидка не более 10%, а сейчас стала 30%. Можно неаккуратно переобучиться на историю скидок именно этого товара и не прогнозировать бОльший рост, даже если на всех товарах (где бывают любые скидки) есть около-линейная зависимость от скидки

Рубрика “Ответы на вопросы из комментариев” #answers
🔥47👍17🗿21
Неклассические бустинги над деревьями (hybrid regression tree boosting)

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

Идея такая: в классическом дереве для задачи регрессии для прогноза в каждом листе берется среднее таргетов (для rmse loss). Что если вместо простого среднего строить в листе линейную регрессию? И в качестве прогноза брать прогноз линейной регрессии

Так и возник подход hybrid regression tree (HRT) - это дерево, в каждом листе которого есть линейная регрессия. Пример работы можно посмотреть на картинке к посту. Ну и конечно это можно обобщить до бустинга

Штука прикольная, и как-то в универе мы с ребятами даже запилили код hybrid regression tree. Ни о какой оптимизации по скорости и памяти в студенческом проекте речи конечно нет, но поиграться можно

И внезапно наша репа до сих пор топ-1 по запросу ”hybryd regression tree” в гугле аж с 2 звездочками 😅

Это говорит скорее о непопулярности подхода - по метрикам чуть лучше классического lightGBM / CatBoost, но сииииильно медленнее: может работать только на небольших наборах данных до 10-100к строк. Можете, кстати, посчитать сложность алгоритма в комментариях - удивитесь 😄

UPD: В комментариях подсказали, что этот алгоритм завезли в lightGBM. Что ж, очень радует!)


#answers - ответы на вопросы из комментариев
🔥33👍106😁1🗿1
Channel name was changed to «ML for Value / Ваня Максимов»