Как тестировать систему идентификации на новых данных
Что проверяют
Понимаете ли вы, чем «новые данные» отличаются от отложенной выборки из того же распределения. Интервьюер хочет услышать про сдвиг распределения, разбиение без утечек и повторный выбор порога. Следом спрашивают, как понять, что модель пора переобучать.
Как отвечать
Сначала определите, что именно новое:
- новые сессии знакомых объектов: те же пользователи, свежие данные;
- новые идентичности: люди или устройства, которых модель не видела. Для систем на эмбеддингах (лица, голос, отпечаток устройства) это главный сценарий, и разбивать данные нужно по идентичности: человек целиком в train или целиком в test;
- новые условия: другая камера, регион, версия клиента, сезон.
Каркас оценки:
- out-of-time split: обучаете на данных до даты, проверяете на данных после. Случайный k-fold на временных данных смешивает будущее с прошлым и завышает качество;
- метрики на рабочем пороге: FAR и FRR (для антифрода precision и recall) при том пороге, что стоит в проде, плюс ROC-AUC или DET-кривая для общей картины. Порог, подобранный на старых данных, на новых даёт другой FAR, поэтому его перекалибруют;
- сравнение с текущей моделью на одном и том же наборе, с доверительными интервалами через bootstrap: разница в десятую долю процента на маленькой выборке бывает шумом;
- срезы: метрики по сегментам, особенно по новым и редким;
- сдвиг: PSI или KS-тест по ключевым признакам и по распределению скоров.
Ошибки разбирайте руками на выборке ложных допусков и ложных отказов: так находятся дубли, битая разметка и новые паттерны. Итог оформляйте как решение: катим, дообучаем или собираем ещё данных.
Где спотыкаются
Делают случайное разбиение, и один пользователь попадает и в train, и в test. Метрика красивая, в проде провал.
Оставляют старый порог. Модель не стала хуже, но из-за сдвига скоров FAR вырос.
Сравнивают новую модель со старой на разных выборках, и вывод о приросте ничего не стоит.