Popularity baseline
Самая простая модель: рекомендуем всем одни и те же глобально самые популярные фильмы, исключая уже просмотренные.
Теория простым языком
Popularity — это «витрина с хитами»: всем людям мы показываем одно и то же — то, что популярнее всего у остальных. Никакой персонализации, зато проще некуда. С этого начинают, чтобы было с чем сравнивать.
Что нам вообще дано
Прежде чем что-то рекомендовать, договоримся о словах. Их всего три, и они будут встречаться во всех алгоритмах.
Все взаимодействия удобно представить большой таблицей: строки — пользователи, столбцы — фильмы, в клетке стоит оценка (или пусто, если человек фильм не видел). Такую таблицу называют так:
Идея алгоритма
Popularity не смотрит, кто именно перед ним. Он смотрит только на столбцы матрицы и считает, у скольких людей вообще было взаимодействие с каждым фильмом. Чем больше людей — тем «популярнее» фильм. Дальше берём самые популярные и показываем всем подряд.
▸Зачем нужен popularity baseline
Как считается, по шагам
1. Для каждого фильма складываем, сколько пользователей с ним взаимодействовали — получаем «балл популярности».
2. Сортируем фильмы по этому баллу от большего к меньшему.
3. Конкретному человеку показываем верхние K фильмов, выкидывая те, что он уже видел (советовать уже просмотренное бессмысленно).
для каждого айтема i:
score[i] = сколько пользователей взаимодействовали с i
ranking = айтемы, отсортированные по score (убыв.)
recommend(пользователь u, K):
вернуть первые K из ranking, которые u ещё не видел▸Формула / строгое определение
Балл популярности айтема — число пользователей, у которых было с ним взаимодействие:
где равно 1, если условие верно, иначе 0. Это «по числу взаимодействий». Более аккуратный вариант — взвешенный рейтинг с байесовским сглаживанием (как у IMDb), чтобы фильм с двумя оценками по 5 не обгонял фильм с тысячей оценок по 4.3:
здесь — число оценок фильма, — его средняя оценка, — средняя оценка по всему каталогу, — «доверительный порог» (сколько оценок нужно, чтобы верить средней).
Зачем он нужен, если такой простой
Это точка отсчёта. Персональная модель по точности обычно должна обыгрывать popularity — иначе её сложность по этой метрике не оправдана. Но это не абсолют: если цель — новизна, разнообразие или охват длинного хвоста, сложная модель может проиграть popularity по одной accuracy-метрике и всё равно быть полезной. Такую отправную модель называют так:
Важно: «популярно» ≠ «понравилось»
Наш popularity считает число взаимодействий. Но фильм могли часто смотреть и часто ругать. Популярность бывает разной, и выбор меняет рекомендации: по числу взаимодействий; по числу положительных оценок; по средней оценке с байесовским сглаживанием; по недавней популярности (тренд за неделю). Мы берём самый простой вариант — это честный baseline, а не «лучший» способ.
Сильные стороны
- Очень просто и быстро, не требует почти ничего.
- Работает для нового пользователя, о котором мы ничего не знаем (показать хиты — разумно).
- Честная планка качества для всех остальных моделей.
Слабые стороны
- Ноль персонализации: фанату ужасов и любителю мультиков — одно и то же.
- Усиливает «эффект богатые богатеют»: популярное показывается → становится ещё популярнее.
- Бесполезно для нишевых вкусов и для новых фильмов, которые ещё никто не смотрел.
⚠️ Что может пойти не так
- Считаем число оценок, а не «понравилось»: нужен ли порог, средняя оценка или сглаживание — зависит от задачи.
- Popularity bias в самой оценке: популярные фильмы чаще получают высокие оценки, поэтому при пороге «понравилось» popularity выглядит сильнее, чем кажется (см. «Как устроен эксперимент»).
- Петля обратной связи: показываем популярное → его смотрят больше → оно ещё популярнее, а нишевое не получает шанса.
- Не реагирует на свежесть: вчерашние хиты могли уже надоесть; часто нужна оконная популярность с затуханием.
🧠 Проверь себя: Почему при пороге «релевантно = понравилось» popularity неожиданно силён?
Где встречается в жизни
«В тренде», «Топ недели», «Сейчас смотрят» — это всё popularity. Часто им заполняют ленту новому пользователю, пока о нём ещё нечего знать (это называют проблемой холодного старта — к ней вернёмся в других алгоритмах).