Sari la conținutul principal

Regularizarea în învățarea automată: L1, L2 și Elastic Net explicate

O prezentare practică a regularizării în învățarea automată – ce este, cum funcționează și când să folosiți L1, L2 și Elastic Net pentru a construi modele care generalizează.
Actualizat 4 mai 2026  · 9 min. citire

Ați antrenat un model care potrivește aproape perfect fiecare exemplu din setul de antrenare, dar eșuează pe date noi? Am pățit-o cu toții.

Aceasta este o definiție la nivel înalt a supraînvățării. Modelul nu a învățat tiparul real, ci a memorat datele de antrenare. Într-un mediu de producție, cu date noi și nevăzute, modelul ar face predicții în care nu ați avea încredere. Cu cât datele din lumea reală se abat mai mult de la eșantioanele de antrenare, cu atât situația se înrăutățește.

Regularizarea remediază acest lucru adăugând o penalizare la funcția de pierdere. Acea penalizare descurajează modelele complexe. Cu alte cuvinte, este mecanismul care împiedică modelul să potrivească fiecare punct de date și îl obligă în schimb să generalizeze.

În acest articol, vă voi prezenta intuiția din spatele regularizării, cele mai frecvente metode – L1, L2 și Elastic Net – și cum să o alegeți pe cea potrivită pentru cazul dumneavoastră de utilizare.

Dacă doriți să înțelegeți de ce și cum modelele de învățare automată eșuează în producție, citiți articolul nostru despre compromisul dintre părtinire și variație.

Ce este regularizarea în învățarea automată

Regularizarea este o tehnică ce adaugă un termen de penalizare la funcția de pierdere a modelului pentru a descuraja complexitatea.

Fără acest termen de penalizare, un model este suficient de flexibil pentru a potrivi datele de antrenare cât de strâns dorește. Asta include zgomotul și valorile extreme. Regularizarea adaugă un cost acelei flexibilități. Cu cât modelul vrea să fie mai complex, cu atât penalizarea este mai mare.

Funcția de pierdere a modelului măsoară în mod normal diferența dintre valorile prezise și cele reale. Regularizarea adaugă un termen suplimentar la acea ecuație, unul care crește pe măsură ce cresc coeficienții modelului. Modelul trebuie acum să echilibreze două obiective concurente: să potrivească datele de antrenare și să mențină coeficienții mici.

Acest echilibru este ceea ce controlează flexibilitatea modelului.

Un model foarte flexibil se poate „răsuci” în orice formă pentru a potrivi datele de antrenare. Regularizarea îl netezește înapoi către o formă mai simplă – una care are mai multe șanse să reziste pe date pe care modelul nu le-a mai văzut.

De ce este necesară regularizarea

Fiecare model pe care îl antrenați se află undeva între două modele inutilizabile: unul prea simplu și unul prea complex.

Un model prea simplu nu „prinde” tiparele reale din datele dumneavoastră. Ratează semnalul. Aceasta este subînvățarea – modelul are performanțe slabe atât pe datele de antrenare, cât și pe datele noi.

Un model prea complex face opusul. Potrivește fiecare detaliu din datele de antrenare, inclusiv zgomotul. Aceasta este supraînvățarea – modelul are performanțe excelente pe datele de antrenare, dar eșuează pe date noi pentru că a memorat lucrurile greșite.

Luați drept exemplu concret regresia polinomială. Un polinom de gradul 3 ajustat pe date care arată o curbă lină înseamnă că veți potrivi probabil un tipar corect. Dar un polinom de gradul 15 pe aceleași date duce la supraînvățare – curba trece prin fiecare punct de date, dar face predicții aleatorii între ele.

Graficul de mai jos arată cum arată asta în practică.

Model potrivit-just versus prea complex

Model potrivit-just versus prea complex

Acesta este compromisul părtinire–variație.

Modelele simple au părtinire mare – fac presupuneri puternice care ratează tiparele reale. Modelele complexe au variație mare – sunt prea sensibile la eșantioanele specifice de antrenare pe care le-au văzut, iar mici schimbări în date produc modele foarte diferite.

Regularizarea vă ajută să obțineți ce e mai bun din ambele. Nu elimină complexitatea, dar o penalizează. Ca rezultat, modelul are șanse mai bune să învețe semnalul real.

Cum funcționează regularizarea

Fiecare model învață minimizând o funcție de pierdere – o măsură a cât de greșite sunt predicțiile sale. Fără regularizare, singura sarcină a modelului este să minimizeze acea eroare. Va face orice este necesar, inclusiv să mărească coeficienții pentru a potrivi datele de antrenare, dar fără a generaliza.

Regularizarea schimbă obiectivul. În loc să minimizeze doar eroarea, modelul minimizează acum acest lucru:

Cum funcționează regularizarea

Cum funcționează regularizarea

Termenul de penalizare este o funcție a coeficienților modelului. Coeficienții mari cresc penalizarea. Pentru a menține costul total scăzut, modelul este forțat să își mențină coeficienții mici – ceea ce înseamnă soluții mai simple, care generalizează mai bine.

λ (lambda) controlează cât de mult contează penalizarea. Un λ mai mare pune mai multă presiune pe model să rămână simplu. Un λ mai mic îi permite modelului să se concentreze mai mult pe potrivirea datelor. Veți vedea cum să reglați acest parametru în secțiunea Alegerea intensității regularizării de mai jos.

Tipuri de regularizare în învățarea automată

Există câteva moduri de a penaliza complexitatea modelului. Fiecare pune presiune pe coeficienți în mod diferit, ceea ce înseamnă că se potrivește unor situații diferite.

Regularizarea L2 (regresie Ridge)

Regularizarea L2 penalizează pătratul valorii fiecărui coeficient. Cu cât un coeficient este mai mare, cu atât contribuie mai mult la penalizare – iar modelul muncește mai mult să îl micșoreze.

Regularizarea L2

Regularizarea L2

Cuvântul-cheie aici este micșorare. L2 împinge toți coeficienții către zero, dar nu ajunge niciodată chiar la zero. Fiecare caracteristică rămâne în model, doar cu o pondere mai mică. Asta face din Ridge o opțiune implicită bună atunci când considerați că majoritatea caracteristicilor sunt relevante și doriți un model stabil, bine comportat.

Regularizarea L1 (regresie Lasso)

Regularizarea L1 penalizează valoarea absolută a fiecărui coeficient în locul pătratului.

Regularizarea L1

Regularizarea L1

Acea mică diferență are o consecință mare. L1 poate împinge coeficienții până la exact zero, ceea ce înseamnă că elimină caracteristici din model. Puteți privi asta ca pe o selecție automată de caracteristici. Cu alte cuvinte, regularizarea Lasso poate simplifica modelul prin eliminarea caracteristicilor.

Regularizarea L1 vs. L2

Diferența esențială ține de raritate. L1 produce modele rare – doar un subset de caracteristici „trec mai departe”. L2 produce modele dense – toate caracteristicile rămân, cu ponderi mai mici.

Asta afectează și interpretabilitatea. Un model Lasso cu 5 caracteristici active este mai ușor de explicat decât un model Ridge cu 50 de caracteristici care contribuie fiecare puțin. Dar Ridge tinde să fie mai stabil când caracteristicile sunt corelate între ele, deoarece distribuie ponderea între ele, în loc să aleagă arbitrar una.

Iată o privire de ansamblu rapidă asupra diferențelor:

Regularizarea L1 versus L2

Regularizarea L1 versus L2

Dacă doriți să vedeți cum se compară acestea în Python, consultați tutorialul nostru Lasso și Ridge Regression în Python.

Regularizarea Elastic Net

Elastic Net combină L1 și L2 într-un singur termen de penalizare.

Regularizarea Elastic Net

Regularizarea Elastic Net

Ideea este să obțineți ce e mai bun din ambele: selecția de caracteristici a L1 și stabilitatea L2. Este util când aveți caracteristici corelate și totuși doriți ca unele dintre ele să fie eliminate. Doar Lasso tinde să aleagă o singură caracteristică dintr-un grup corelat și să le ignore pe celelalte. Elastic Net are mai multe șanse să păstreze câteva dintre ele, eliminând în același timp pe cele nerelevante.

Regularizarea în diferite modele

Regularizarea apare în multe modele de învățare automată, dar în forme diferite. Iată care sunt.

Regresia liniară este locul unde majoritatea oamenilor văd pentru prima dată regularizarea. Când adăugați regularizare L2 la regresia liniară obțineți regularizarea Ridge. În mod similar, adăugarea L1 vă oferă regresia Lasso. Matematica este aceeași ca mai sus – un termen de penalizare adăugat la pierderea pătratelor minime.

Regresia logistică funcționează la fel. Funcția de pierdere se schimbă – este entropie încrucișată în loc de eroare pătratică – dar termenul de penalizare este identic. Majoritatea bibliotecilor de învățare automată aplică implicit regularizare L2 în regresia logistică, motiv pentru care veți vedea un parametru numit C în scikit-learn. Este inversul lui λ, deci un C mai mic înseamnă regularizare mai puternică.

Rețelele neuronale folosesc câteva abordări diferite:

  • Decay al ponderilor: regularizare L2 aplicată ponderilor rețelei – funcționează la fel, doar la o scară mult mai mare
  • Dropout: în timpul antrenării, dezactivează aleator o fracțiune din neuroni la fiecare trecere, ceea ce împiedică rețeaua să se bazeze prea mult pe orice cale unică prin straturi.

Ambele reduc supraînvățarea, dar prin mijloace diferite.

Modelele bazate pe arbori nu folosesc deloc penalități în funcția de pierdere. În schimb, controlează complexitatea prin tăiere (pruning) – limitând adâncimea la care poate crește un arbore sau eliminând ramuri care nu îmbunătățesc suficient predicțiile pentru a-și justifica existența. Hiperparametri precum max_depth și min_samples_split în scikit-learn sunt parametri de regularizare, chiar dacă nu sunt numiți astfel.

Regularizarea și compromisul părtinire–variație

Regularizarea înseamnă compromisuri.

Când adăugați un termen de penalizare, restrângeți ceea ce poate face modelul. Nu mai poate potrivi datele de antrenare atât de strâns pe cât își dorește. Acea constrângere introduce părtinire – modelul face presupuneri ușor greșite prin design, deoarece i-ați spus să rămână simplu.

Dar aceeași constrângere reduce variația. Un model care nu poate potrivi fiecare punct de date este mai puțin sensibil la eșantioanele specifice pe care a fost antrenat. Când îl antrenați pe un set de date ușor diferit, veți obține un rezultat similar. Acea stabilitate este ceea ce vă doriți, pentru ca modelul să nu eșueze în producție.

Fără regularizare, obțineți un model foarte flexibil, cu părtinire mică (face puține presupuneri și potrivește bine datele de antrenare) și variație mare (schimbări mici în datele de antrenare produc modele foarte diferite, ceea ce înseamnă că nu poate fi de încredere pe date noi).

Regularizarea ține de schimbarea balanței. Puțină părtinire în plus, în schimbul unei variații mult mai mici, duce de obicei la performanțe mai bune pe date pe care modelul nu le-a văzut. Acesta este compromis-ul și aproape întotdeauna merită făcut.

Alegerea intensității regularizării

Ca practician în învățarea automată, va trebui să setați intensitatea regularizării după ce ați ales tipul de regularizare.

Acea intensitate este controlată de un hiperparametru – de obicei numit lambda (λ) în notația matematică sau alpha în scikit-learn. Este multiplicatorul din fața termenului de penalizare. Când îl modificați, schimbați cât de puternic este împins modelul către simplitate.

Dacă îl setați greșit în oricare direcție, veți avea o problemă în producție:

  • Prea mic: penalizarea este prea slabă ca să conteze. Modelul supraînvață, la fel ca și cum nu ați avea deloc regularizare.
  • Prea mare: penalizarea devine factorul dominant. Modelul este atât de constrâns încât nu poate înțelege tiparele reale din date. Aceasta este subînvățare.

Valoarea corectă se află undeva la mijloc și nu există un răspuns universal. Depinde de datele dumneavoastră, de model și de cât zgomot aveți.

Modul standard de a o găsi este validarea încrucișată. Împărțiți datele de antrenare în folduri, antrenați modelul pe fiecare combinație de folduri și măsurați performanța de validare pe o gamă de valori alpha. Valoarea care oferă cel mai bun scor mediu de validare este cea pe care o utilizați.

În scikit-learn, RidgeCV și LassoCV pot face asta automat – rulează validare încrucișată pe o grilă de valori alpha și o selectează pe cea mai bună pentru dumneavoastră.

from sklearn.linear_model import RidgeCV

model = RidgeCV(alphas=[0.01, 0.1, 1.0, 10.0], cv=5)
model.fit(X_train, y_train)

print(model.alpha_)

Valoarea alpha afișată vă va arăta cea mai bună valoare găsită prin validare încrucișată. Începeți cu un interval larg de valori, apoi restrângeți după ce știți unde se află intervalul optim.

Concluzie

Regularizarea este modul în care împiedicați un model să fie prea „deștept” în defavoarea sa.

Ea penalizează complexitatea, forțând modelul să găsească soluții care generalizează, nu doar să memoreze datele de antrenare. L2 va păstra toate caracteristicile și le va reduce influența. L1 va elimina caracteristicile nerelevante. Elastic Net le combină pe ambele. Iar în regresii liniare, regresie logistică, rețele neuronale și modele de ansamblu, aceeași idee apare în forme diferite și nu este întotdeauna numită „regularizare”.

Cel mai important este tehnica pe care o alegeți și intensitatea pe care o setați. Așadar, ceea ce ar trebui să faceți este să experimentați. Încercați abordări diferite cu valori de parametri diferite. Nu alegeți una și treceți mai departe.

Datele dumneavoastră vă vor spune ce funcționează.

Dacă doriți să vedeți mai multe tehnici de regularizare în acțiune, înscrieți-vă la traseul nostru Machine Learning Scientist in Python. Are 85 de ore de materiale care vă vor pregăti pentru job.

Întrebări frecvente

Ce este regularizarea în învățarea automată?

Regularizarea este o tehnică ce adaugă un termen de penalizare la funcția de pierdere a unui model pentru a descuraja complexitatea. Previne supraînvățarea forțând modelul să își mențină coeficienții mici, ceea ce duce la soluții mai simple care generalizează mai bine la date noi.

Când ar trebui să folosesc regularizarea?

Folosiți regularizarea ori de câte ori modelul are performanțe bune pe datele de antrenare, dar slabe pe datele de validare sau test – acel decalaj este un semn de supraînvățare. Este, de asemenea, o practică implicită bună atunci când lucrați cu date de înaltă dimensiune sau cu seturi de date în care numărul de caracteristici este apropiat sau depășește numărul de eșantioane.

Regularizarea îmbunătățește întotdeauna performanța modelului?

Nu întotdeauna. Dacă modelul dumneavoastră deja subînvață, adăugarea regularizării va înrăutăți lucrurile împingându-l către soluții și mai simple. Scopul este să găsiți echilibrul corect – regularizarea ajută când modelul este prea complex, nu când este prea simplu.

Care este diferența între alpha în Lasso și C în regresia logistică?

Ambele controlează intensitatea regularizării, dar funcționează în direcții opuse. alpha în Lasso scalează penalizarea – o valoare mai mare înseamnă regularizare mai puternică. C în regresia logistică din scikit-learn este inversul intensității penalizării, deci un C mai mic înseamnă regularizare mai puternică. Dacă comutați între cele două, rețineți că creșterea lui alpha și scăderea lui C au același efect.

Pot folosi împreună regularizările L1 și L2?

Da – exact asta face Elastic Net. Combină ambii termeni de penalizare într-un singur obiectiv, oferindu-vă simultan selecția de caracteristici a L1 și stabilitatea L2. Este util când aveți caracteristici corelate și doriți totuși o anumită „tăiere”, deoarece doar Lasso tinde să elimine arbitrar toate caracteristicile în afară de una dintr-un grup corelat.

Subiecte

Învățați cu DataCamp

course

Machine Learning with Tree-Based Models in Python

5 oră
115.8K
In this course, you'll learn how to use tree-based models and ensembles for regression and classification using scikit-learn.
Vezi detaliiRight Arrow
Începeți cursul
Vezi mai multRight Arrow