Information Retriever
3.45K subscribers
254 photos
1 video
8 files
127 links
Download Telegram
Продолжаем новую рубрику =)
😁465🥰2🌭1
Наконец-то добрался написать про RecSys Challenge 2025, в котором мне посчастливилось поучаствовать вместе с R&D-командой по рекомендательным системам Яндекса: Серёжей Макеевым, Владимиром Байкаловым, Алексеем Красильниковым, Владом Тыцким и Кириллом Хрыльченко. Отдельно хочется выделить Серёжу Макеева — он сражался как лев, особенно в последнюю неделю перед первым дедлайном и ещё 5 дней перед вторым. (Ага, не так страшны первые 90% проекта, как вторые)

Для тех, кто не в курсе: RecSys Challenge — это соревнование по рекомендательным системам, приуроченное к конференции RecSys 2025. В далёком 2015 году команда из Yandex Data Factory, в составе которой был Евгений Соколов, уже выигрывала это соревнование, так что мы в целом были настроены на победу тоже. Наше решение — ансамбль разных нейросетевых моделей плюс хендкрафт-фичи. Собственно, за хендкрафт отвечал я. Забавный факт: даже в нейросетевую эру хендкрафт всё ещё приносит ощутимый профит. Про это, конечно, рассказывали на лекциях ШАД по RecSys, но я не верил и как обычно плохо слушал. Теперь верю.

Соревнование продлили дважды: сначала с 10 июля по 25 июля — из-за дата-лика, потом ещё — с 25 по 30 июля. К последнему продлению я даже приложил руку. Да-да, именно я заставил коллег делать по 8 сабмитов в день на выходных. За несколько недель до конца соревнования заметил, что при локальном эвале по первой задаче метрика иногда улетает в небеса. При внимательном анализе оказалось, что метрики, по которым пересчитывается лидерборд, изредка считались на нулевой эпохе — то есть на случайно инициализированной нейросети — и тогда по первой задаче выскакивали аномально большие значения. На самом лидерборде такого поведения не было видно на тот момент — я успокоился и забил. Но за два дня до дедлайна в системе появились несколько посылок с невероятно высоким скором по первой задаче. Написал оргам 24 июля, те за день до дедлайна — они признали факап и пересчитали решения конкурентов. За это время мы ещё успели чуть-чуть поднять метрики. Наступил дедлайн, система перестала принимать сабмишены, игроки опубликовали топовые решения, которые до этого не светились на лидерборде, — и мы оказались на 4-м месте. Тут орги решили, что их мув с пересчетом решений за один день до дедлайна не совсем честный, и продлили дедлайн на 5 дней и увеличили число сабмишенов в день 🤡. У нас реально появился шанс залететь в призы, мы снова включились в работу, улучшили общий скор, но всё равно остались четвёртыми.

P.S. Второе место заняла команда из Сбера (ai_lab_recsys). Вот разбор их решения: https://vkvideo.ru/playlist/-229792778_-2/video-229792778_456239026?from=groups&gid=229792778.
130🔥4👍31
В преддверии ACM RecSys 2025 решил устроить маленькое путешествие по Европе:
* 6 — 14 сентября: Венгрия (Будапешт)
* 14 — 20 сентября: Австрия (Вена)
* 20 — 27 сентября: Чехия (Прага)

В Чехии пройдет сама конференция, а в Австрии мы с ребятами посетим RecSys Summer School. Темы лекций выглядят интересно, постараюсь осветить на канале. Если окажетесь в этих же городах в те же даты — пишите в личку. Соберём первую мини-сходку канала :)

К поездке готов:

1. Послушал курс A History of Eastern Europe от Gabriel Liulevicius на Audible.

2. Прошёл игру Kingdome Come: Deliverance, действия которой разворачиваются в средневековой Чехии.

Осталось Отель “Гранд Будапешт” пересмотреть =)
37🔥15👍5
Был сегодня на рексис митапе от vk. Что обсуждали в кулуарах:

* если слишком часто обучать ALS’ы, будут сниться айтемные пространства
* в ламоде делают свой миксиджен, и вообще рексис на подъеме
* круто заниматься рекомендациями в продуктах, в которых много пользователей и рекомендации являются ключевой фичой
* R&D гораздо лучше делается, когда идеи идут bottom up
* публикации лучше зеленых аб тестов
* наши статьи (Аргуса хвалили, logQ прожаривали)
* французы плохо дают визы
* уже совсем скоро за нас LLM’ки будут писать весь код
* шахматы, Каро-канн, фианкетирование за белых (спросили есть ли у меня любимый дебют — с гордостью ответил, что Каро-канн)
* ресерч становится все популярней в рексис индустрии
🔥48💯108👍2😴2🥰1🍌1
Forwarded from DS League
#recsys #dataset #news
VK-LSVD: Large Short-Video Dataset

Особенный домен
Я пришел в RecSys из CV, где публичным бенчмаркам можно было доверять: результаты из научных статей хорошо коррелировали с продом. Поэтому, возглавив RecSys R&D, я предложил стратегию экспериментов с SotA моделями из академических статей, но практически на все предложения услышал: “уже пробовали, на нашем масштабе прироста нет”.

Различия в методах валидации и доступности данных в академии и индустрии оказались внушительными. И хотя сейчас ситуация чуть лучше, RecSys всё ещё сильно отстаёт от CV/NLP.

Что предлагает сообщество?
Многие из выкладываемых датасетов содержат только то, что можно спарсить самостоятельно (например, отзывы и контент, как в Amazon Reviews, MovieLens или MicroLens). Однако ключевые сигналы для рекомендаций индустриальные системы получают вовсе не из отзывов.

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

Интересные датасеты выкладывают Tencent (Tenrec) и Kuaishou (KuaiRec). Но несмотря на сотни миллионов DAU их сервисов, эти данные все еще очень далеки от индустриальных масштабов.

Что решил сделать я?
Я опубликовал самый близкий к индустриальным масштабам рекомендательный датасет VK-LSVD с 40В взаимодействий. Второй по размеру сейчас MLHD с 27B взаимодействий, а замыкает тройку свежая Yambda на 4.79B записей логов.

Ключевые отличия VK-LSVD
40B взаимодействий. Упорядоченные по времени данные за 6 месяцев, которые включают и просто показы без реакций.
7 видов фидбека. Кроме привычного таймспента есть лайки, открытия комментов, шэры, закладки, дизлайки, клики на автора.
3 вида контекста. Место взаимодействия (лента, поиск, группы,…), платформа (десктоп, тв, смартфон,…), агент (тип браузера, клиента в приложении,…).
20M айтемов. Для каждого клипа известен автор, длительность и контентный эмбеддинг (недавно рассказывали, как их варим).
10M пользователей. С возрастом, полом и гео.
Кастомный сабсемплинг. В индустрии часто приходится решать задачу согласованности оффлайн-метрик с онлайн-результатами для ускорения проверки гипотез. Академия может помочь нам с исследованием стратегий семплинга, результаты которых хорошо соотносятся с метриками на больших выборках.

Почему именно клипы?
В работе мне доступно много форматов (от музыки до знакомств), но именно клипы выглядят самыми подходящими для бенчмаркинга.

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

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

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

Все это повышает точность оффлайн-оценки алгоритмов и позволяет добиваться лучшей корреляции с онлайном. Кроме того, выводы, полученные на клипах, хорошо обобщаются и на другие форматы (что мы наблюдали с DB&NWT).

Что дальше?
Датасет готов к вашим экспериментам, впереди еще статья и масштабное соревнование, так что stay tuned.

@ds_league
35👍19🥱2
RecSys Summer School, день первый.

На этой неделе перед основной конференцией ACM RecSys проходит летняя RecSys школа в Вене, большую часть которой составляют лекции различных профессоров / ресерчеров.

Для меня это возможность научиться чему-то новому, набрать побольше материала для собственного курса по рексису, понетворкаться, а также потусить целую неделю в Вене :)

Что интересного было в первый день:

1. Dietmar Jannach, один из самых цитируемых ученых в RecSys, выступил с вводной лекцией про рекомендательные системы: про их ценность, алгоритмы, оценку качества. С такой лекцией он выступает уже не первый раз, презентации прошлых лет есть в открытом доступе.

Приводил много разных фактов про пользу рексистем. Например, (1) 35% выручки Амазона атрибуцируется рексистемам, (2) а в Нетфликсе говорят, что с помощью персонализации и рексистем “экономят” больше миллиарда долларов в год.

Интересно было послушать и про историческое развитие области:
* в 1992 году в статье Using collaborative filtering to weave an information tapestry впервые был упомянут термин “Collaborative Filtering”
* в 1994 появился первый кейс индустриальной рексистемы (GroupLens, рекомендация новостей), статья GroupLens: an open architecture for collaborative filtering of netnews
* в 2003 Амазон опубликовал статью про Item-to-Item Collaborative Filtering
* потом состоялся небезызвестный Netflix prize (2006 — 2009), в рамках которого Нетфликс выложил самый большой на тот момент рекомендательный датасет с пользовательскими рейтингами фильмов. Про это есть хороший рассказ от CPO Нетфликса на рексисе в 2014 году (тык)
* позже от задачи предсказания рейтингов перешли к learning-to-rank парадигме, стали использовать implicit feedback (время просмотра, клики и тд). Активно использовали матричную факторизацию
* сейчас царит deep learning, про использование которого в рексистемах ваш покорный слуга аж четыре лекции в ШАДе в прошлом учебном году читал, и в этом планирует прочитать еще больше :)

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

Упоминал beyond accuracy метрики (статья Beyond accuracy: evaluating recommender systems by coverage and serendipity).

Fun fact: в какой-то момент Dietmar занимался рексистемой для премиальных кубинских сигар =)

2. Barry Smyth (h-index 85!) выступил с рассказом по мотивам статьи People Who Liked This Also Liked ... A Publication Analysis of Three Decades of Recommender Systems Research, в которой приводится аналитика по всем RecSys публикациям за ближайшие 30 лет. Также он немного дополнил рассказ про историю рексистем, показал статью аж 1990 года от Jussi Karlgren под названием An Algebra for Recommendations, в которой уже говорится про моделирование пользовательского поведения и предсказание будущего пользователей. Еще показал очень красивое издание Communications of the ACM 1997-го года, special issue on recommender systems (картинку прикладываю).

Получилось, что за последние 30 лет появилось порядка 50к статей про рекомендательные системы.

А сегодня, во второй день школы, были лекции по психологии, графовым нейронным сетям, а также про оффлайн оценку качества рексистем. Но про это расскажу чуть позже :)
50🔥24🤔2🐳2
Best Practices for Offline Evaluation.

Под оффлайн-оценкой качества рекомендаций подразумевается типичный для ресерча процесс (присутствует в 87% RecSys’23 статей), когда мы берем датасет с пользовательским фидбеком, сплитим на train/valid/test, замеряем метрики на тесте.

Ниже идет моя вольная интерпретация лекции от Lien Michiels на RecSys Summer School:

1. Большая часть ресерч статей — это “мы увеличили ndcg / recall на датасете X на 0.0Y% и побили SOTA”. Этим улучшениям нет доверия. По ходу школы неоднократно шутили, что если бы можно было просуммировать зарепорченные приросты из всех статей, побивших соту, то мы бы давно вышли за верхние границы метрик. Есть непаханое поле для более осознанного ресерча — задайте stakeholder’ов (например, кроме пользователей это могут быть content creator’ы, сама платформа), сформулируйте реалистичный objective (e.g., хотим не только поднять точность для пользователей, но и поднять exposure по content creator’ам).

2. Запускайте эксперименты несколько раз (с зафиксированными сидами), выкладывайте весь код — не только код метода, но и код запуска экспериментов, включая бейзлайны; и даже код тюнинга гиперпараметров.

3. Используйте публичные датасеты, при этом выбирайте наиболее большие и свежие.

4. Очень популярна n-core фильтрация, когда из датасета фильтруются все пользователи и айтемы с менее чем n взаимодействиями. Не нужно делать ее просто так; повторение за другими статьями — не обоснование.

5. Не используйте совсем рандомные дата сплиты (это лик).

6. Всегда перезапускайте бейзлайны (на своих машинках), не копируйте результаты из других статей.

7. Используйте сильные бейзлайны. Например, в статьях часто используют BPRMF (матричная факторизация с BPR-лоссом), а EASE — редко . А метрики у него выше :)

8. Используйте beyond accuracy метрики — например, coverage (насколько ваш алгоритм своими рекомендациями покрывает весь каталог; для кандгена актуально); время работы алгоритма.

9. Нужно тюнить все модели (и все гиперпараметры), а не только свои. Включая бейзлайны!

10. Считайте метрики без сэмплирования негативов.

11. Зачастую, если пофильтровать из рекомендаций то, что у пользователя в истории уже встречалось, можно поднять метрики. Это нормально, но если так делаете — нужно явно писать (сейчас часто не пишут).

С некоторыми моментами на лекции я не совсем согласен, и поэтому про большую часть из них выше ничего не писал:

1. На лекции говорилось, что в некоторых ситуациях отсутствие таймсплита для эвала — это нормально. Что это зависит от домена (например, в музыке таймсплит менее необходим чем в новостях), и что иногда для таймсплита недостаточно данных. Я считаю что тайм сплит нужен абсолютно всегда, даже в доменах типа музыки. Еще был кусочек про user split, что если в тест и трейн класть непересекающихся пользователей, то будем проверять strong generalization. Это совсем не соответствует сценарию реального применения.

2. Также было сказано, что если все-таки сэмплируете негативы для метрик, то надо сэмплировать их пропорционально популярности (а не равномерно). Это тоже не соотвествует сценарию применения.

3. В качестве примера хорошей метрики приводился ndcg (на сэмплированных айтемах / индексе). Но он ничего информативного не измеряет. Если вы обучаете модель для стадии отбора кандидатов, то нужно смотреть на полноту (Recall@K), причем с большими значениями K. Если для ранжирования — надо замеряться не против случайных айтемов, а против других показанных в той же выдаче объектов (impression’ов). По крайней мере, так делают все в индустрии, и это хорошо работает.

4. С тюнингом размерности эмбеддингов тоже не совсем согласен — в зависимости от сценария применения это может быть не целесообразно. Например, если вы пересчитываете векторы пользователей в оффлайне и загружаете в key-value storage, то у вас есть ограничения по памяти. На практике для одной модели редко когда можно хранить больше 100-1000 квантизованных флотов на пользователя.

И прикладываю пару фотографий с этого дня школы :)
🔥34👍1812💯5