Как оценить эффективность рекомендательной системы?

«Как оценить эффективность рекомендательной системы?» — вопрос из категории Аналитика и метрики, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Оценка рекомендательной системы — это всегда компромисс между оффлайн-метриками на исторических данных и онлайн-метриками в A/B тестах.

1. Оффлайн-оценка (на тестовой выборке): Использую эти метрики для быстрого сравнения моделей.

  • Precision@k и Recall@k: Какая доля из топ-k рекомендаций релевантна (Precision) и какая доля всей релевантной истории пользователя была захвачена в топ-k (Recall).
  • NDCG@k (Normalized Discounted Cumulative Gain): Моя основная метрика, так как она учитывает не только релевантность, но и позицию в списке. Релевантные товары в начале списка ценятся выше.
    
    import numpy as np
    from sklearn.metrics import ndcg_score

Пример расчета NDCG для одного пользователя

true_relevance = np.asarray([[2, 1, 0, 0, 1]]) # Релевантность товаров (например, 2=клик, 1=просмотр) predicted_scores = np.asarray([[0.9, 0.8, 0.7, 0.6, 0.5]]) # Скоры модели ndcg = ndcg_score(true_relevance, predicted_scores, k=3) print(f"NDCG@3: {ndcg:.3f}")



**2. Онлайн-оценка (A/B тест):**
Оффлайн-метрики не всегда коррелируют с бизнес-результатом, поэтому финальный вердикт выносят A/B тесты.
*   **Основные метрики:** Конверсия в целевое действие (покупка, клик, просмотр), средний чек, общая выручка с пользователя (ARPU).
*   **Вспомогательные метрики:** Вовлеченность (время на сайте, глубина просмотра), диверсификация рекомендаций.

**Мой подход:** Сначала отбираю несколько моделей с лучшими NDCG/Precision на валидации, а затем запускаю их в A/B тесте для измерения реального влияния на бизнес.