Теория + Интерактив

Метрики ранжирования в RecSys

Интерактивный гайд: двигайте элементы, меняйте релевантность, наблюдайте как NDCG, MAP и другие метрики обновляются в реальном времени.

Зачем ранжирование

Рекомендательная система возвращает не просто набор элементов, а упорядоченный список. Пользователь видит первые 5-10 позиций — и решает, полезна ли рекомендация. Поэтому важно не только «что» рекомендовать, но и «в каком порядке».

Метрики ранжирования оценивают качество этого порядка. Одни используют бинарную релевантность (релевантен / нет), другие — градуированную (от 0 до 3). Выбор метрики зависит от задачи: первый результат важнее всех или нужно покрыть все релевантные элементы.

Почему порядок имеет значение

В поиске Google пользователь редко заходит дальше первой страницы. Если релевантный результат на позиции 50 — для пользователя его не существует.

Precision@K и Recall@K

Precision@K — доля релевантных элементов среди первых K позиций. Recall@K — какую долю всех релевантных элементов удалось найти в top-K. Обе метрики используют бинарную релевантность: элемент либо релевантен, либо нет.

Precision@K отвечает на вопрос «насколько чисто» — сколько мусора в выдаче. Recall@K — «насколько полно» — сколько полезного пропущено. При маленьком K precision обычно выше (легче быть точным на малом объёме), а recall — ниже.

Рекомендация фильмов на главной

Показываем 5 фильмов. Precision@5 = 0.8 означает, что 4 из 5 фильмов пользователю понравятся. Recall@5 = 0.4 — нашли 40% фильмов, которые ему бы зашли.

MAP (Mean Average Precision)

MAP вознаграждает модель за то, что релевантные элементы стоят выше в списке. Для каждой позиции i, где стоит релевантный элемент, считается Precision@i. Затем эти значения усредняются.

В отличие от простого Precision@K, MAP чувствителен к порядку внутри top-K. Два списка с одинаковым Precision@5, но разным расположением релевантных элементов, дадут разный MAP.

Поиск товаров в интернет-магазине

Пользователь ищет «ноутбук для программирования». MAP высокий, если подходящие ноутбуки — на первых позициях, а аксессуары и чехлы — ниже.

MRR (Mean Reciprocal Rank)

MRR фокусируется на одном вопросе: на какой позиции стоит первый релевантный результат? Если на 1-й — MRR = 1. Если на 3-й — MRR = 1/3. Если релевантных нет в выдаче — MRR = 0.

Метрика идеальна, когда пользователю нужен один ответ: «какая погода?», «кто режиссёр Матрицы?», «ближайшая аптека». Остальные результаты не важны — важен первый правильный.

Голосовой ассистент

Алиса отвечает на вопрос «Столица Франции?». Первый ответ должен быть «Париж». MRR = 1 — идеально. Если «Париж» на 3-м месте — MRR = 0.33, пользователь уже разочарован.

Hit Rate

Hit Rate — самая простая бинарная метрика: есть ли хотя бы один релевантный элемент в top-K? Да — 1, нет — 0. Для одного запроса это 0 или 1, но при усреднении по пользователям получается осмысленная метрика.

Hit Rate@10 = 0.85 означает, что для 85% пользователей в первых 10 рекомендациях нашёлся хотя бы один полезный элемент. Метрика грубая, но показывает базовый уровень качества.

Блок «Вам может понравиться»

В карточке товара показывается 4 похожих продукта. Hit Rate@4 отвечает: «Хотя бы один из них заинтересует пользователя?»

DCG и NDCG

DCG (Discounted Cumulative Gain) использует градуированную релевантность: не просто «да/нет», а числовую оценку (0, 1, 2, 3). Формула состоит из двух частей: gain (2^rel - 1) усиливает разницу между уровнями, а discount (log2(i+1)) штрафует за низкую позицию.

NDCG нормализует DCG делением на IDCG — DCG идеального ранжирования (когда все элементы отсортированы по убыванию релевантности). NDCG всегда в диапазоне [0, 1], где 1.0 — идеальный порядок.

Плейлист Discover Weekly

Spotify рекомендует 30 треков. Трек с rel=3 (обожаю!) на 1-й позиции вносит вклад 7.0. Тот же трек на 10-й позиции — только 2.03. NDCG показывает, насколько близок плейлист к идеалу.

Как выбрать метрику

Выбор метрики зависит от задачи и типа релевантности:

Бинарная релевантность (лайк / не лайк, купил / не купил): используйте Precision@K, Recall@K, MAP, MRR, Hit Rate. Если важен первый результат — MRR. Если важно покрытие — Recall@K. Если качество списка целиком — MAP.

Градуированная релевантность (рейтинг 1-5, время просмотра, глубина скролла): используйте DCG и NDCG. Они учитывают, что «обожаю» и «нормально» — не одно и то же.

Правило выбора

Один ответ нужен? MRR. Нужно покрытие? Recall@K. Качество списка с учётом порядка? MAP (бинарная) или NDCG (градуированная). Базовая проверка «работает ли вообще»? Hit Rate.

Загрузка интерактивного виджета...