Задача: как измерить, насколько хороши рекомендации
Рекомендательная система выдаёт список из K товаров. Как понять, насколько список хороший? Для этого используют пару метрик: precision и recall.
Точность (Precision) отвечает на вопрос: «Сколько из рекомендованных товаров оказались релевантными?»
Полнота (Recall) отвечает на вопрос: «Сколько из всех релевантных для пользователя товаров система нашла и показала?»
Пример:
Всего релевантных товаров для пользователя: 20
Система рекомендовала: 10 товаров
Из них релевантных: 7
Precision = 7 / 10 = 0.70 (70% рекомендаций попали в цель)
Recall = 7 / 20 = 0.35 (35% от всего релевантного охвачено)
Компромисс precision vs recall
Между этими метриками существует фундаментальный компромисс. Чтобы повысить recall (охватить больше релевантных товаров), система должна рекомендовать больше товаров или быть менее строгой в фильтрации — и тогда среди них появляется больше нерелевантных, точность падает.
| Сценарий | Что меняется | Эффект |
|---|---|---|
| Увеличить K (больше рекомендаций) | ↑ Recall | ↓ Precision |
| Ужесточить пороговый скор | ↑ Precision | ↓ Recall |
| Показывать только бестселлеры | ↑ Precision | ↓ Recall (длинный хвост пропадает) |
Precision@K и Recall@K
В рекомендательных системах метрики всегда считаются при фиксированном K — числе позиций в виджете:
- Precision@5 — для виджетов на главной с 5 слотами
- Precision@10 — для горизонтального виджета на PDP
- Recall@20 — для поиска или email-подборки
Это делает метрики сопоставимыми и привязанными к реальным условиям интерфейса.
F1-score: когда нужен баланс
F1-score — гармоническое среднее precision и recall. Полезен, когда нет явного приоритета и нужно сравнивать несколько моделей единым числом.
F1 = 2 × (Precision × Recall) / (Precision + Recall)
Модель A: Precision 0.80, Recall 0.80 → F1 = 0.80
Модель B: Precision 0.95, Recall 0.20 → F1 = 0.33
Модель B выглядит «точной», но охватывает только 20% релевантного — F1 честно показывает её слабость.
Совет: precision и recall — офлайн-метрики, рассчитываемые на исторических данных. Для окончательной оценки рекомендательного алгоритма их нужно подтверждать онлайн-метриками в A/B тесте: CTR виджета и атрибутированной выручкой.