Sobes.tech
Middle — Senior

Co je to drift rozdělení a jak ho odhalit (KS-test, PSI)?

sobes.tech AI

Odpověď od AI

Posun rozdělení — je změna v rozdělení dat v čase, která může vést ke zhoršení kvality modelu strojového učení, protože model byl natrénován na jednom rozdělení, zatímco v produkci přicházejí data z jiného.

Pro detekci posunu rozdělení se často používají statistické testy a metriky:

  • KS test (Kolmogorov-Smirnovův test) — neparametrický test, který porovnává dvě vzorky a kontroluje, jak moc se jejich rozdělení liší. Pokud je p-hodnota testu nízká, znamená to, že rozdělení se významně liší.

  • PSI (Index stability populace) — metrika, která měří změnu v rozdělení proměnné mezi dvěma obdobími. PSI se počítá na základě binů rozdělení a ukazuje stupeň posunu. Obvykle:

    • PSI < 0.1 — nevýznamný posun
    • 0.1 < PSI < 0.25 — mírný posun
    • PSI > 0.25 — významný posun

Příklad použití KS testu v Pythonu:

from scipy.stats import ks_2samp

reference_data = [...]  # data z tréninkové sady
current_data = [...]    # nová data

statistic, p_value = ks_2samp(reference_data, current_data)
if p_value < 0.05:
    print("Detekován posun rozdělení")
else:
    print("Rozdělení jsou podobná")

Tímto způsobem pravidelné sledování rozdělení pomocí KS testu a PSI pomáhá včas odhalit posun a přijmout opatření (například retrénovat model).