Sobes.tech
Middle — Senior
33

Что такое distribution drift и как его обнаружить (KS-test, PSI)?

Компании, где спрашивали
GravityField

Ответ от нейросети

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 и принимать меры (например, переобучать модель).