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).