Ответ
Улучшение системы рекомендаций — это итеративный процесс, основанный на данных и экспериментировании. Я бы действовал по следующему плану:
-
Диагностика и анализ текущего состояния:
- Какие метрики используются (Precision@K, Recall@K, NDCG, CTR, конверсия в покупку)? Какие из них бизнес-критичны?
- Анализ ошибок: какие рекомендации явно плохие? Есть ли patterns (например, рекомендация устаревших товаров)?
- A/B-тестирование текущего алгоритма против простой бейзлайна (например, популярное за неделю).
-
Улучшение данных и фичей:
- Обогащение фичей товара: Помимо категории и бренда, добавить эмбеддинги из описаний (NLP), атрибуты (цвет, размер), сезонность.
- Обогащение фичей пользователя: Учесть не только историю покупок/просмотров, но и долгосрочные предпочтения, демографию (если доступно), контекст сессии.
- Учет временных факторов: Свежесть взаимодействия (последний просмотр важнее), тренды, время суток/день недели.
-
Эксперименты с архитектурой и моделями:
- Гибридный подход: Комбинация коллаборативной фильтрации (CF) и контентных методов. Например, CF дает кандидатов, а контентная модель или ранжировщик (GBDT, нейросеть) переупорядочивают их.
- Двухэтапная архитектура: Этап кандидатов (быстрый отбор тысяч товаров с помощью Item-Item CF, матричной факторизации или эмбеддингов) и этап ранжирования (точная сортировка сотни кандидатов с помощью сложной модели, например, CatBoost или двухбашенной нейросети).
- Внедрение бизнес-правил: Принудительное продвижение новых товаров, устранение out-of-stock позиций, балансировка разнообразия (diversity) и новизны (serendipity).
-
Непрерывный цикл: Любое изменение валидируется через строгое A/B-тестирование на ключевых бизнес-метриках, а не только на оффлайн-метриках качества.