В ML-системах модель может деградировать даже без изменений в коде. Частые причины — data drift и concept drift. Эти термины часто путают, но реагировать на них нужно по-разному.
- Data Drift — изменилось распределение входных данных. Пример: модель скоринга обучалась на клиентах из офлайна, а потом в поток добавились пользователи из мобильного приложения. Возраст, география, поведение — уже другие.
- Concept Drift — изменилась сама зависимость между признаками и целевой переменной. Пример: раньше частые ночные покупки были признаком мошенничества, а после распродаж и роста маркетплейсов это стало нормой.
Как отличить
- Если входные признаки “поплыли”, но логика связи с target осталась прежней — это data drift.
- Если качество модели падает, хотя входные данные визуально похожи на старые — вероятен concept drift.
Как обнаружить Data Drift
- Сравнивать распределения признаков между train и production
- Использовать PSI, KL divergence, JS divergence, KS-test
- Следить за долей пропусков, выбросами, новыми категориями
- Настроить мониторинг по ключевым фичам в реальном времени
Сигналы:
- 📉 рост PSI по важным признакам
- 📦 появление unseen categories
- ⚠️ сдвиг среднего, медианы, дисперсии
Как обнаружить Concept Drift
С ним сложнее: нужно смотреть не только на данные, но и на качество предсказаний.
- Мониторить accuracy, F1, ROC-AUC, MAE — в зависимости от задачи
- Сравнивать предсказания с фактическими результатами, когда появляется разметка
- Использовать sliding window и time-based validation
- Применять drift-детекторы: DDM, EDDM, ADWIN
Сигналы:
- стабильные входные данные, но метрики качества ухудшаются
- растёт ошибка на свежих данных
- меняется business outcome при тех же prediction score
Как реагировать
Если это Data Drift:
- проверить пайплайн сбора и препроцессинга
- обновить словари, правила кодирования, feature engineering
- дообучить модель на более свежих данных
- ввести алерты на критичные признаки
Если это Concept Drift:
- переобучить модель на актуальной выборке
- сократить “срок жизни” обучающего датасета
- пересмотреть набор признаков и target definition
- внедрить регулярный retraining или online learning 🔄
Практический вывод
Data drift отвечает на вопрос: “изменились ли данные?”
Concept drift — “изменилась ли сама реальность, которую моделируем?”
Для зрелой ML-системы нужен двойной контроль:
- мониторинг входных данных
- мониторинг качества модели
- привязка к бизнес-метрикам 💡
Иначе модель может выглядеть “живой”, но приносить всё меньше пользы.
👀 Ниже — подборка каналов про IT, где ещё больше практики, кейсов и полезных разборов.