Sobes.tech
Назад к вопросам
Middle — Senior
8

Что такое популярность-байас и как с ним бороться?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

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

Определение:

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

Пример использования:

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

# Упрощенный пример: модель учится на логах кликов,
# где популярные товары встречаются чаще и получают больше positive labels.

logs = [
    {"user": 1, "item": "A", "clicked": 1},
    {"user": 2, "item": "A", "clicked": 1},
    {"user": 3, "item": "A", "clicked": 1},
    {"user": 4, "item": "B", "clicked": 1},
    {"user": 5, "item": "B", "clicked": 0},
]

# Если item A чаще попадает в выдачу и чаще кликается,
# модель может выучить "A == хороший item" просто из-за популярности.
# Для борьбы можно:
# 1) пере-взвешивать примеры по propensity,
# 2) добавлять exploration,
# 3) ограничивать долю популярных items в выдаче,
# 4) использовать debiased learning-to-rank.

Пояснение кода:

Код здесь иллюстрирует сам механизм смещения, а не полноценную реализацию. Сначала собираются логи взаимодействий: какие объекты показывались и какие из них кликнули. Затем модель обучается на этих логах и видит, что объект A встречается и положительно размечается чаще, чем B. Если не учитывать, что A изначально показывали чаще, модель интерпретирует это как более высокое качество A, хотя часть эффекта объясняется самой популярностью и экспозицией.

Практически борьба выглядит так:

  1. Считают вероятность показа объекта в данных.
  2. Корректируют вклад примеров, чтобы популярные объекты не доминировали.
  3. Добавляют exploration, чтобы новые и редкие объекты тоже получали показы.
  4. Проверяют качество на unbiased/offline-метриках, а не только на кликах из исторических логов.

Ключевые моменты:

  • Популярность-байас — это не просто «модель любит популярное», а эффект замкнутого цикла: популярное чаще показывают, чаще кликают, и оно становится еще популярнее.
  • Причина часто в данных: они собраны с уже смещенной политикой показа.
  • Без коррекции модель может ухудшать разнообразие, cold start и долгосрочное качество рекомендаций.
  • Основные методы борьбы: propensity weighting, debiased learning-to-rank, exploration/exploitation, регуляризация по разнообразию, ограничения на выдачу.
  • Важно отличать истинный интерес пользователя от эффекта экспозиции.
  • Для оценки лучше использовать методы, учитывающие bias в логах, иначе offline-метрики будут завышать качество популярных объектов.