Что такое distribution drift и как его обнаружить (KS-test, PSI)?
Ответ от нейросети
sobes.tech AI
Distribution drift — это изменение распределения данных во времени, которое может привести к ухудшению качества модели машинного обучения, так как модель обучена на одном распределении, а в продакшене данные приходят из другого.
Для обнаружения distribution drift часто используют статистические тесты и метрики:
-
KS-тест (Kolmogorov-Smirnov test) — непараметрический тест, который сравнивает две выборки и проверяет, насколько их распределения отличаются. Если p-value теста низкое, значит распределения существенно отличаются.
-
PSI (Population Stability Index) — метрика, которая измеряет изменение распределения переменной между двумя периодами. PSI рассчитывается по бинам распределения и показывает степень сдвига. Обычно:
- PSI < 0.1 — сдвиг незначительный
- 0.1 < PSI < 0.25 — умеренный сдвиг
- PSI > 0.25 — значительный сдвиг
Пример использования KS-теста на Python:
from scipy.stats import ks_2samp
reference_data = [...] # данные из обучающей выборки
current_data = [...] # новые данные
statistic, p_value = ks_2samp(reference_data, current_data)
if p_value < 0.05:
print("Обнаружен distribution drift")
else:
print("Распределения схожи")
Таким образом, регулярный мониторинг распределений с помощью KS-теста и PSI помогает своевременно выявлять drift и принимать меры (например, переобучать модель).