Your trial period has ended!
For full access to functionality, please pay for a premium subscription
RE
Персонализация неизбежна
https://t.me/recsys_for_all
Channel age
Created
Language
Russian
-
ER (week)
-
ERR (week)

связь со мной - @lashinin

Messages Statistics
Reposts and citations
Publication networks
Satellites
Contacts
History
Top categories
Main categories of messages will appear here.
Top mentions
The most frequent mentions of people, organizations and places appear here.
Found 3 results
Наша статья принята на SIGIR (конференция уровня A*) 2025 🎉!

Мы долго шли к этому моменту - и вот, наконец, наша с коллегами статья принята на SIGIR 2025, международную конференцию в Италии 🇮🇹! Это уже третья итальянская конференция за год, куда нам посчастливилось пройти.

SIGIR (Special Interest Group on Information Retrieval) — по данным Вики, проводится с 1978 года. Конференция в целом посвящена информационному поиску: обычный поиск, рекомендательные системы, ответы на вопросы по базам знаний и т. д.

Наша статья посвящена новому способу диверсификации (= внесения разнообразия) в выдачах. Он был придуман из практических соображений, после того как мы попробовали хорошо известные MMR и DPP. Про статью и наш метод напишу после публикации, пока же — пару мыслей про диверсификацию.

Откуда возникает потребность в диверсификации?

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

1) Схожесть пользователя с айтемом.
2) Схожесть + счётчики взаимодействий между пользователем и категорией/жанром/типом айтема.
3) Схожесть + счётчики взаимодействий между кластером пользователя (соцдемом/другим) и категорией/жанром/типом айтема.
4) Счётчики по категории/жанру/типу айтема.

Пусть среди айтемов-кандидатов есть 300 смартфонов. Тогда все 4 типа признаков у этих 300 телефонов будут примерно одинаковы! И если ранкер присвоит хоть одному смартфону высокий скор, то и остальным 299 смартфонам придётся выставить столь же высокие скоры (если другие группы фичей не позволят их различать).

Теперь представим, что мы играем с пользователем в «Поле чудес». Пользователь загадывает слово (где буквы — его интересы), а мы угадываем его, предлагая айтемы в ленте. В этом случае лента с 300 смартфонами без диверсификации — это как если бы мы называли одну и ту же букву снова и снова. Даже если пользователь говорит «нет» (= не взаимодействует с ними), мы продолжаем предлагать ему ту же самую «букву». Чтобы использовать попытки разумнее, можно попробовать назвать что-то менее вероятное, но зато другое. Тогда шанс угадать вырастет.

В целом, MMR и DPP — это эвристики, которые помогают «играть» в эту игру эффективнее, если у нас есть оценки релевантности айтемов и функции сходства между ними. Без таких эвристик система может составлять ленту из полностью однотипного контента, потому что обычно скоры рекомендаций рассчитываются для каждого айтема независимо. Когда модель рекомендует смартфон на 50-й позиции, она не знает, что выше уже было 49 смартфонов, и поэтому всё так же уверена, что 50-му нужно присвоить высокий скор.

Кому интересно копнуть чуть глубже в моделирование для автоматической диверсификации - советую прочитать статью 2024 года от LinkedIn и статью про Generative Next-Basket Recommendation от Tencent (постер скину в комментариях). Однако на практике, кажется, пока не существует хорошего автоматического диверсификатора, который был бы широко распространён и не являлся бы эвристикой.
04/05/2025, 14:35
t.me/recsys_for_all/18
Пишите в комменты, если у вас есть какие-то мысли/возражения на этот счет. Или также если знаете хорошие ресерч статьи на эту тему, которые я пропустил)
03/16/2025, 18:13
t.me/recsys_for_all/17
Куда движется рекомендательная система?

После некоторого времени работы с рекомендательными системами проблемы и подходы к их решению начинают встречаться повторно. Например, если есть проблема холодного старта, то есть и N докладов на эту тему, и M научных статей об этом. Иногда, однако, хочется подумать о великом, о чем, кажется, нет хороших и известных материалов на сегодняшний день. Об одной из таких дум пишу первый пост в 2025 году.

Начнем с такого примера. Есть одна рек. система, которая регулярно обучается на свежих данных и показывается пользователям. Под системой буду иметь ввиду весь программный код, всех юзеров и айтемов, которые участвуют в системе. Посмотрим на нее сегодня (система "Н" = новая) и неделю назад (система "С" = старая). Дальше хочется сказать, что это две разные системы и подумать, правда ли что "Н" лучше, чем "С"?

Что общего между системами "С" и "Н"?
- Весь программный код, он не менялся.

Какие есть интересные отличия между системами "С" и "Н"?
- Пользовательский опыт взаимодействия с системой. Пользователь Вася неделю назад не делал клики вообще ни на что из каталога айтемов, а вчера сделал три клика где-либо. Система "С" не знала об этих трех кликах Васи, а система "Н" уже знает.
- Статистики по айтемам. Скорее всего, для системы "С" и "Н" есть айтемы с высокими конверсиями, но списки отличаются между двумя системами.
- Модели. Будь это нейронка или градиентный бустинг, их чекпоинты/веса будут отличны между собой. Причина: они обучались на разных датасетах, хоть и собраны одинаковым способом (кодом), но в разное время.

Теперь представим, что есть система с плюс-минус стандартным пайплайном и фичами в модели, и она в целом работает неплохо. Если вернуть этот код во время начала проекта, когда люди кликали только на популярные товары из небольшого набора, то, вероятно, вся персонализация исчезнет. В обратную сторону, если проект только стартует, а данные не разнообразны, то даже если код достаточно хороший, он все равно не поможет сделать персонализацию. Однако через время именно этот код позволит получить достойные результаты. Поэтому на большом временном промежутке я точно уверен, что "С" и "Н" сильно отличаются, а значит, есть и малые промежуточные изменения.

Осознав это, я стал думать, что система находится в постоянном движении. Дальше несколько вопросов, на которые я пока не нашел ответа:

1. Как распознать, стала ли система "Н" лучше "С", если мы с ней ничего и не делали? Может быть, следует изучить метрики ранжирования оффлайн/онлайн? Я с этим не согласен, так как на них влияют разные факторы. Может тогда провести АБ тест между "Н" и "С"? Тоже не считаю данный способ эффективным, ведь честный АБ дизайн почти не реализуем.
2. Что сделать, чтобы "Н" была лучше чем "С" при идентичности их кода? Забудем про то, что без ответа на вопрос №1 мы не сможем это оценить. Напихать околорандомные айтемы в ленты рекомендаций, чтобы случайно угадать интерес пользователя и за него зацепиться - это, кажется, единственный ответ, который приходит в голову. Но это эвристика, а значит может оказаться не самым хорошим решением. Да и вряд ли масштабно решает проблему.
3. Как описать движение системы на понятном для людей языке? Все оффлайн/онлайн метрики описывают системы "С" и "Н", но не описывают разницу между ними. Хотелось бы человеческого описания. Например, система "Н" заступила на прод в час ночи 13.03.25. Пользователи стали более разнообразно кликать на q%, что позволило вырастить количество обнаруженных интересов на w%. Это повысило значимость признаков X, Y, Z, что улучшило персонализацию на сегментах R и T. Система "Н" стала лучше персонализировать, потому что случились события а) ..., б) .... Для последующего улучшения предприняты действия A, S, D. Подобное описание, думаю, здорово бы помогло осознать, что вообще происходит.

Еще один наброс: если система "Н" лучше чем "С" и принесет еще +x% метрик, то вы об этом не узнаете, ведь на это скорее всего нет АБ теста. В обратную сторону данная логика тоже работает 🙂
03/16/2025, 18:13
t.me/recsys_for_all/16
Search results are limited to 100 messages.
Some features are available to premium users only.
You need to buy subscription to use them.
Filter
Message type
Similar message chronology:
Newest first
Similar messages not found
Messages
Find similar avatars
Channels 0
High
Title
Subscribers
No results match your search criteria