Przejdź do głównej treści

Zrozumieć dryf danych i modelu: wykrywanie dryfu w Pythonie

Przejdź przez pułapki dryfu modelu i poznaj nasz praktyczny przewodnik po monitorowaniu dryfu danych.
Zaktualizowano 25 maj 2026  · 9 min Czytać

„Dryf” to pojęcie używane w uczeniu maszynowym do opisania, jak wydajność modelu działającego w produkcji stopniowo pogarsza się z czasem. Może się to dziać z wielu powodów, na przykład z powodu zmian w rozkładzie danych wejściowych w czasie lub zmiany relacji między wejściem (x) a oczekiwanym celem (y). 

Dryf może być poważnym problemem w rzeczywistych zastosowaniach uczenia maszynowego, gdzie dane są dynamiczne i ciągle się zmieniają. W tym artykule zagłębimy się w to, dlaczego modele dryfują, omówimy różne rodzaje dryfu, algorytmy ich wykrywania, a na koniec pokażemy otwartoźródłową implementację wykrywania dryfu w Pythonie.

Czym jest dryf?

Modele uczenia maszynowego trenuje się na danych historycznych, ale po wdrożeniu w realnym świecie mogą się dezaktualizować i tracić dokładność z upływem czasu z powodu zjawiska zwanego dryfem. Dryf to zmiana w czasie własności statystycznych danych, na których wytrenowano model. Może to sprawić, że model stanie się mniej dokładny lub zacznie działać inaczej, niż zaprojektowano. 

Innymi słowy, „dryf” to spadek zdolności modelu do trafnego przewidywania w wyniku zmian w środowisku, w którym jest używany.

Dlaczego modele uczenia maszynowego dryfują?

Istnieje kilka powodów, dla których modele uczenia maszynowego mogą z czasem dryfować. 

Jednym z częstych powodów jest po prostu to, że dane, na których model był trenowany, stają się nieaktualne lub przestają odzwierciedlać bieżące warunki. 

Na przykład rozważ model uczący się przewidywania ceny akcji spółki na podstawie danych historycznych. Jeśli wytrenujemy go na danych ze stabilnego rynku, początkowo może działać dobrze. Jednak gdy rynek z czasem stanie się bardziej zmienny, model może przestać trafnie przewidywać ceny akcji, ponieważ własności statystyczne danych uległy zmianie.

Innym powodem dryfu modelu jest to, że model nie został zaprojektowany do radzenia sobie ze zmianami w danych. Niektóre modele lepiej znoszą zmiany w danych niż inne, ale żaden model nie jest w stanie całkowicie uniknąć dryfu. 

Rodzaje dryfu

Przyjrzyjmy się dwóm różnym typom dryfu, które warto uwzględnić:

1. Dryf konceptu

Dryf konceptu, znany też jako dryf modelu, występuje, gdy zadanie, do którego zaprojektowano model, zmienia się w czasie. Na przykład, jeśli model uczenia maszynowego został wytrenowany do wykrywania spamu na podstawie treści e-maili, a rodzaje spamu, jakie otrzymują użytkownicy, znacząco się zmienią, model może przestać trafnie wykrywać spam.

Dryf konceptu można dalej podzielić na cztery kategorie (Learning under Concept Drift: A Review, Jie Lu i in.):

  • Nagły dryf
  • Stopniowy dryf
  • Przyrostowy dryf
  • Powracające koncepty

Concept Drift

Źródło: https://arxiv.org/pdf/2004.05785.pdf

2. Dryf danych

Dryf danych, znany też jako przesunięcie kowariantów, występuje, gdy rozkład danych wejściowych zmienia się w czasie. Na przykład, jeśli model wytrenowano do przewidywania prawdopodobieństwa zakupu produktu przez klienta na podstawie wieku i dochodu, a rozkład wieku i dochodów klientów znacząco się zmieni, model może już nie przewidywać trafnie prawdopodobieństwa zakupu.

Warto mieć świadomość zarówno dryfu konceptu, jak i dryfu danych, oraz podejmować działania zapobiegające lub łagodzące ich skutki. Do strategii radzenia sobie z dryfem należą ciągłe monitorowanie i ocena wydajności modelu, aktualizowanie modelu o nowe dane oraz stosowanie modeli bardziej odpornych na dryf.

Więcej o data science po wdrożeniu, w tym o dryfie, usłyszysz w odcinku naszego podcastu DataFramed. 

3. Dryf w LLM-ach i embeddingach

LLM-y wprowadzają rodzaj dryfu, do którego powyższe metody nie były projektowane. Dane to nie wiersze w tabeli — to swobodny tekst — a to, co zwykle zmienia się w czasie, to znaczenie pytań użytkowników. Obecnie wyróżnia się trzy formy dryfu w LLM-ach, które warto monitorować.

Dryf embeddingów

Dryf embeddingów pojawia się, gdy zmienia się znaczenie tekstu wysyłanego do modelu, nawet jeśli na powierzchni wygląda tak samo. LLM-y zamieniają tekst w długie listy liczb zwane embeddingami i dryf może ujawniać się w tych liczbach, niekoniecznie w tym, co zwykle mierzysz.

Wyobraź sobie czatbota wsparcia, który początkowo odpowiadał głównie na pytania o konfigurację i onboarding. Po sześciu miesiącach wolumen wiadomości i ich średnia długość się nie zmieniają, ale użytkownicy pytają głównie o rozliczenia i rezygnacje. Statystyki tekstu wyglądają stabilnie, lecz rozkład embeddingów się przesunął. Aby to wykryć, zespoły porównują paczki ostatnich embeddingów z paczką referencyjną, używając miary odległości statystycznej.

Dryf promptów lub wejść

Dryf promptów to ta sama idea co dryf embeddingów, ale śledzona poziom wyżej. Zamiast porównywać surowe embeddingi, grupujesz napływające zapytania w kategorie — za pomocą klasyfikatora lub innego LLM-a — i obserwujesz zmiany w ich proporcjach.

Na przykład wewnętrzny asystent kodowania uruchomiony dla inżynierów backendu może stopniowo zacząć przyciągać ruch od data scientistów pytających o pandas. Asystent wciąż może odpowiadać kompetentnie, ale populacja, której służy, nie jest już tą, na której był testowany, a prompt systemowy czy indeks retrieval z czasem mogą przestać dobrze pasować.

Dryf rubryki

Dryf rubryki to zmiana w czasie w ocenach jakości, jakie automatyczny ewaluator przyznaje odpowiedziom modelu. Wiele zespołów produkcyjnych używa dziś LLM-a jako sędziego, który ocenia każdą odpowiedź pod kątem np. pomocności, trafności czy tonu. Gdy te oceny zaczynają spadać dla tych samych typów wejść, zwykle coś się zmieniło — model za API, dokumenty dołączane w retrieval albo mieszanka użytkowników.

To, co czyni dryf rubryki szczególnie użytecznym, to fakt, że daje sygnał jakości bez potrzeby posiadania prawdziwych etykiet, które rzadko są dostępne w czasie rzeczywistym dla generatywnych wyników.

Jak wykrywać dryf?

Są dwa sposoby wykrywania dryfu:

1. Podejście oparte na modelu ML: wykorzystanie modelu do wykrywania, czy napływające dane wejściowe uległy dryfowi.

2. Testy statystyczne: Istnieje wiele testów statystycznych do wykrywania dryfu danych. Dzielą się one głównie na trzy kategorie: 

    • Metody analizy sekwencyjnej 
    • Własny model do wykrywania dryfu 
    • Metoda rozkładu w czasie, bardzo powszechna. 

Metody oparte na rozkładzie w czasie używają metod statystycznych do obliczania różnicy między dwoma rozkładami prawdopodobieństwa w celu wykrycia dryfu. Obejmują one Population Stability Index, dywergencję KL, dywergencję JS, test KS oraz metrykę Wassersteina. 

Algorytmy wykrywania dryfu danych

Test Kołmogorowa-Smirnowa (K-S)

Test Kołmogorowa-Smirnowa (K-S) to nieparametryczny test statystyczny służący do sprawdzania, czy dwa zbiory danych pochodzą z tego samego rozkładu. Często używa się go do testowania, czy próbka danych pochodzi z określonej populacji, lub do porównywania dwóch próbek, by stwierdzić, czy pochodzą z tej samej populacji.

Hipotezą zerową w tym teście jest to, że rozkłady są takie same. Odrzucenie tej hipotezy sugeruje, że w modelu występuje dryf.

Test K-S to przydatne narzędzie do porównywania zbiorów danych i ustalania, czy pochodzą z tego samego rozkładu.

Population Stability Index

Population Stability Index (PSI) to miara statystyczna służąca do porównywania rozkładu zmiennej kategorycznej w dwóch różnych zbiorach danych. 

Population Stability Index (PSI) służy do mierzenia, jak bardzo rozkład zmiennej zmienił się między dwiema próbami lub w czasie. Powszechnie wykorzystuje się go do monitorowania zmian w charakterystyce populacji i identyfikowania potencjalnych problemów z wydajnością modelu uczenia maszynowego.

PSI pierwotnie opracowano do monitorowania zmian w rozkładzie wyniku w kartach oceny ryzyka, ale obecnie używa się go do badania przesunięć rozkładów dla wszystkich atrybutów związanych z modelem, w tym zmiennych zależnych i niezależnych. 

Wysoka wartość PSI wskazuje na istotną różnicę między rozkładami zmiennej w dwóch zbiorach danych, co może sugerować występowanie dryfu w modelu. 

Jeśli rozkład zmiennej uległ znaczącej zmianie lub jeśli kilka zmiennych zmieniło się w pewnym stopniu, może zaistnieć potrzeba rekalibracji lub przebudowy modelu, by poprawić jego działanie.

Metoda Page’a-Hinkleya

Metoda Page’a-Hinkleya to metoda statystyczna służąca do wykrywania zmian średniej w szeregu danych w czasie. Powszechnie wykorzystuje się ją do monitorowania wydajności modeli i wykrywania zmian w rozkładzie danych, które mogą wskazywać na dryf modelu.

Aby użyć metody Page’a-Hinkleya, najpierw definiujemy wartość progową i funkcję decyzyjną. Wartość progowa to próg, powyżej którego zmiana średniej uznawana jest za istotną, a funkcja decyzyjna zwraca 1, jeśli zmiana została wykryta, i 0, jeśli nie.

Następnie na każdym kroku czasowym oblicza się średnią szeregu danych i stosuje funkcję decyzyjną, aby określić, czy zaszła zmiana. Jeśli funkcja zwraca 1, oznacza to, że wykryto zmianę i model może dryfować.

Metoda Page’a-Hinkleya to prosta i skuteczna metoda wykrywania zmian średniej szeregu danych w czasie. Jest szczególnie użyteczna do wykrywania niewielkich zmian średniej, które nie są od razu widoczne przy zwykłej obserwacji danych. Kluczowe jest jednak staranne dobranie wartości progowej i funkcji decyzyjnej, aby metoda była wystarczająco czuła na zmiany, ale nie generowała zbyt wielu fałszywych alarmów.

Implementacja wykrywania dryfu w Pythonie

W tej części użyjemy Evidently do wykrywania dryfu. Evidently to otwartoźródłowa biblioteka Pythona stworzona dla data scientistów i inżynierów pracujących z uczeniem maszynowym. Pomaga testować, oceniać i śledzić jakość modeli od walidacji po produkcję.

Import bibliotek

import pandas as pd
import numpy as np
from sklearn import datasets

from evidently import Report
from evidently.presets import DataDriftPreset

Import danych i utworzenie partycji referencyjnej oraz docelowej

# create ref and cur dataset for drift detection
adult_data = datasets.fetch_openml(name='adult', version=2, as_frame=True)
adult = adult_data.frame

adult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])].copy()
adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])].copy()

adult_cur.iloc[:2000, 3:5] = np.nan

Wygeneruj raport dryfu

#dataset-level metrics
report = Report([DataDriftPreset()], include_tests=True)
my_eval = report.run(current_data=adult_cur, reference_data=adult_ref)
my_eval

Drift Detection Dashboard

Pulpit wykrywania dryfu — utworzony przy użyciu EvidentlyAI

Eksport raportu dryfu w formacie JSON

#report in a JSON format
my_eval.json()

Sprawdź kompletny notatnik Datacamp tutaj.

Wnioski

Dryf danych i modelu może stanowić poważne wyzwanie dla systemów uczenia maszynowego w produkcji. Rozumiejąc przyczyny i skutki dryfu oraz wdrażając skuteczne praktyki monitorowania, możesz zadbać o to, by twoje modele pozostawały dokładne i wiarygodne w czasie. 

Monitorowanie wydajności modeli, używanie modelu do wykrywania dryfu i regularne ponowne trenowanie na zaktualizowanych danych to tylko niektóre dobre praktyki pomagające ograniczyć ryzyko dryfu. Działając proaktywnie, zadbasz, aby twój system ML nadal dostarczał wartość twojej organizacji.

Monitorowanie dryfu modeli to tylko jeden aspekt szerszej dziedziny zwanej MLOps. Zrozumienie koncepcji MLOps jest kluczowe dla każdego data scientista, inżyniera i lidera, aby przenieść modele z lokalnego notatnika do działającej produkcji. 

Jeśli chcesz głębiej zrozumieć MLOps i to, jak może pomóc twojej karierze, sprawdź nasz kurs MLOps Concepts. Dowiesz się, czym jest MLOps, poznasz poszczególne fazy procesów MLOps i zidentyfikujesz różne poziomy dojrzałości MLOps. Po opanowaniu kluczowych koncepcji będziesz dobrze przygotowany, by wdrażać uczenie maszynowe w sposób ciągły, niezawodny i efektywny.

FAQ dotyczące wykrywania dryfu

Czym jest dryf modelu uczenia maszynowego?

Dryf modelu uczenia maszynowego to sytuacja, gdy wydajność modelu na nowych danych różni się od tej na danych treningowych, na których został zbudowany. Może to wynikać z różnych przyczyn, w tym zmian rozkładu danych w czasie, dodania nowych danych, które nie pasują do założeń pierwotnego modelu, lub z niezdolności samego modelu do adaptacji do zmieniających się warunków.

Dlaczego dryf modelu jest problemem?

Dryf modelu może znacząco wpływać na wydajność i dokładność modelu uczenia maszynowego. Gdy przewidywania modelu stają się mniej wiarygodne, może to prowadzić do błędnych decyzji lub działań o negatywnych konsekwencjach. Na przykład w ochronie zdrowia dryf może skutkować nieprawidłowymi diagnozami lub zaleceniami terapeutycznymi, a w finansach — słabymi decyzjami inwestycyjnymi.

Jak wykrywać dryf modelu?

Istnieje kilka sposobów określenia, czy model dryfuje, takich jak testy statystyczne, algorytmy wykrywania dryfu oraz analiza bieżących wyników modelu. Niektóre z tych metod wykrywają dryf w czasie rzeczywistym, inne lepiej nadają się do okresowego lub wsadowego testowania. Ważne jest dobranie właściwej techniki do konkretnego zastosowania i środowiska danych.

Jak zapobiegać dryfowi modelu?

Zapobieganie dryfowi modelu wymaga połączenia starannego doboru modelu, regularnego monitorowania i testowania oraz proaktywnej interwencji. Może to obejmować używanie algorytmów bardziej odpornych na dryf, regularne ponowne trenowanie modeli na nowych danych lub wdrażanie strategii aktywnego reagowania na wykryty dryf. Ważne jest też jasne zrozumienie czynników powodujących dryf, aby można było im zapobiegać.

Jak rozkład danych wpływa na dryf modelu?

Rozkład danych może w znacznym stopniu wpływać na wydajność modelu uczenia maszynowego. Jeśli rozkład danych zmienia się w czasie, może to prowadzić do dryfu modelu, ponieważ model może już nie przewidywać trafnie danych, które nie odpowiadają jego pierwotnym założeniom. Może się to dziać na różne sposoby, np. poprzez naturalne wahania danych, dodanie nowych źródeł danych lub zmiany w procesach czy systemach generujących dane.

Czy dryf modelu da się odwrócić?

W niektórych przypadkach dryf modelu można odwrócić, ponownie trenując model na nowych danych lub dostrajając jego parametry. Nie zawsze jest to jednak możliwe, zwłaszcza jeśli rozkład danych uległ dużej zmianie lub model stał się zbyt złożony lub wyspecjalizowany. W takich sytuacjach konieczne może być rozpoczęcie prac nad nowym modelem.

Czy można całkowicie wyeliminować dryf modelu?

Całkowite wyeliminowanie dryfu modelu jest trudne, jeśli nie niemożliwe. Nawet najbardziej odporne i dobrze zaprojektowane modele mogą być podatne na zmiany w danych lub procesach generujących dane. Najlepszym podejściem jest zarządzanie i łagodzenie skutków dryfu poprzez regularne monitorowanie, testowanie i interwencję.

Jak dryf modelu wpływa na wydajność modelu?

Dryf modelu może znacząco wpływać na wydajność modelu uczenia maszynowego. Gdy przewidywania stają się mniej trafne, może to obniżać wyniki kluczowych metryk, takich jak accuracy, precision, recall i ogólna skuteczność modelu. W skrajnych przypadkach dryf może doprowadzić do całkowitej awarii modelu, skutkując błędnymi lub niewiarygodnymi predykcjami.

Jak dryf modelu wpływa na dokładność?

Dryf modelu może negatywnie wpływać na dokładność modelu uczenia maszynowego. Wraz ze spadkiem trafności przewidywań rośnie ryzyko błędnych decyzji lub działań, co w zastosowaniach rzeczywistych może mieć poważne konsekwencje. Na przykład w ochronie zdrowia dryf może prowadzić do nieprawidłowych diagnoz lub zaleceń, a w finansach — do nietrafionych decyzji inwestycyjnych. Aby utrzymać dokładność modelu, ważne jest regularne monitorowanie i testowanie pod kątem dryfu.

Tematy

Kursy MLOps

course

Koncepcje MLOps

2 godz.
42.3K
Odkryj, jak MLOps przenosi modele machine learning z lokalnych notebooków do działających modeli w produkcji, które generują realną wartość biznesową.
Zobacz szczegółyRight Arrow
Rozpocznij kurs
Zobacz więcejRight Arrow