Как отлавливать момент изменения распределения данных (дрейф данных)?
Что проверяют
Понимаете ли вы, что дрейф бывает разный и что без разметки качество модели напрямую не измерить. Следом обычно спрашивают, что делать, когда дрейф нашли: сразу переобучать или сначала разбираться.
Как отвечать
Сначала разделите виды:
- дрейф признаков (covariate shift): меняется распределение входов
P(X); - дрейф целевой переменной: меняется доля классов
P(y); - концептуальный дрейф: меняется сама зависимость
P(y|X). Входы выглядят как раньше, а модель ошибается чаще, и видно это только по качеству на свежей разметке.
Схема мониторинга: эталонное окно (данные обучения или спокойный период на проде) сравнивают с текущим окном по каждому признаку.
- PSI: привычен в скоринге. Эмпирическое правило: до 0,1 стабильно, от 0,1 до 0,25 умеренный сдвиг, выше 0,25 пора разбираться;
- тест Колмогорова-Смирнова для числовых признаков и хи-квадрат для категориальных;
- расстояние Вассерштейна и дивергенция Йенсена-Шеннона: в отличие от KL-дивергенции симметричны и не уходят в бесконечность на пустых бинах;
- доменный классификатор: модель учат отличать эталонные данные от текущих. ROC AUC около 0,5 значит, что сдвига нет, а важности признаков покажут, где он есть;
- дрейф предсказаний: распределение скоров модели. Самый ранний сигнал, когда разметка приходит с задержкой в недели.
Для потоков есть онлайн-детекторы ADWIN и Page-Hinkley. Из готовых инструментов: Evidently для отчётов по дрейфу, NannyML для оценки качества без разметки. Реакция зависит от последствий: сместился неважный признак, а метрики стабильны, значит переобучать незачем.
Где спотыкаются
Доверяют p-value на больших выборках. На миллионе строк KS-тест находит «значимый» дрейф в любой мелочи, поэтому смотрят на величину эффекта.
Путают дрейф с поломкой данных. Выросла доля пропусков, сменились единицы измерения, появилась новая категория из-за бага в пайплайне: это инцидент качества данных, и переобучение на таких данных только навредит.
Не учитывают сезонность и множественные сравнения. Сотни признаков, декабрь сравнивают с июлем, и алерты горят каждый день, пока их не начнут игнорировать.