Sariți la conținutul principal

Înțelegerea Data Drift și Model Drift: Detectarea driftului în Python

Navighează printre capcanele driftului de model și descoperă ghidul nostru practic pentru monitorizarea data drift.
Actualizat 25 mai 2026  · 9 min. citire

„Drift” este un termen folosit în machine learning pentru a descrie modul în care performanța unui model de machine learning în producție se degradează treptat în timp. Acest lucru se poate întâmpla din mai multe motive, cum ar fi schimbări în distribuția datelor de intrare de-a lungul timpului sau modificarea relației dintre input (x) și ținta dorită (y). 

Driftul poate fi o problemă majoră atunci când folosim machine learning în lumea reală, unde datele sunt adesea dinamice și mereu în schimbare. Acest articol aprofundează de ce apar drifturile, tipurile de drift, algoritmii pentru a le detecta și, în final, încheie cu o implementare open-source pentru detectarea driftului în Python.

Ce este driftul?

Modelele de machine learning sunt antrenate pe date istorice, dar odată ce sunt folosite în lumea reală, se pot învechi și își pot pierde acuratețea în timp din cauza unui fenomen numit drift. Driftul este schimbarea în timp a proprietăților statistice ale datelor folosite pentru a antrena un model de machine learning. Acest lucru poate face ca modelul să devină mai puțin precis sau să se comporte diferit față de cum a fost proiectat. 

Cu alte cuvinte, „drift” este scăderea capacității unui model de a face predicții precise din cauza schimbărilor din mediul în care este folosit.

De ce apar drifturi în modelele de machine learning?

Există mai multe motive pentru care modelele de machine learning pot deriva în timp. 

Un motiv frecvent este pur și simplu faptul că datele pe care a fost antrenat modelul devin învechite sau nu mai reprezintă condițiile curente. 

De exemplu, ia în considerare un model de machine learning antrenat să prezică prețul acțiunilor unei companii pe baza datelor istorice. Dacă antrenăm modelul cu date dintr-o piață stabilă, s-ar putea descurca bine la început. Totuși, dacă piața devine mai volatilă în timp, modelul s-ar putea să nu mai poată prezice corect prețul acțiunilor, deoarece proprietățile statistice ale datelor s-au schimbat.

Un alt motiv pentru driftul modelului este că modelul nu a fost conceput să gestioneze schimbări în date. Unele modele de machine learning pot face față mai bine schimbărilor din date decât altele, dar niciun model nu poate evita complet driftul. 

Tipuri de drift

Hai să explorăm cele două tipuri diferite de drift pe care să le ai în vedere:

1. Concept drift

Concept drift, cunoscut și ca model drift, apare atunci când sarcina pentru care a fost conceput modelul se schimbă în timp. De exemplu, imaginează-ți un model de machine learning antrenat să detecteze e-mailurile spam pe baza conținutului. Dacă tipurile de spam pe care le primesc oamenii se schimbă semnificativ, modelul s-ar putea să nu mai poată detecta corect spamul.

Concept drift poate fi împărțit în patru categorii (Learning under Concept Drift: A Review, Jie Lu et al.):

  • Drift brusc
  • Drift gradual
  • Drift incremental
  • Concepte recurente

Concept Drift

Sursă: https://arxiv.org/pdf/2004.05785.pdf

2. Data drift

Data drift, cunoscut și ca schimbare de covariați, apare atunci când distribuția datelor de intrare se schimbă în timp. De exemplu, ia în considerare un model de machine learning antrenat să prezică probabilitatea ca un client să cumpere un produs pe baza vârstei și venitului. Dacă distribuția vârstelor și veniturilor clienților se schimbă semnificativ în timp, modelul s-ar putea să nu mai poată prezice corect probabilitatea unei achiziții.

Este important să fii conștient atât de concept drift, cât și de data drift și să iei măsuri pentru a preveni sau atenua efectele lor. Unele strategii pentru abordarea driftului includ monitorizarea și evaluarea continuă a performanței unui model, actualizarea modelului cu date noi și folosirea unor modele de machine learning mai robuste la drift.

Poți afla mai multe despre data science post-deployment, inclusiv despre drift, în episodul nostru din podcastul DataFramed. 

3. Drift pentru LLM-uri și embeddinguri

LLM-urile introduc un tip de drift pentru care metodele de mai sus nu au fost concepute. Datele nu sunt rânduri într-un tabel — sunt text liber — iar ceea ce se schimbă în timp este, de obicei, sensul a ceea ce întreabă utilizatorii. Se consideră acum că există trei forme de drift la LLM-uri de monitorizat.

Embedding drift

Embedding drift apare atunci când sensul textului trimis de utilizatori unui model se schimbă, chiar dacă textul la suprafață arată la fel. LLM-urile convertesc textul în liste lungi de numere numite embeddinguri, iar driftul poate apărea în acele numere fără să apară în nimic din ceea ce ai măsura de obicei.

Imaginează-ți un chatbot de suport clienți care inițial gestiona mai ales întrebări de configurare și onboarding. Apoi, după șase luni, volumul mesajelor și lungimea lor medie rămân neschimbate, dar utilizatorii întreabă în principal despre facturare și anulări. Statisticile textului par stabile, dar distribuția embeddingurilor s-a schimbat. Pentru a detecta asta, echipele compară loturi de embeddinguri recente cu un lot de referință folosind o măsură de distanță statistică.

Prompt sau input drift

Prompt drift este aceeași idee ca embedding drift, dar urmărită la un nivel mai sus. În loc să compari embeddinguri brute, grupezi interogările primite în categorii — folosind un clasificator sau un alt LLM — și urmărești schimbările din mix.

Imaginează-ți că un asistent intern pentru programare lansat pentru ingineri backend începe treptat să primească trafic de la data scientiști care întreabă despre pandas. Asistentul poate răspunde în continuare competent, dar populația pe care o deservește nu mai este cea pe care a fost testat, iar system prompt-ul sau indexul de regăsire ar putea, în timp, să nu mai fie o alegere grozavă.

Rubric drift

Rubric drift este o schimbare în timp a scorurilor de calitate pe care un evaluator automat le acordă ieșirilor unui model. Multe echipe de producție folosesc acum un LLM ca arbitru, care punctează fiecare răspuns după criterii precum utilitate, acuratețe sau ton. Când aceste scoruri încep să scadă pentru aceleași tipuri de inputuri, de obicei s-a schimbat ceva — modelul din spatele unui API, documentele regăsite sau mixul de utilizatori.

Ceea ce face rubric drift deosebit de util este că îți oferă un semnal de calitate fără a avea nevoie de etichete ground truth, care rareori sunt disponibile în timp real pentru ieșiri generative.

Cum detectezi driftul?

Există două moduri prin care putem detecta driftul:

1. Abordare bazată pe model de machine learning: Abordare bazată pe model pentru a detecta dacă datele de intrare care sosesc au derivat sau nu.

2. Teste statistice: Există multe teste statistice pentru a detecta data drift. Acestea sunt împărțite în principal în trei categorii: 

    • Metode de analiză secvențială 
    • Un model personalizat pentru detectarea driftului 
    • Metoda distribuției în timp, care este foarte comună. 

Metodele bazate pe distribuția în timp folosesc metode statistice pentru a calcula diferența dintre două distribuții de probabilitate pentru a detecta driftul. Aceste metode includ Population Stability Index, divergența KL, divergența JS, testul KS și metrica Wasserstein. 

Algoritmi pentru detectarea data drift

Testul Kolmogorov–Smirnov (K-S)

Testul Kolmogorov–Smirnov (K-S) este un test statistic neparametric folosit pentru a determina dacă două seturi de date provin din aceeași distribuție. Este adesea folosit pentru a testa dacă un eșantion de date provine dintr-o anumită populație sau pentru a compara două eșantioane pentru a determina dacă provin din aceeași populație.

Ipoteza nulă în acest test este că distribuțiile sunt aceleași. Dacă această ipoteză este respinsă, sugerează că există un drift în model.

Testul K-S este un instrument util pentru compararea seturilor de date și determinarea dacă acestea provin din aceeași distribuție.

Population Stability Index

Population Stability Index (PSI) este o măsură statistică folosită pentru a compara distribuția unei variabile categorice în două seturi de date diferite. 

Population Stability Index (PSI) este un instrument folosit pentru a măsura cât de mult s-a schimbat distribuția unei variabile între două eșantioane sau în timp. Este utilizat în mod obișnuit pentru a monitoriza schimbările în caracteristicile unei populații și pentru a identifica potențiale probleme cu performanța unui model de machine learning.

PSI a fost dezvoltat inițial pentru a monitoriza schimbările în distribuția unui scor în scorecardurile de risc, dar este folosit acum pentru a examina schimbările de distribuție pentru toate atributele legate de model, inclusiv variabile dependente și independente. 

O valoare PSI ridicată indică faptul că există o diferență semnificativă între distribuțiile variabilei în cele două seturi de date, ceea ce poate sugera existența unui drift în model. 

Dacă distribuția unei variabile s-a schimbat semnificativ sau dacă mai multe variabile s-au schimbat într-o anumită măsură, poate fi necesar să recalibrezi sau să reconstruiești modelul pentru a-i îmbunătăți performanța.

Metoda Page–Hinkley

Metoda Page–Hinkley este o metodă statistică folosită pentru a detecta schimbări în media unei serii de date în timp. Este utilizată frecvent pentru a monitoriza performanța modelelor de machine learning și pentru a detecta schimbări în distribuția datelor care pot indica driftul modelului.

Pentru a folosi metoda Page–Hinkley, primul pas este definirea unei valori prag și a unei funcții de decizie. Valoarea prag este o valoare peste care o schimbare a mediei este considerată semnificativă, iar funcția de decizie este o funcție care returnează 1 dacă a fost detectată o schimbare și 0 dacă nu a fost detectată nicio schimbare.

În continuare, media seriei de date este calculată la fiecare pas de timp, iar funcția de decizie se aplică datelor pentru a determina dacă a apărut o schimbare. Dacă funcția de decizie returnează 1, indică faptul că a fost detectată o schimbare și că modelul ar putea derapa.

Metoda Page–Hinkley este o modalitate simplă și eficientă de a detecta schimbări în media unei serii de date în timp. Este deosebit de utilă pentru detectarea schimbărilor mici în medie, care s-ar putea să nu fie evidente la o inspecție vizuală a datelor. Totuși, este important să alegi cu atenție valoarea prag și funcția de decizie pentru a te asigura că metoda este suficient de sensibilă pentru a detecta schimbări în date, dar nu atât de sensibilă încât să genereze alarme false.

Implementarea detectării driftului în Python

În această secțiune, vom folosi Evidently pentru a detecta driftul. Evidently este o bibliotecă Python open-source creată pentru data scientiști și ingineri care lucrează cu machine learning. Îi ajută să testeze, să evalueze și să urmărească cât de bine funcționează modelele lor, de la validare până la producție.

Importă bibliotecile

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

from evidently import Report
from evidently.presets import DataDriftPreset

Importă setul de date și creează partițiile de referință și țintă

# 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

Generează raportul de drift

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

Tablou de bord pentru detectarea driftului

Tablou de bord pentru detectarea driftului - creat cu EvidentlyAI

Exportă raportul de drift în format JSON

#report in a JSON format
my_eval.json()

Vezi Notebook-ul complet Datacamp aici.

Concluzie

Data drift și model drift pot reprezenta provocări semnificative pentru sistemele de machine learning în producție. Înțelegând cauzele și efectele driftului și implementând practici eficiente de monitorizare, poți asigura că modelele tale de machine learning rămân precise și fiabile în timp. 

Monitorizarea performanței modelelor, folosirea unui model de detectare a driftului și reantrenarea regulată pe date actualizate sunt doar câteva dintre bunele practici pe care le poți urma pentru a reduce riscurile asociate driftului. Fiind proactiv în monitorizarea driftului, te poți asigura că sistemul tău de machine learning continuă să aducă valoare organizației.

Monitorizarea modelelor de machine learning pentru drift este doar un aspect al unui domeniu mai amplu numit MLOps. Înțelegerea conceptelor MLOps este esențială pentru orice data scientist, inginer sau lider care vrea să ducă modelele de la un notebook local la un model funcțional în producție. 

Dacă vrei să aprofundezi MLOps și felul în care te poate ajuta în carieră, consultă cursul nostru MLOps Concepts. Aici vei învăța ce este MLOps, vei înțelege diferitele faze ale proceselor MLOps și vei identifica nivelurile de maturitate MLOps. După ce înveți conceptele esențiale MLOps, vei fi bine pregătit să implementezi machine learning în mod continuu, fiabil și eficient.

Întrebări frecvente despre detectarea driftului

Ce este model drift în machine learning?

Driftul unui model de machine learning este atunci când performanța unui model pe date noi diferă de performanța pe datele de antrenament pe care a fost construit. Acest lucru se poate întâmpla din diverse motive, inclusiv schimbări în distribuția datelor în timp, adăugarea de date noi care nu se potrivesc cu presupunerile inițiale ale modelului sau incapacitatea modelului de a se adapta la condiții în schimbare.

De ce este driftul modelului o problemă?

Driftul poate afecta semnificativ performanța și acuratețea unui model de machine learning. Pe măsură ce predicțiile modelului devin mai puțin fiabile, poate duce la decizii sau acțiuni incorecte, cu consecințe negative. De exemplu, în sănătate, driftul ar putea duce la diagnostice sau recomandări de tratament greșite, iar în finanțe ar putea rezulta în decizii de investiții slabe.

Cum detectezi driftul unui model?

Există mai multe moduri de a determina dacă un model derapează, precum teste statistice, algoritmi de detectare a driftului și evaluarea performanței modelului. Unele metode sunt concepute pentru a găsi driftul în timp real, în timp ce altele sunt mai potrivite pentru verificări periodice sau pe loturi. Este important să alegi tehnica potrivită pentru aplicația și mediul tău de date specifice.

Cum previi driftul modelului?

Prevenirea driftului modelului necesită o combinație de selecție atentă a modelului, monitorizare și testare regulată, precum și intervenție proactivă. Aceasta poate implica folosirea unor algoritmi mai robuști la drift, reantrenarea regulată a modelelor pe date noi sau implementarea unor strategii pentru a aborda activ driftul atunci când este detectat. Este, de asemenea, important să ai o înțelegere clară a factorilor care pot provoca drift, astfel încât să poți lua măsuri pentru a-i preveni.

Cum afectează distribuția datelor driftul modelului?

Distribuția datelor poate afecta semnificativ performanța unui model de machine learning. Dacă distribuția datelor se schimbă în timp, poate apărea drift, deoarece modelul s-ar putea să nu mai poată prezice corect date noi care nu se potrivesc cu presupunerile sale inițiale. Acest lucru se poate întâmpla în diverse moduri, cum ar fi variații naturale în date, adăugarea de noi surse de date sau schimbări în procesele sau sistemele care generează datele.

Este driftul modelului reversibil?

În unele cazuri, driftul modelului poate fi reversibil prin reantrenarea modelului pe date noi sau ajustarea parametrilor. Totuși, acest lucru nu este întotdeauna posibil, mai ales dacă distribuția datelor s-a schimbat semnificativ sau dacă modelul a devenit excesiv de complex sau specializat. În aceste situații, poate fi necesar să pornești de la zero cu un nou model.

Este posibil să elimini complet driftul modelului?

Eliminarea completă a driftului modelului este dificilă, dacă nu imposibilă. Chiar și cele mai robuste și bine proiectate modele de machine learning pot fi afectate de schimbări în date sau în procesele care le generează. Cea mai bună abordare este să gestionezi și să atenuezi impactul driftului prin monitorizare, testare și intervenție regulată.

Cum afectează driftul performanța modelului?

Driftul poate avea un impact semnificativ asupra performanței unui model de machine learning. Pe măsură ce predicțiile modelului devin mai puțin precise, poate duce la scăderea performanței pe metrici importante precum acuratețe, precizie, recall și eficacitatea generală a modelului. În unele cazuri, driftul poate chiar face ca un model să eșueze complet, rezultând predicții incorecte sau nesigure.

Cum afectează driftul acuratețea modelului?

Driftul poate avea un impact negativ asupra acurateței unui model de machine learning. Pe măsură ce predicțiile modelului devin mai puțin precise, poate duce la decizii sau acțiuni incorecte, cu consecințe negative în aplicații reale. De exemplu, în sănătate, driftul ar putea duce la diagnostice sau recomandări de tratament greșite, iar în finanțe ar putea rezulta în decizii de investiții slabe. Este important să monitorizezi și să testezi regulat driftul pentru a menține acuratețea modelului.

Subiecte

Cursuri MLOps

course

MLOps Concepts

2 oră
42.3K
Discover how MLOps can take machine learning models from local notebooks to functioning models in production that generate real business value.
Vezi detaliiRight Arrow
Începeți cursul
Vezi mai multRight Arrow