Метрики стабильности данных
Что измеряет
Definition
Метрики стабильности данных измеряют, насколько распределение новых данных похоже на распределение данных, на которых модель обучалась или проверялась.
Даже если модель хорошо работала на test-выборке, её качество может ухудшиться после внедрения. Причина часто не в самой архитектуре модели, а в том, что новые данные стали отличаться от старых.
Такие изменения называют drift. В прикладном ML важно отслеживать drift, потому что модель обычно обучается на прошлом, а применяется к будущему.
Основные виды drift
Data drift
Data drift, или дрейф данных, означает, что статистические свойства входных данных изменились.
Пример: модель кредитного скоринга обучалась на одной аудитории пользователей, а потом в сервис пришла новая аудитория, у которой средний возраст, доход и поведение сильно отличаются.
В этом случае изменилось распределение признаков:
То есть сами входные данные стали другими.
Concept drift
Concept drift, или дрейф концепта, означает, что изменилась связь между признаками и целевой переменной.
Пример: до пандемии признак is_holiday сильно влиял на желание людей пойти в кино, а после изменения поведения людей эта связь стала другой.
В этом случае может измениться условное распределение:
То есть признаки могут выглядеть похожими, но их связь с ответом изменилась.
Формула
Population Stability Index
Одна из популярных метрик стабильности распределения — Population Stability Index, или PSI.
Для одного признака значения разбивают на интервалы, а затем сравнивают доли объектов в старых и новых данных:
где:
- — доля объектов в интервале в базовом распределении;
- — доля объектов в интервале в новом распределении;
- — число интервалов.
Интуиция: если распределения похожи, доли по интервалам близки, и PSI будет маленьким. Если распределения заметно отличаются, PSI растёт.
Разница средних
Для числового признака можно сравнить средние значения:
Иногда удобнее смотреть относительное изменение:
Такая проверка проста, но может не заметить изменения формы распределения.
Расстояния между распределениями
Для сравнения распределений также используют:
- Jensen-Shannon divergence;
- Kullback-Leibler divergence;
- Wasserstein distance;
- Kolmogorov-Smirnov statistic;
- chi-square test для категориальных признаков.
Они по-разному измеряют отличие между старым и новым распределением.
Интуиция
Модель обычно обучается на предположении, что будущие данные будут похожи на обучающие данные.
Если это предположение нарушается, модель может начать ошибаться.
Простой пример:
| Период | Средний возраст пользователей | Поведение |
|---|---|---|
| Train | 45 | покупают дорогие товары |
| New data | 22 | покупают дешёвые товары |
Даже если модель была хорошей на старых данных, новые пользователи могут вести себя иначе. В таком случае метрики на старом test уже не гарантируют качество в будущем.
Метрики стабильности данных помогают заранее заметить, что данные изменились и модель нужно проверить.
Как интерпретировать
Интерпретация зависит от метрики и предметной области.
Для PSI часто используют грубые ориентиры:
| PSI | Интерпретация |
|---|---|
< 0.1 | распределение стабильно |
0.1–0.25 | есть умеренный сдвиг |
> 0.25 | есть сильный сдвиг |
Это не универсальный закон, а практическое правило. В некоторых задачах маленький сдвиг может быть критичным, а в других большой сдвиг может быть допустимым.
Важно смотреть не только одну агрегированную метрику, но и конкретные признаки, где произошли изменения.
Когда использовать
Метрики стабильности данных нужны, если модель применяется во времени или на новых источниках данных.
Особенно они полезны, если:
- модель уже внедрена;
- данные регулярно обновляются;
- пользователи или объекты меняются со временем;
- модель применяется в другой стране, регионе, лаборатории или домене;
- есть риск data drift;
- нужно мониторить качество после deployment;
- данные приходят из нескольких источников.
В учебном ML pipeline стабильность данных часто не проверяют, но в реальных проектах это важная часть мониторинга.
Когда метрика обманывает
Data drift не всегда означает падение качества
Распределение признаков может измениться, но модель всё ещё может работать хорошо.
Например, средний возраст пользователей немного изменился, но связь признаков с целевой переменной осталась прежней.
Поэтому drift — это сигнал для проверки, а не автоматическое доказательство, что модель сломалась.
Качество может упасть без явного data drift
Иногда входные признаки выглядят стабильно, но меняется связь между признаками и ответом. Это concept drift.
Например, поведение пользователей изменилось, но распределение их возраста и дохода осталось похожим. Простые метрики стабильности входных признаков могут этого не заметить.
Агрегированная метрика скрывает локальные проблемы
Средняя стабильность по всем данным может выглядеть нормальной, но важная подгруппа пользователей или материалов может сильно измениться.
Поэтому полезно смотреть drift:
- по отдельным признакам;
- по сегментам;
- по времени;
- по источникам данных.
Метрика чувствительна к разбиению на интервалы
PSI зависит от того, как признак был разбит на интервалы. Слишком грубое разбиение может скрыть drift, а слишком мелкое — сделать метрику шумной.
Статистическая значимость не равна практической важности
На большом датасете даже маленькое отличие распределений может быть статистически значимым, но практически неважным.
Поэтому нужно соединять статистику с предметным смыслом.
Связанные метрики
Для мониторинга стабильности данных используют:
- PSI;
- Jensen-Shannon divergence;
- Wasserstein distance;
- Kolmogorov-Smirnov statistic;
- chi-square test;
- сравнение средних и дисперсий;
- долю пропусков;
- долю новых категорий;
- изменение cardinality категориальных признаков;
- изменение качества модели на новых размеченных данных.
Последний пункт особенно важен: если новые данные уже имеют правильные ответы, нужно смотреть не только drift, но и обычные метрики качества модели.
Для классификации см. Метрики качества классификаторов, для регрессии — Метрики качества регрессоров, для кластеризации — Метрики качества кластеризации.
Минимальный пример
Допустим, модель обучалась на данных пользователей, где возраст был распределён так:
| Возрастная группа | Train | New data |
|---|---|---|
| 18–25 | 10% | 40% |
| 26–40 | 40% | 35% |
| 41–60 | 35% | 20% |
| 60+ | 15% | 5% |
В новых данных стало намного больше молодых пользователей и меньше пользователей старших групп.
Это пример data drift: распределение входного признака age изменилось.
Дальше нужно проверить:
- Изменилась ли метрика качества модели.
- На каких возрастных группах выросла ошибка.
- Нужно ли переобучать модель.
- Нужно ли изменить признаки, пороги или постановку задачи.
Практические замечания
Хороший workflow мониторинга стабильности данных:
- Зафиксировать baseline-распределение на train или validation.
- Регулярно собирать новые данные.
- Сравнивать распределения важных признаков.
- Отдельно отслеживать пропуски и новые категории.
- Проверять drift по сегментам.
- Если есть разметка, считать метрики качества модели.
- При сильном drift проводить анализ ошибок.
- Решать, нужно ли переобучение модели.
В проектах вроде Materials ML стабильность данных может означать не только изменение пользовательского поведения, но и изменение источника данных: другой датасет материалов, другие методы расчёта, другая экспериментальная процедура или другой класс соединений.