Как тестировать рекомендательные системы



Под одним из прошлых постов было много вопросов о тестировании рек систем: как не выкатить на прод рекомендации в обратном порядке, например)



Я на практике использовал такие тесты:



1. Полнота данных

70% ошибок максимально глупые: упала база и не залились данные. Сменился год с 21 на 22 и у вас полетела часть запросов

Решается обычным assert-ом на кол-во строк, уникальных дат/юзеров/товаров



2. Качество фичей

Есть тысяча статей про distribution shift, детекцию выбросов и т.д., но обычно проблемы куда проще. Использовать np.mean вместо np.nanmean и получить 90% NaN в фиче? Иметь средние чеки в 1млрд руб, хотя реальные чеки до 5-10к? Вот с чем стоит побороться в первую очередь!

Решается также обычным assert-ом



3. ML и бизнес метрики

Assert-ы на ml метрики на тестовой выборке. Если позволяет инфра, то каждое переобучение модели сопровождать мини-АВ



4. Бизнес-адекватность

У 70% пользователей в топе рекомендаций рестораны с рейтингом < 3.0? Популярные товары не в топе? Тоже стоит с этим побороться



Лучше классическими автотестами на real-time / батчевых запросах к модели



Обычно хватает ~1к запросов и базовой логики с теми же assert-ами



5. Смотреть глазами

Никто не любит это делать, но потратьте 3 минуты своего времени и посмотрите рекомендации модели для себя и своего соседа на адекватность перед выкаткой. Это спасет вам много времени и денег 😅



#recsys