Метрики рекомендаций
Учимся оценивать качество рекомендаций — от Precision@K до NDCG
Зачем нужны специальные метрики для рекомендаций
В рекомендательных системах мы не просто классифицируем «релевантно / не релевантно» — мы формируем упорядоченный список. Порядок элементов критически важен: товар на 1-й позиции увидят все, на 20-й — почти никто. Поэтому обычные Precision/Recall недостаточны, нужны метрики ранжирования.
Precision@K и Recall@K
Самые простые метрики рекомендаций. Берём топ-K рекомендованных товаров и считаем, насколько хорошо мы попали:
Precision@K — какая доля из показанных K товаров оказалась релевантной. Recall@K — какую долю всех релевантных товаров мы нашли в топ-K.
Пример
Пользователю нравятся 10 фильмов. Мы рекомендовали топ-5, из них 3 попали. Precision@5 = 3/5 = 0.6, Recall@5 = 3/10 = 0.3.
Проблема: Precision@K и Recall@K не учитывают порядок внутри топ-K. Если релевантный товар на 1-й позиции или на 5-й — метрика одинаковая. А для пользователя это огромная разница.
MAP (Mean Average Precision)
MAP решает проблему порядка. Average Precision (AP) для одного пользователя считает Precision на каждой позиции, где встречается релевантный товар, и усредняет:
MAP — это среднее AP по всем пользователям. Если релевантные товары стоят выше в списке — AP выше. MAP штрафует за «хорошие товары, спрятанные внизу списка».
Пример AP
Топ-5 рекомендаций: [✓, ✗, ✓, ✗, ✓]. Precision на позициях 1, 3, 5: P@1=1/1, P@3=2/3, P@5=3/5. AP = (1 + 2/3 + 3/5) / 3 ≈ 0.76. Если бы все релевантные были вверху [✓, ✓, ✓, ✗, ✗], AP = (1 + 1 + 1) / 3 = 1.0.
Важно: MAP работает с бинарной релевантностью — товар либо релевантен (1), либо нет (0). Когда нужны градации релевантности (оценка 5 лучше оценки 3), используют NDCG.
NDCG (Normalized Discounted Cumulative Gain)
NDCG — главная метрика ранжирования. Учитывает и порядок, и степень релевантности. Сначала считаем DCG — Discounted Cumulative Gain:
- rel_i — релевантность товара на i-й позиции (может быть 0, 1, 2, 3...)
- Числитель 2^(rel) - 1 — чем выше релевантность, тем больше вклад
- Знаменатель log₂(i+1) — дисконт: позиция ниже → вклад меньше
Чтобы нормализовать DCG в диапазон [0, 1], делим на идеальный DCG (IDCG) — DCG при идеальном ранжировании:
NDCG = 1.0 означает идеальное ранжирование. На практике NDCG@10 — одна из самых популярных метрик в RecSys и поисковых системах.
NDCG vs MAP — когда что использовать?
MAP — для бинарной релевантности (релевантно / нет). NDCG — когда есть градации (оценка 1-5, степень релевантности). На практике NDCG используют чаще, потому что большинство задач имеют градации. MAP проще интерпретировать.
MRR (Mean Reciprocal Rank)
MRR — простейшая метрика ранжирования. Для каждого пользователя находим позицию первого релевантного результата и берём обратную величину:
Если первый релевантный товар на 1-й позиции — вклад 1, на 2-й — 0.5, на 3-й — 0.33. MRR подходит, когда пользователю нужен один правильный ответ (поиск), но плохо работает для рекомендаций, где важен весь список.
Метрики за пределами точности
Точность ранжирования — не единственное, что важно. Хорошая рекомендательная система должна быть полезной в широком смысле:
- Hit Rate — доля пользователей, для которых хотя бы один релевантный товар попал в топ-K. Простая и интуитивная метрика
- Coverage — какую долю каталога система вообще рекомендует. Если рекомендуем только 5% товаров — длинный хвост «мёртв»
- Diversity — насколько разнообразны рекомендации внутри одного списка. Все 10 рекомендаций — один жанр? Плохо
- Novelty — рекомендуем ли мы что-то новое/неожиданное, или только популярное и очевидное
На практике бизнес оптимизирует баланс: высокий NDCG + достаточная diversity + хороший coverage. Максимизация только точности приводит к «пузырю фильтров» и popularity bias.
Оффлайн vs Онлайн метрики
Критически важное различие, которое часто упускают:
Оффлайн метрики
NDCG, MAP, Recall@K — считаются на исторических данных (train/test split). Быстро, дёшево, воспроизводимо. Но оценивают модель только на тех товарах, с которыми пользователь уже взаимодействовал.
Онлайн метрики
CTR, conversion rate, revenue, время на сайте, retention — измеряются в реальном A/B тесте. Показывают настоящий эффект на бизнес, но дорогие и долгие.
Почему оффлайн NDCG не гарантирует рост CTR
Оффлайн метрики считаются на исторических данных — они «видят» только то, что пользователь уже выбирал. Модель может идеально предсказывать прошлое, но плохо работать с новыми товарами или изменившимися предпочтениями. На практике корреляция между оффлайн и онлайн метриками — от умеренной до слабой.
Итого
- Precision@K и Recall@K — базовые, но не учитывают порядок
- MAP — учитывает порядок для бинарной релевантности
- NDCG — учитывает порядок и градации релевантности. Главная метрика ранжирования
- MRR — для задач с одним правильным ответом
- Coverage, Diversity, Novelty — метрики «здоровья» системы
- Оффлайн метрики ≠ онлайн метрики. Финальная валидация — только A/B тест