DataFest 2024: RecSys
Неожиданно для себя вернулся в Москву сегодня в 2 ночи и …успел на оффлайн день DataFest в VK!)
До 18 буду в основном зале слушать доклады по RecSys. Если у вас есть желание пообщаться на больших перерывах
14:30-15:30, 17:00-18:00, пишите в комменты - постараемся встретиться 🙂
Неожиданно для себя вернулся в Москву сегодня в 2 ночи и …успел на оффлайн день DataFest в VK!)
До 18 буду в основном зале слушать доклады по RecSys. Если у вас есть желание пообщаться на больших перерывах
14:30-15:30, 17:00-18:00, пишите в комменты - постараемся встретиться 🙂
🔥35👍2❤1
Хайлайты DataFest: RecSys
Послушал все доклады на вчерашнем datafest, с частью спикеров пообщались в кулуарах — сформировал несколько хайлайтов в индустриальном recsys
💡 В академических статьях много скама
- Игрушечные датасеты
- Лики в валидации
- Неправильные метрики
Имхо, самая большая проблема еще в том, что все соревнуются в end-to-end рекомендациях одной моделью. А реальные продакшен системы многостадийные + на первом этапе делается union нескольких моделей. Поэтому надо делать модели с разными рекомендациями (растить union метрики), а не соревноваться, какая из 10 +- одинаковых побеждает на 2%
💡 Трансформеры уже везде, но есть нюанс
Open source реализации часто работают хуже статей и страдают от багов. Все спикеры писали SasRec/Bert4Rec с нуля
В WB, кстати, тоже самописный ALBERT4Rec
💡 Рекомендации категорий, а не товаров
Зачастую сложно угадать, какой товар понравится пользователю - давайте угадаем хотя бы категорию (моторные лодки, сообщество про котиков и тп)
Супер полезная штука для холодного старта (мало знаем о пользователе), кросс-категорийных рекомендаций и разнообразия
Тг-канал @ml4value
#recsys
Послушал все доклады на вчерашнем datafest, с частью спикеров пообщались в кулуарах — сформировал несколько хайлайтов в индустриальном recsys
- Игрушечные датасеты
- Лики в валидации
- Неправильные метрики
Имхо, самая большая проблема еще в том, что все соревнуются в end-to-end рекомендациях одной моделью. А реальные продакшен системы многостадийные + на первом этапе делается union нескольких моделей. Поэтому надо делать модели с разными рекомендациями (растить union метрики), а не соревноваться, какая из 10 +- одинаковых побеждает на 2%
Open source реализации часто работают хуже статей и страдают от багов. Все спикеры писали SasRec/Bert4Rec с нуля
В WB, кстати, тоже самописный ALBERT4Rec
Зачастую сложно угадать, какой товар понравится пользователю - давайте угадаем хотя бы категорию (моторные лодки, сообщество про котиков и тп)
Супер полезная штука для холодного старта (мало знаем о пользователе), кросс-категорийных рекомендаций и разнообразия
Тг-канал @ml4value
#recsys
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Выжимаем максимум из ALBERT4Rec
Введение Привет! В прошлой статье я рассказывал как заводил ALBERT4Rec для персональных рекомендаций на главной Wildberries. Сегодня поделюсь подходами к развитию модели, которые мы успешно внедряли на протяжении прошлого года. Гиперпараметры и около того…
👍35🔥5❤4
Гиганты индустрии учат зарабатывать деньги на рекомендациях 💸
Пару постов назад писал, что академические статьи в рекомендациях редко бывают полезными: много откровенных фейков, неправильно проведенных экспериментов и тд. Вот статьи от гигантов индустрии - другое дело! Но и тут все не так просто
Гиганты индустрии (Netflix, Pintereset, Alibaba, Amazon, Google, ...) уже настолько большие, что им разумно вкладываться в оптимизацию метрик второго порядка:
- Более дешевое обучение моделей: экономит им миллионы на инфраструктуре
- Рост "справедливости" рекомендаций: продвижение нового / узкоспециализированного контента
- Счастье авторов и другое
Напрямую про существенный рост денег они пишут редко (из-за NDA в том числе), но бывают приятные исключения!
Трансформеры в персональных рекомендациях - PinnerFormer (Pinterest)
Если внимательно приглядеться, то они завели не более традиционные SASRec / BERT4Rec, а довольно близкий к реалиям трансформер: Предсказывают все действия пользователя за следующие 28 дней. Это лучше коррелирует с результатами А/В и помогает растить разнообразие
Похожие товары на графах - Billion scale commodity embeddings (Alibaba)
Показывали еще в 2018 году, что графы рулят!) Ну и что в них можно впихнуть любую информацию о товарах: рейтинги, цены и тп - это тоже помогает
В общем, моя рейкомендасьон к прочтению 🧐
тг-канал @ml4value
#recsys #articles_review
Пару постов назад писал, что академические статьи в рекомендациях редко бывают полезными: много откровенных фейков, неправильно проведенных экспериментов и тд. Вот статьи от гигантов индустрии - другое дело! Но и тут все не так просто
Гиганты индустрии (Netflix, Pintereset, Alibaba, Amazon, Google, ...) уже настолько большие, что им разумно вкладываться в оптимизацию метрик второго порядка:
- Более дешевое обучение моделей: экономит им миллионы на инфраструктуре
- Рост "справедливости" рекомендаций: продвижение нового / узкоспециализированного контента
- Счастье авторов и другое
Напрямую про существенный рост денег они пишут редко (из-за NDA в том числе), но бывают приятные исключения!
Трансформеры в персональных рекомендациях - PinnerFormer (Pinterest)
Если внимательно приглядеться, то они завели не более традиционные SASRec / BERT4Rec, а довольно близкий к реалиям трансформер: Предсказывают все действия пользователя за следующие 28 дней. Это лучше коррелирует с результатами А/В и помогает растить разнообразие
Похожие товары на графах - Billion scale commodity embeddings (Alibaba)
Показывали еще в 2018 году, что графы рулят!) Ну и что в них можно впихнуть любую информацию о товарах: рейтинги, цены и тп - это тоже помогает
В общем, моя рейкомендасьон к прочтению 🧐
тг-канал @ml4value
#recsys #articles_review
👍28🔥5❤2
Прикольные товары или Serendipity
Считается, что пользователям стоит рекомендовать необычные товары, которые их «удивят» (придумали даже термин serendipity). Это в теории растит удовлетворенность сервисом и заставляет раз за разом возвращаться - растет retention и выручка в долгосроке
Есть разные вариации метрики serendipity. Например, можно считать «необычным» товар, если мы его рекомендуем юзеру Х, товар ему релевантен, при этом всем остальным его рекомендуем редко
Но иногда попадаются настоящие товары-шедевры. Как думаете, какой метрикой можно отловить подобную «необычную» рекомендацию? 😅
Считается, что пользователям стоит рекомендовать необычные товары, которые их «удивят» (придумали даже термин serendipity). Это в теории растит удовлетворенность сервисом и заставляет раз за разом возвращаться - растет retention и выручка в долгосроке
Есть разные вариации метрики serendipity. Например, можно считать «необычным» товар, если мы его рекомендуем юзеру Х, товар ему релевантен, при этом всем остальным его рекомендуем редко
Но иногда попадаются настоящие товары-шедевры. Как думаете, какой метрикой можно отловить подобную «необычную» рекомендацию? 😅
😁30👍3❤2😱2
Как собрать красные флаги на собесах
🚩Fake it till you make it: Расскажите, как строили NLP-модели с нуля, даже если не помните разницу BERT и GPT
🚩Никому не важны результаты в денежных метриках - просто расскажите, с какими библиотеками вы работали
🚩Включите достижения команды, отдела и Илона Маска в ваши личные - в какой-то мере вы же с ними связаны!)
🚩Для стажеров: Обязательно пишите время обучения на доп курсе, как отдельное место работы. Ваш pet-проект / GitHub никто не посмотрит, а вот полгода учебы на курсе - это ж, считай, год опыта работы📈
🚩На вопрос "Как бы вы сделали поиск?" сразу расскажите про GPT и RAG: кому нужны эти полнотекстовые бейзлайны и bm25?
🚩Не забудьте добавить, что продакты и бизнес-заказчики ничего не понимают в ML, поэтому вы делали все проекты без них
P.S. К сожалению, все кейсы реальные. Будьте бдительны)
#career
тг-канал @ml4value
🚩Fake it till you make it: Расскажите, как строили NLP-модели с нуля, даже если не помните разницу BERT и GPT
🚩Никому не важны результаты в денежных метриках - просто расскажите, с какими библиотеками вы работали
🚩Включите достижения команды, отдела и Илона Маска в ваши личные - в какой-то мере вы же с ними связаны!)
🚩Для стажеров: Обязательно пишите время обучения на доп курсе, как отдельное место работы. Ваш pet-проект / GitHub никто не посмотрит, а вот полгода учебы на курсе - это ж, считай, год опыта работы
🚩На вопрос "Как бы вы сделали поиск?" сразу расскажите про GPT и RAG: кому нужны эти полнотекстовые бейзлайны и bm25?
🚩Не забудьте добавить, что продакты и бизнес-заказчики ничего не понимают в ML, поэтому вы делали все проекты без них
P.S. К сожалению, все кейсы реальные. Будьте бдительны)
#career
тг-канал @ml4value
Please open Telegram to view this post
VIEW IN TELEGRAM
😁45😱12🥱7🤝4🤡3
➡️ Навигация по каналу 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 #career
- Серия про оптимизацию цен на товары #pricing
- Серия постов о метриках регрессии: от RMSE до WAPE и SMAPE #timeseries
- Какая трансформация фичи влияет на перформанс CatBoost? Спойлер: log(x) - влияет!
💡Написать мне: @Ivan_maksimov
Можно позвать меня рассказать что-то интересное на конференции или в вашей компании, обсудить занятную ml-задачу, или проконсультироваться на счет ml-проекта
На связи Ваня Максимов @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 #career
- Серия про оптимизацию цен на товары #pricing
- Серия постов о метриках регрессии: от RMSE до WAPE и SMAPE #timeseries
- Какая трансформация фичи влияет на перформанс CatBoost? Спойлер: log(x) - влияет!
💡Написать мне: @Ivan_maksimov
Можно позвать меня рассказать что-то интересное на конференции или в вашей компании, обсудить занятную ml-задачу, или проконсультироваться на счет ml-проекта
👍41🔥32😱4❤1
Запрос про спрос
На прошлой неделе словил вьетнамский флешбек: однажды из-за моей ошибки в алгоритме списали фуру мяса в Ростове 🥩
А вспомнил я про это, потому что меня аж 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
На прошлой неделе словил вьетнамский флешбек: однажды из-за моей ошибки в алгоритме списали фуру мяса в Ростове 🥩
А вспомнил я про это, потому что меня аж 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
👍66🔥24❤5🥱3
Собрали папку с самыми интересными и полезными каналами, в которых пишут про RecSys
Часть каналов делают обзоры статей по RecSys, другие - пишут про новости, новинки индустрии и многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥9🥴3❤1
Пост про спрос ч.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
В первой части я разобрал проблему с сезонностью внутри дни и закинул удочку про распределение Пуассона.
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
Telegram
ML for Value / Ваня Максимов
Запрос про спрос
На прошлой неделе словил вьетнамский флешбек: однажды из-за моей ошибки в алгоритме списали фуру мяса в Ростове 🥩
А вспомнил я про это, потому что меня аж 4 раза спросили про задачу восстановления спроса. Или как считать спрос на товар…
На прошлой неделе словил вьетнамский флешбек: однажды из-за моей ошибки в алгоритме списали фуру мяса в Ростове 🥩
А вспомнил я про это, потому что меня аж 4 раза спросили про задачу восстановления спроса. Или как считать спрос на товар…
👍24❤4🔥4😁1
Как растить деньги и ронять продуктовые метрики 😐
Не первый раз сталкиваюсь с тем, что метрики денег и метрики продукта смотрят в разные стороны
Представьте, что вы улучшаете Поиск. У него есть продуктовая метрика «поисковой релевантности» - насколько найденный товар соответствует поисковому запросу. Ее можно посчитать через асессоров (и еще парой способов)
С точки зрения поисковой релевантности на запрос «Книга Гарри Поттер» очевидно нужно выдавать книги о Гарри Поттере. И чем точнее мы их находим, тем больше денег зарабатываем. Или нет? 💣
Представьте, что топ-4 результата поиска - и правда книги о Гарри. А потом частенько попадаются игрушки/диски/постеры из вселенной Поттера. И люди из запроса про книгу покупают детские игрушки! Деньги растут, а поисковая релевантность нервно курит в сторонке 🥲
Похожий кейс, когда с ~10 позиции появляются книги других серий, которые похожи на Поттериану
Следующим постом напишу, как я считаю, нужно решать такие кейсы. А что думаете вы? Пишите в комменты ⬇️
#metrics
Не первый раз сталкиваюсь с тем, что метрики денег и метрики продукта смотрят в разные стороны
Представьте, что вы улучшаете Поиск. У него есть продуктовая метрика «поисковой релевантности» - насколько найденный товар соответствует поисковому запросу. Ее можно посчитать через асессоров (и еще парой способов)
С точки зрения поисковой релевантности на запрос «Книга Гарри Поттер» очевидно нужно выдавать книги о Гарри Поттере. И чем точнее мы их находим, тем больше денег зарабатываем. Или нет? 💣
Представьте, что топ-4 результата поиска - и правда книги о Гарри. А потом частенько попадаются игрушки/диски/постеры из вселенной Поттера. И люди из запроса про книгу покупают детские игрушки! Деньги растут, а поисковая релевантность нервно курит в сторонке 🥲
Похожий кейс, когда с ~10 позиции появляются книги других серий, которые похожи на Поттериану
Следующим постом напишу, как я считаю, нужно решать такие кейсы. А что думаете вы? Пишите в комменты ⬇️
#metrics
3👍42🔥17❤5✍1
Как растить деньги и ронять менять продуктовые метрики ч.2
Дилемма денег и продукта обычно появляется из такой логики: в АВ красить выручку всей компании мы не можем (нет таких сильных изменений). Поэтому придумаем продуктовую прокси-метрику, которая коррелирует с деньгами
Если чуть преувеличить, то принимается решение «давайте решать проблемы пользователя - деньги сами придут». А они не приходят 🥲
Тут фишка в том, что хорошие прокси-метрики денег придумать даже один раз сложно, при этом они еще и эволюционировать должны!
Вот кто б заранее знал, что зумеры будут искать мероприятия в тик токе? Или что в «утилитарном» поиске Гугла люди могут искать вдохновение (этот рынок как раз отжал Pinterest у Гугл)
В нашем кейсе с игрушками Гарри и книгами других серий по запросу «Книга Гарри Поттер» я бы предложил за целевые брать около-дегежные метрики страницы поиска: конверсию в клик/заказ и средний чек. И пробовать подбирать для них несколько прокси: точная текстовая релевантность поиска, попадание в широкую категорию поискового запроса, разнообразие и тп
В продукте это может выглядеть так (и вы много где это встретите):
- Первые 10 позиций идет обычная поисковая выдача. А чем дальше, тем больше exploration/discovery
- Горизонтальный блок с результатами query expansion (поиск по более широкому запросу): в целом похожие фэнтези книги
- Еще 5 позиций из поисковой выдачи
- Горизонтальный блок сопутствующих товаров: игрушки Гарри
- Еще 10 позиций
- Блок в целом популярных товаров (если за 25 позиций ничего не нашлось, то дальше вряд ли листают)
Такие дела 😇
#metrics
Дилемма денег и продукта обычно появляется из такой логики: в АВ красить выручку всей компании мы не можем (нет таких сильных изменений). Поэтому придумаем продуктовую прокси-метрику, которая коррелирует с деньгами
Если чуть преувеличить, то принимается решение «давайте решать проблемы пользователя - деньги сами придут». А они не приходят 🥲
Тут фишка в том, что хорошие прокси-метрики денег придумать даже один раз сложно, при этом они еще и эволюционировать должны!
Вот кто б заранее знал, что зумеры будут искать мероприятия в тик токе? Или что в «утилитарном» поиске Гугла люди могут искать вдохновение (этот рынок как раз отжал Pinterest у Гугл)
В нашем кейсе с игрушками Гарри и книгами других серий по запросу «Книга Гарри Поттер» я бы предложил за целевые брать около-дегежные метрики страницы поиска: конверсию в клик/заказ и средний чек. И пробовать подбирать для них несколько прокси: точная текстовая релевантность поиска, попадание в широкую категорию поискового запроса, разнообразие и тп
В продукте это может выглядеть так (и вы много где это встретите):
- Первые 10 позиций идет обычная поисковая выдача. А чем дальше, тем больше exploration/discovery
- Горизонтальный блок с результатами query expansion (поиск по более широкому запросу): в целом похожие фэнтези книги
- Еще 5 позиций из поисковой выдачи
- Горизонтальный блок сопутствующих товаров: игрушки Гарри
- Еще 10 позиций
- Блок в целом популярных товаров (если за 25 позиций ничего не нашлось, то дальше вряд ли листают)
Такие дела 😇
#metrics
10👍14🔥6❤5🐳3
Немного о личном
Завершаю летний сезон победой на теннисном турнире Amatour masters и 28 строчкой в рейтинге полу-про в России 🎾 🏆
Чтобы попасть в топ-30, я выиграл всего лишь 55% геймов! Для сравнения (немножко нечестного, но все же) легенда тенниса и долгое время 1-ая ракетка мира Роджер Федерер выиграл58% геймов в своей карьере
В общем, помните, что даже если вы допускаете просто кучу неудач, то вы все равно можете быть топ-1. Учитесь на ошибках и не унывайте!)
Ну а еще, вся жизнь - это numbers game, где +1% успешности может кратно улучшить ваши позиции
P.S. Вот бы мне +3% выигранных геймов, чтобы сравняться с Федерером 😇
#personal
Завершаю летний сезон победой на теннисном турнире Amatour masters и 28 строчкой в рейтинге полу-про в России 🎾 🏆
Чтобы попасть в топ-30, я выиграл всего лишь 55% геймов! Для сравнения (немножко нечестного, но все же) легенда тенниса и долгое время 1-ая ракетка мира Роджер Федерер выиграл
В общем, помните, что даже если вы допускаете просто кучу неудач, то вы все равно можете быть топ-1. Учитесь на ошибках и не унывайте!)
Ну а еще, вся жизнь - это numbers game, где +1% успешности может кратно улучшить ваши позиции
P.S. Вот бы мне +3% выигранных геймов, чтобы сравняться с Федерером 😇
#personal
🔥70❤19🏆14👍7⚡5
Где искать работу зарубежом?
Международные стартапы с русскоговорящими фаундерами или командами – один из эффективных способов получить оффер за рубежом сейчас.
Вакансии именно в таких компаниях собирают ребята в канале 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 (Кипр, помогают с релокацией)
💙Подписывайтесь и развивайте карьеру в будущем единороге!
Реклама Dev & ML Jobs за рубежом
Международные стартапы с русскоговорящими фаундерами или командами – один из эффективных способов получить оффер за рубежом сейчас.
Вакансии именно в таких компаниях собирают ребята в канале 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 (Кипр, помогают с релокацией)
💙Подписывайтесь и развивайте карьеру в будущем единороге!
Реклама Dev & ML Jobs за рубежом
👍11💅6🔥5❤2👌2
Мой топ-10 проблем с рекомендательными системами. Часть 1/4: Junior
По следам классного поста о топ-10 моделях в рек системах. Когда вы их выучите и внедрите, то 100% столкнетесь с проблемами
То, какие проблемы вы заметите и качественно решите, часто и определяет уровень синьерности. Поехали!
Проблемы уровня Junior
Их обычно заметно невооруженным взглядом. Их достаточно часто могут определить даже далекие от рексис люди, посмотрев визуально рекомендации для себя
1. Нерелевантные аспекты
Непопадание в пол, ценовой сегмент или не учет явных интересов пользователя
Классика жанра, встречается практически во всех моделях
Решается очень по-разному: обучением отдельных моделей под сегменты пользователей, фичами в ранжирующем бустинге, костылями на проде - придется быть креативным 😇
2. Почти дубли + Низкое разнообразие
99% моделей оценивают некий скор релевантности товара пользователю. Часто очень похожие товары примерно одинаково релевантны, поэтому могут забить весь топ рекомендаций. Например, разные версии айфонов
Решается продуктово склейкой почти одинаковых товаров в одну карточку товара и на уровне ранжирования учетом разнообразия через DPP / MMR. Есть и более современные подходы: наиболее близки к этой теме multi-interest learning, listwise ranking
3. Кликбейт
Принимает разные формы:
- Слишком дешевые товары
- Слишком дорогие товары (золотой айфон за 1 млн)
- Кричащие заголовки / картинки (Напиток для похудения за 3 дня,курсы по ML с нуля до миддла за 3 месяца )
- Фрод продавцов или создателей контента (Фейковые отзывы, самовыкупы, циклические короткие видео)
- И еще добрая сотня вариантов
В основном борятся с кликбейтом аккуратным выбором таргета (вместо кликов использовать только долгие клики, например) и фильтрацией отдельных товаров/продавцов/тем по рейтингу, CTR и продуктовым свойствам
А как бы вы решали эти 3 проблемы?)
#recsys
По следам классного поста о топ-10 моделях в рек системах. Когда вы их выучите и внедрите, то 100% столкнетесь с проблемами
То, какие проблемы вы заметите и качественно решите, часто и определяет уровень синьерности. Поехали!
Проблемы уровня Junior
Их обычно заметно невооруженным взглядом. Их достаточно часто могут определить даже далекие от рексис люди, посмотрев визуально рекомендации для себя
1. Нерелевантные аспекты
Непопадание в пол, ценовой сегмент или не учет явных интересов пользователя
Классика жанра, встречается практически во всех моделях
Решается очень по-разному: обучением отдельных моделей под сегменты пользователей, фичами в ранжирующем бустинге, костылями на проде - придется быть креативным 😇
2. Почти дубли + Низкое разнообразие
99% моделей оценивают некий скор релевантности товара пользователю. Часто очень похожие товары примерно одинаково релевантны, поэтому могут забить весь топ рекомендаций. Например, разные версии айфонов
Решается продуктово склейкой почти одинаковых товаров в одну карточку товара и на уровне ранжирования учетом разнообразия через DPP / MMR. Есть и более современные подходы: наиболее близки к этой теме multi-interest learning, listwise ranking
3. Кликбейт
Принимает разные формы:
- Слишком дешевые товары
- Слишком дорогие товары (золотой айфон за 1 млн)
- Кричащие заголовки / картинки (Напиток для похудения за 3 дня,
- Фрод продавцов или создателей контента (Фейковые отзывы, самовыкупы, циклические короткие видео)
- И еще добрая сотня вариантов
В основном борятся с кликбейтом аккуратным выбором таргета (вместо кликов использовать только долгие клики, например) и фильтрацией отдельных товаров/продавцов/тем по рейтингу, CTR и продуктовым свойствам
А как бы вы решали эти 3 проблемы?)
#recsys
👍53🔥11❤9👎2
Мой топ-10 проблем с рекомендательными системами. Часть 2/4: Middle
Рекомендации уже неплохие, но нет вау-эффекта. От продакта на этом этапе можно услышать "мы рекомендуем очевидное", "я уже видел подобное Х дней назад"
1. Рекомендательный пузырь
Возникает часто из-за таргета с фокусом на "жирные" действия: заказы товаров, лайк в соц сети, досмотр видео на 80+%
Люди склонны совершать такие жирные действия со знакомым контентом (то, что они уже видели). Решают эту проблему многими путями, самые популярные:
- Аккуратно добавлять в таргет "дискаверийные" действия: длинные клики, например
- Насильно подмешивать в финальную выдачу слабо-персонализированный контент: популярное в городе пользователя, трендовые товары
- Продуктово делать врезки с отдельными категориями
- Фильтровать уже купленные/показанные товары
Менее очевидная причина - Feedback loop: пользователь лайкает то, что мы ему показываем - модель на этом учится и продолжает показывать то же самое
Имхо, переоцененная история. В большинстве сервисов рекомендации - совсем не основной источник кликов/заказов, все же поиск в этом аспекте доминирует. Поэтому просто обучайтесь на всех данных сервиса (не только кликах, заказах из рекомендаций) - и все будет в порядке 😉
Если все же такая проблема есть (например, ваш сервис - ютуб), то можно выделять слоты в ленте с около-случайными рекомендациями и обучатсья на них
2. В рекомендациях нет необычных товаров: нет вау-эффекта (serendipity)
Хотелось бы, чтобы рекомендации помогали человеку увидеть то, что он сам вряд ли бы смог найти за 1-2 поисковых запроса. Это дает вау-эффект, в теории растит удовлетворенность рекомендациями и ретеншен
Чтобы добиться такого эффекта, нужно технически побороть хотя бы popularity bias
- Добавлять в таргет бОльший вес непопулярным товарам
- Умно сэмплить негативы при обучении модели
- Тестировать хитрые лоссы (cosine contrastive loss, например)
- Брать не топ-N товаров из рекомендательного алгоритма (обычно кандидато-генератора), а сэмплить их из всех товаров пропорционально скору модели
#recsys
Рекомендации уже неплохие, но нет вау-эффекта. От продакта на этом этапе можно услышать "мы рекомендуем очевидное", "я уже видел подобное Х дней назад"
1. Рекомендательный пузырь
Возникает часто из-за таргета с фокусом на "жирные" действия: заказы товаров, лайк в соц сети, досмотр видео на 80+%
Люди склонны совершать такие жирные действия со знакомым контентом (то, что они уже видели). Решают эту проблему многими путями, самые популярные:
- Аккуратно добавлять в таргет "дискаверийные" действия: длинные клики, например
- Насильно подмешивать в финальную выдачу слабо-персонализированный контент: популярное в городе пользователя, трендовые товары
- Продуктово делать врезки с отдельными категориями
- Фильтровать уже купленные/показанные товары
Менее очевидная причина - Feedback loop: пользователь лайкает то, что мы ему показываем - модель на этом учится и продолжает показывать то же самое
Имхо, переоцененная история. В большинстве сервисов рекомендации - совсем не основной источник кликов/заказов, все же поиск в этом аспекте доминирует. Поэтому просто обучайтесь на всех данных сервиса (не только кликах, заказах из рекомендаций) - и все будет в порядке 😉
Если все же такая проблема есть (например, ваш сервис - ютуб), то можно выделять слоты в ленте с около-случайными рекомендациями и обучатсья на них
2. В рекомендациях нет необычных товаров: нет вау-эффекта (serendipity)
Хотелось бы, чтобы рекомендации помогали человеку увидеть то, что он сам вряд ли бы смог найти за 1-2 поисковых запроса. Это дает вау-эффект, в теории растит удовлетворенность рекомендациями и ретеншен
Чтобы добиться такого эффекта, нужно технически побороть хотя бы popularity bias
- Добавлять в таргет бОльший вес непопулярным товарам
- Умно сэмплить негативы при обучении модели
- Тестировать хитрые лоссы (cosine contrastive loss, например)
- Брать не топ-N товаров из рекомендательного алгоритма (обычно кандидато-генератора), а сэмплить их из всех товаров пропорционально скору модели
#recsys
🔥38👍13🤔5❤2
Итоги года ML4Value
Год был очень насыщенный: Много нового узнал, кучу статей читал, работу менял, во все возможные поездки ездил, и внезапно написал постов на канале больше, чем в прошлом году:)
Как всегда детальные итоги года подвожу с запозданием - поэтому держите пока итоги от TGStat 🚀
Сделать свою картинку можно через @TGStat_Bot по запросу "2024 @username"
Год был очень насыщенный: Много нового узнал, кучу статей читал, работу менял, во все возможные поездки ездил, и внезапно написал постов на канале больше, чем в прошлом году:)
Как всегда детальные итоги года подвожу с запозданием - поэтому держите пока итоги от TGStat 🚀
Сделать свою картинку можно через @TGStat_Bot по запросу "2024 @username"
👍9❤8🔥5👎3
Что там с рынком IT-вакансий в 2025?
Со всех сторон слышны новости о сокращениях (Самолет, Vk, МТС, Сбер, Альфа и не только). Казалось бы, сейчас сотни кандидатов выйдут на рынок + онлайн-школы выпустят еще пару тысяч -- и да здравствует кровавый океан, где компании диктуют условия, и найм совершается за 1 месяц? Не тут-то было
Если вы сами искали кандидатов за последние полгода, то знаете, что поиск наоборот стал дольше / найма меньше. Но и зарплаты ничуть не снизились. В общем, какой-то парадокс. Далее будет сугубое имхо из анализа рынка и сплетен / новостей от знакомых - все, как мы любим 😊
На рынке джуниор-миддл
Спрос (кол-во вакансий) падает, а предложение (число кандидатов) растет -- по идее, должна снижаться зарплата для уравновешивания рынка. Но зарплаты снижать не вариант: конкуренция со стороны гос it, зарубежа. Также в отдельной команде может быть единственная вакансия за полгода, а не 3-4, как раньше. Поэтому важно найти "идеального" кандидата
Поэтому идет шринкфляция навыков. Помните молоко по той же цене, но за 900 мл вместо литра? Тут то же самое.
Шринкфляция навыков — на вакансию junior ищут кандидата с навыками middle-
В общем, тут советов 2:
- Прокачивайте свои навыки. Теперь недостаточно знать только pandas и catboost даже для стажировки(
- Расширяйте воронку поиска = подавайтесь на бОльшее число вакансий. Только не забывайте все же смотреть на релевантность ваших навыков роли, составлять приличное резюме и сопроводительное -- про конверсию воронки тоже надо помнить
P.S. Год учебы на курсах вписать в качестве года "работы" в резюме - ред флаг🚩
А вот приличный (!) пет проект за опыт работы - вполне вариант
На рынке синьор и выше
Тут ситуация, когда и вакансий мало, но и кандидатов тоже мало! За идеальный мэтч готовы платить много (вакансия синьера от 700k). Поэтому тут рынок превратился в executive search с очень точечным наймом, проверкой бэкграунда и буквально "охотой" за крутыми сотрудниками
Тут вы меня может и не просили советов, но куда ж без них)
- Качайте личный бренд, чтобы быть узнаваемым внутри своей компании и на рынке
- Выступление на конференциях, статьи на Хабре, тг-каналы теперь must have. Но опять же, помните про качество: стать узнаваемым с плохой стороны сотрудником - не очень удачная идея)
Embrace yourself, IT winter has come 🥶
#career
Со всех сторон слышны новости о сокращениях (Самолет, Vk, МТС, Сбер, Альфа и не только). Казалось бы, сейчас сотни кандидатов выйдут на рынок + онлайн-школы выпустят еще пару тысяч -- и да здравствует кровавый океан, где компании диктуют условия, и найм совершается за 1 месяц? Не тут-то было
Если вы сами искали кандидатов за последние полгода, то знаете, что поиск наоборот стал дольше / найма меньше. Но и зарплаты ничуть не снизились. В общем, какой-то парадокс. Далее будет сугубое имхо из анализа рынка и сплетен / новостей от знакомых - все, как мы любим 😊
На рынке джуниор-миддл
Спрос (кол-во вакансий) падает, а предложение (число кандидатов) растет -- по идее, должна снижаться зарплата для уравновешивания рынка. Но зарплаты снижать не вариант: конкуренция со стороны гос it, зарубежа. Также в отдельной команде может быть единственная вакансия за полгода, а не 3-4, как раньше. Поэтому важно найти "идеального" кандидата
Поэтому идет шринкфляция навыков. Помните молоко по той же цене, но за 900 мл вместо литра? Тут то же самое.
Шринкфляция навыков — на вакансию junior ищут кандидата с навыками middle-
В общем, тут советов 2:
- Прокачивайте свои навыки. Теперь недостаточно знать только pandas и catboost даже для стажировки(
- Расширяйте воронку поиска = подавайтесь на бОльшее число вакансий. Только не забывайте все же смотреть на релевантность ваших навыков роли, составлять приличное резюме и сопроводительное -- про конверсию воронки тоже надо помнить
P.S. Год учебы на курсах вписать в качестве года "работы" в резюме - ред флаг
А вот приличный (!) пет проект за опыт работы - вполне вариант
На рынке синьор и выше
Тут ситуация, когда и вакансий мало, но и кандидатов тоже мало! За идеальный мэтч готовы платить много (вакансия синьера от 700k). Поэтому тут рынок превратился в executive search с очень точечным наймом, проверкой бэкграунда и буквально "охотой" за крутыми сотрудниками
Тут вы меня может и не просили советов, но куда ж без них)
- Качайте личный бренд, чтобы быть узнаваемым внутри своей компании и на рынке
- Выступление на конференциях, статьи на Хабре, тг-каналы теперь must have. Но опять же, помните про качество: стать узнаваемым с плохой стороны сотрудником - не очень удачная идея)
Embrace yourself, IT winter has come 🥶
#career
Please open Telegram to view this post
VIEW IN TELEGRAM
hh.ru
Вакансия Senior Machine Learning Engineer (Computer Vision) в Москве, работа в компании Gradient (вакансия в архиве c 10 февраля…
Зарплата: от 700000 ₽ за месяц. Москва. Требуемый опыт: 3–6 лет. Полная. Дата публикации: 11.01.2025.
🔥50👍15🤯8❤3😁2