Sobes.tech
Middle — Senior

Czym jest dryf rozkładu i jak go wykryć (test KS, PSI)?

sobes.tech AI

Odpowiedź od AI

Przemieszczenie rozkładu — to zmiana w rozkładzie danych w czasie, co może prowadzić do pogorszenia jakości modelu uczenia maszynowego, ponieważ model jest trenowany na jednym rozkładzie, a w produkcji dane pochodzą z innego.

Do wykrywania przesunięcia rozkładu często używa się testów statystycznych i metryk:

  • Test KS (test Kolmogorova-Smirnova) — nieparametryczny test, który porównuje dwie próbki i sprawdza, jak bardzo różnią się ich rozkłady. Jeśli wartość p testu jest niska, oznacza to, że rozkłady różnią się istotnie.

  • PSI (Wskaźnik Stabilności Populacji) — metryka mierząca zmianę rozkładu zmiennej między dwoma okresami. PSI jest obliczany na podstawie binów rozkładu i pokazuje stopień przesunięcia. Zazwyczaj:

    • PSI < 0.1 — nieznaczne przesunięcie
    • 0.1 < PSI < 0.25 — umiarkowane przesunięcie
    • PSI > 0.25 — znaczne przesunięcie

Przykład użycia testu KS w Pythonie:

from scipy.stats import ks_2samp

reference_data = [...]  # dane z próbki treningowej
current_data = [...]    # nowe dane

statistic, p_value = ks_2samp(reference_data, current_data)
if p_value < 0.05:
    print("Wykryto przesunięcie rozkładu")
else:
    print("Rozkłady są podobne")

W ten sposób regularny monitoring rozkładów za pomocą testu KS i PSI pomaga w szybkim wykrywaniu przesunięcia i podejmowaniu działań (np. ponowne trenowanie modelu).