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
Сегодня была 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 / Ваня Максимов»
SUKI в А/В тестах

Сразу оговорюсь - это не то, о чем вы подумали))

в АВ есть фундаментальное предположение SUTVA - Stable Unit Treatment Value Assumption. И обычно обьяснение SUTVA никому не заходит. Поэтому все его успешно игнорируют 😀

У меня есть альтернатива:

SUKI assumption:
S - Student’ t-test
U - Units
K - Key metrics
I - Independence


“Student t-test for Units over Key metrics under Independence assumption”

Это покрывает все необходимые советы для успешного АВ:

S - Student’ t-test
Имхо, если вы не провели сотни АВ или не имеете Masters по статистике, даже не пытайтесь использовать что-то кроме теста Стьюдента. Без стратификации, cuped и прочего - обычный тест Стьюдента. Если его (и другие предположения SUKI) выполнить, то вы получите сильно более корректные выводы, чем с модными методами

U - units
Один Unit (юзер, магазин) может генерировать кучу событий (кликов, покупок). Мы проводим тесты на Unit-ами. То есть в поюзерном тесте метрика должна быть по юзерам (1 юзер = 1 число), а не по сессиям, заказам или юзеро-дням. Иначе наблюдения становятся зависимыми = вся логика АВ ломается

K - Key metrics
Не стоит выбирать 20 метрик и смотерть, какая прокрасится! Ни в одном из тысяч (когда я руководил разработкой АВ платформы, через меня прошло больше 2к тестов) не понадобилось более 2ух целевых метрик. Бывают еще барьерные и контрольные метрики, но это уже совсем другая история:)

I - independence
Ваши наблюдения в тесте должны быть независимы. Как я уже писал, 1 наблюдение = юзер, а не юзер-день или юзер-сессия. В соц сетях и юзеры могут быть зависимыми - стоит подумать, как обьединить их в кластеры, и проводить тесты по кластерам юзеров


В общем, когда в следующий раз вы крикните “какие SUKI сломали мой А/В ?!” - вы знаете ответ 😅
🔥47😁175👍3💩2
В телеге появилась возможность постить сторис от имени канала, но для этого нужно набрать голоса (бусты) от премиум-пользователей 🚀

Если хотите видеть еще и сторис от ml4value, то можете обновить телеграмм (бусты есть только в последней версии) и пробустить канал по ссылочке:

https://news.1rj.ru/str/ml4value?boost

Upd: господа и дамы, лайки - это хорошо, но бусты - еще лучше 😄
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁621🤮1
Рост в ML: Junior —> Middle

Астрологи скоро объявят неделю ревью - пора разобраться, как растить свой грейд

Я не буду писать про классические “делай задачи на следующий грейд” или “помимо раскачки хардов не забывай про софты”. Сосредоточимся на деталях, quick wins и грязных трюках 😇

Для роста из Junior в Middle я бы посоветовал собрать 3 ачивки:


1. Самостоятельно затащить (небольшой) проект с эффектом на деньги
Вы можете зарешать весь литкод, лучше всех знать трансформеры, но ничто так не растит в миддла как возможность доверять человеку задачи end-to-end. Хорошо бы это показать тим лиду на реальном примере

Лайфхак: если вы не знаете, где найти такую задачу - сделайте простую систему алертов на метрики ML/бизнеса в телеграм. Для этого не нужны SOTA навыки, но придется пообщаться со многими людьми и убедиться в полезности алертов. Убиваете сразу 3 зайцев: Показываете самостоятельность, приносите пользу, становитесь заметны вне своей команды


2. Разобраться во всех кусках ML продукта, над которым работает ваша команда
Не только посмотреть код ML-модели, но и понять, почему были приняты все основные решени в архитектуре. Уметь в Aiflow / Docker / что угодно еще для поддержки модели. Понимать как именно модель приносит пользу бизнесу

Лайфхак: Не пытайтесь выглядеть всезнающим. Чтобы реально разобраться в деталях придется задать 1000 и 1 глупый вопрос. Со временем ваши глупые вопросы станут умными, а умные вопросы - имхо, один из главных показателей middle / senior DS


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


Другие советы я выложу в сторис, когда мы с вами добьем пару бустов каналу 💪

Если у вас есть еще годные советы Junuior-ам, пишите в комменты - обсудим ⬇️
👍49🔥75💩1🦄1
Рост в ML: Junior —> Middle
Грязные трюки edition
😈


1. Умножай сроки х2
Почти наверняка, чтобы что-то сделать хорошо (или хотя бы просто сделать!), понадобится сильно больше времени, чем ты думаешь. Джуниоры часто не знают, что надо заложить время на тестирование, исправление ошибок, изменение изначальных требований и многое другое

Так что умножай сроки х2 - не прогадаешь. Актуально и для начинающих тим лидов:)

2. 30% времени - на курсы
До роста в синьора твоя кривая обучения стремится в космос, особенно на позиции джуниора. Каждый потраченный час на хороший курс или статью существенно улучшает знания и навыки. Пользуйся этим! Да, это инвестиция в будущее: если ты останешься в той же компании, то это ей окупится. Ну а если не останешься… то плохая программа роста там 😅

3. Скажи всем, что хочешь стать миддлом
Как ни странно, тим лиды и тиммейты не экстарсенсы. Хочешь стать миддлом / + 20% к зп / удаленку - хотя бы скажи про это. Лучше не прям перед ревью, а в начале полугода. И повторяй почаще) Так у тебя с тимлидом есть шанс придумать план, как стать миддлом, и есть шанс его воплотить, поправляя косяки по ходу дела. Если же об этом не говорить, может задач на ”показать себя” и не появится

P.S. Долго думал над форматом сторис - пока продолжаю его искать. Если у вас есть идеи - пишите в комменты, все учту)
👍55🔥9💩2
Рост в ML: Middle —> Senior

По просьбам из комментариев, кратко опишу, как я отличаю джунов-миддлов-синьеров

Джун - хорошо делает хорошо поставленные задачи. Запилить фичу, написать автотесты и тп
Миддл - может полноценно развивать ML-проект. Добавляет фичи, ускоряет инференс и тд
Синьор - сам найдет бизнес-проблему, сам придумает решение и сделает, подскажет как лучше

Для роста из миддла в синьера потребуется уже 1-3 года и сбор вот таких ачивок:

1. Стань лидером ML-проекта
Наверняка можно взять устоявшийся проект на развитие / придумать новый. Важно, чтобы все от общения с бизнесом до внедрения в прод мог лидить именно ты. Это покажет самостоятельность и подарит чувство “Да, этому чуваку можно доверить большое дело”

2. Работай в команде
Как правило, затаскивать большие штуки в одиночку - крайне сомнительная затея. Если ты работаешь в стартапе, может и получится. Но в любой крупной компании в одиночку шансы крайне малы. Бери себе в помощь джунов, найми стажера, делегируй часть работы соседней команде - будь креативен 👩‍🎨

3. Изучи лучше всех в компании конкретную область
Эта область может быть небольшой, но все в команде + многие руководители должны считать тебя лучшим экспертом в ней. Как правило, этого можно достичь либо долгой и усердной работой, либо перенятием лучшего опыта индустрии: читать статьи , ходить на конференции. А луше делат ьи то, и другое

P.S. Читать статьи (хабр и медиум тоже!) - это не 1-2 в неделю, а хотя бы 10-15. Большинство из них bullshit bingo, поэтому помогут развиваться процентов 5 статей

Как определить, что у тебя получился этот пункт: к тебе стали чаще ходить за советом и звать на встречи по принятию решений:)

4. Придется научиться общаться 😄
Да-да пресловутые soft skills. Большинство миддлов сыпятся именно на них. Можно прокачивать навыки общения, начав вести регулярные встречи с бизнесом (если их нет - поставь срочно!). Из неплохих лайфхаков - выбери 2-3 синьор/лид людей из бизнеса и поставь им 1-1 раз в пару недель. И общаться научишься, и свою visibility поднимешь)
👍39🔥14💩1
Визуализация эмбеддингов из коробки 📦

Наконец появилась приятная библиотека spotlight для визуализации данных в ноутбуке без тысяч строк на matplotlib и seaborn

Самое приятное для меня: помимо классических визуализаций табличек, spotlight умеет в неструктурированные данные (картинки) и эмбеддинги!

В общем, буду активно тестить🤓
👍35🔥6🤔1💩1
Хорошо рабатаешь - хорошо отдыхай

Я вернулся из почти 3-ех недельного отпуска, и к его концу мне уже очень хотелось вновь начать работать)
За это время я не отвечал ни в каких чатах, не смотрел дэшборды и тп - все прекрасно работало надеюсь 😅

Чтобы все в команде могли спокойно уходить в отпуск и не уставать сильно без него, у меня есть 3 правила:

1. Не писать и не отвечать в чатах до 9 и после 19
Подождать 9 утра или следующего дня может практически любая проблема
Если у вас периодически падает сервис по ночам и нужно прям дежурить - только тогда явно выделяйте дежурных с доп окладами и регулярной сменой. И только до того времени, когда вы стабилизируете свой сервис - это должно стать фокусом, а не тех долгом в далеком беклоге

2. Хотя бы 1 выходной с нулевой терпимостью к анализу данных
Я имею в виду не только не работать (надеюсь, вы и так не работаете в сб-вс), но и не продумывать архитектуры, не проходить мощные курсы, не зарешивать кагл и тд

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

Чтобы точно не работать в выходные:
- Не катите в прод в пятницу 😄
- Подкладывайте бэкапы на случай падения процессов / сервисов на выходных
- Работайте над стабильностью ваших сервисов

3. Ну прям совсем не работайте в отпуске
Я насильно кикаю с зум-встреч тех, кто пришел на них в свой отпуск. Пару раз кикал даже своих руководителей)
Нам кажется, что за неделю-две без нас компания никак не проживет, но в реальности - еще как проживет! И это довольно полезное наблюдения в том числе для делегирования
👍98🔥12👎3
Розыгрыш подписки телеграмм-premium

Вместе с Ромой из канала Start career in DS проводим конкурс розыгрыш 🤡

Мы оба работаем в Яндекс Лавке и делаем прогноз спроса, ценообразование и оптимизацию ассортимента круче. У Ромы на канале можно прочитать много всего интересного)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡10❤‍🔥4🔥31
Forwarded from Start Career in DS
This media is not supported in the widget
VIEW IN TELEGRAM
❤‍🔥13🤡8
Наконец вышел видос на ютубе!

Давненько уже мы встретились с Сашей - автором @datafeeling и записали живой разговор про карьеру в ML
Долго монтировали все это дело, и теперь вы можете посмотреть

➡️ Выпуск на ютубе

P.S. Качество звука так себе, потому что это наш первый опыт самостоятельной записи на камеру 🙃
💩14🔥9🤔3🥴1
GPT-4 захватывает мир, в то же время..

Поиск Гугла ломается при добавлении цвета “Rose”. Начинает выдавать вообще не ML-иконки:)

У меня такому феномену 4 объяснения-гипотезы:
- Поиск Гугла не учитывает контекст последних запросов (до этого гуглил “ml icon”)
- Поиск Гугла не учитывает персональный вектор пользователя (странно парню рекомендовать пусть в спорных кейсах косметику)
- Что-то ломается из-за поиска по специфичному домену ML
- Popularity bias во всей красе (домен косметики явно популярнее ML)

Знатоки NLP и поиска, что думаете? ⬇️
👍21🤔8💩6🥴3
Мои итоги года, 2023

Почему сейчас? Под новый год вы утоните под постами с итогами и будет не до моего, ну а еще мне как раз исполнилось 27, я ровно 1 год проработал в Яндексе и пришли результаты ревью:)

Работа
Было несколько стримов, где нужно было дойти от 0 к 1. В итоге где-то это удалось, где-то мы убежали уже дальше от 1 к 20-30 (например, в прогнозе спроса). Ну а в одном стриме не вышло дойти до 1, мы пивотнулись и идем снова от 0 к 1. Суммарно, выглядит, что все идет здорово - даже получил повышенную оценку на ревью. Но не все прошло идеально, и я долго думал, чем отличались успешные стримы от не очень успешных:
- В успешных стримах прям все-все на старте смогли засинкаться, что такое целевая картина / успех. Если этого не сделать, то придется делать "не совсем то", и хорошо если потом получится пивотнуться, а не просто закрыть стрим
- Чем больше возьмете на себе ответственности, тем быстрее пойдете - парадокс, но работает. Если ваша команда и модели пилит, и за бизнес-метрики отвечает, и роудмап составляет - вряд ли что-то может вас затормозить 🚀

Внезапно нашел себе хобби в ML - изучаю достижения 2022г+ в CV classification/segmentetion. При этом сколько раз уже пытался взяться за изучение GPT-3/4 и другие SOTA в NLP, но каждый раз это было фиаско: быстро становилось скучно. А когда нашел интересную мне область - сразу хочется самому читать SOTA статьи. А всплыл такой интерес к CV, когда я несколько месяцев не мог выбрать комод и думал: ну неужели никто не научился не то что auto-подбирать мебель в интерьер, но хотя бы нормально классифицировать все атрибуты? Ну в общем, мало кто научился) Если попробовать поискать на популярных маркетплейсах что-то сложное, а-ля комбинацию стиль-цвет-размер-детали, то даже с фильтрами... работает так себе. Вбейте "Низкий комод в стиле лофт с графитовыми ручками" в поисковики маркетплейсов, посмотрите, что выйдет 😄 Жду момента, когда психану, и сам запилю классификацию атрибутов мебели по фото, чтобы уже выбрать несчатный комод))

Личное
В этом году я женился - и это самое лучшее решение, прям серьезно всем рекомендую, если нашли подходящего человека!) Ну и подготовка к свадьбе + сам день на самом деле очень веселое мероприятие

Побывыл в 3 почти крайних точках Евразии - на востоке (Курилы), западе (Португалия) и юге (Шри-Ланка). А вообще, пожил как минимум по неделе в 14 странах! Исполнил 2 большие мечты - побывать в замке-острове Мон-Сен-Мишель и побродить по развалинам древнего Рима.
Как оказалось, исполнять мечты вполне посильная задача - главное этим основательно заняться) Условно, можно в разы снизить стоимость поездки, если купить билеты заранее и собрать компанию, чтобы пошерить большое жилье. Шок, но в некоторых странах даже с учетом перелета я тратил меньше чем в Москве

Спорт и здоровье
Тут все достаточно неоднозначно. С одной стороны попробовал серф и кайт-серф, и едва на вошел в топ-100 полупрофи в России по теннису. С другой - появились сразу 2 травмы, причем внезапно не от экстремальных видов спорта, а от относительно "безобидных": Серф и теннис. В общем, если пробуете новый вид спорта, то отнеситесь к этому серьезно: с первого взгляда надо просто ехать на волне под солнышком, а в реальности огромную часть времени эта самая волна месит тебя с песком (и хорошо если с ним, а не рифами). Так что следующий год видимо будет годом здоровья - пора, уже почти дед в 27 😅
🔥95👍138
ML-щик в Телеграм на полставки

Телеграм выкатил рекомендации похожих каналов - ну наконец-то!) Многие уже ждут рекомендательную ленту, но давайте подумаем над менее очевидными реками

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

Вторая по важности метрика на мой взгляд - это СAC подписчика для авторов. Сейчас это порядка 80-100 руб за 1 подписчика - ну жесть же! Крайне сложно стать популярным автором качественного контента, не продавая курсы или еще что: просто не будет 1 🍋, чтобы купить 10к подписчиков. А без качественных каналов где-то плачет ретеншен

Итого, идеальные рекомендации ведут на новый для пользователя канал + он готов сам за это платить. Интересно звучит, да?)

😱 При положительной реакции на пост 👍/🔥 показывать схожие посты в других каналах

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

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

😱 Официальный бот-саммерайзер постов за день, присылает 3-5 саммери, сгруппированных по темам (мемасики, спорт, ML и тп)

Уже сейчас канал читают, если он попал в условные топ-10 у человека. А каналов на 1 человека уже >100. Накидывать юзеру еще больше каналов не всегда имеет смысл. А вот делать саммери каналов (можно даже и каналов из архива) - вот тут другое дело! В конце саммери можно писать топ каналов, из которых собрали эти самые саммери

В итоге, и ленту человеку миллиардом каналов не засоряем (можно вообще все в архив сложить), и время экономим. Ну и за такое не грех и купить premium подписку: Я вот с радостью бы читал саммери своих 50+ каналов про ML

А какие рекомендательные фичи сделали бы вы в телеге?)
🔥28👍5👎2💩1🥴1
Саша из @datafeeling сделал прикольного бесплатного бота для генерации resume-style картинок по обычным фоткам - @avatar_resume_bot

Я потестил - зашло, поэтому рекомендую попробовать)

Из прикольного:
- Работает с фотками почти любого качества
- Убирает наушники, капюшон и прочие артефакты
- Можно стилизовать (выбирать цвет волос, например)

Но может несколько поменять ваше лицо - надо нагенерить 3-5 фоток, чтобы выбрать похожую на себя генерацию
🔥29👍6👎31🤯1