Overfitting și Underfitting: greșeli comune în Machine Learning
Ai antrenat un model de Machine Learning care pare să funcționeze perfect pe datele tale de antrenament, dar când îl testezi în lumea reală, eșuează lamentabil. Sau poate ai un model care nu reușește să învețe nimic util, indiferent câte date îi dai. Aceste două probleme – overfitting și underfitting – sunt cele mai frecvente greșeli pe care le întâlnește oricine lucrează cu ML. În acest ghid vei înțelege exact ce înseamnă fiecare, de ce apar și cum pot fi evitate, totul explicat prin analogii simple, fără matematică sau jargon tehnic. La final vei ști cum să recunoști aceste probleme și ce să faci pentru a crea modele care funcționează cu adevărat.
De ce nu toate modelele ML funcționează bine
Machine Learning-ul pare magic la prima vedere: dai sistemului exemple, el învață singur și poate face predicții pe date noi. Dar în practică, lucrurile merg deseori prost. Un model poate fi excepțional pe datele cu care l-ai antrenat și complet nefolositor pe date noi. Sau poate fi atât de simplist încât nu învață nimic util.
Problema fundamentală este că vrem ca modelul să generalizeze – să învețe principii generale din exemple specifice, pe care apoi să le aplice la situații noi, nevăzute. Este ca diferența dintre a învăța pe de rost răspunsurile dintr-o carte de matematică și a înțelege cu adevărat principiile pentru a rezolva orice problemă similară.
Overfitting și underfitting sunt cele două extreme ale acestei provocări: unul memorează prea mult detalii inutile, celălalt învață prea puțin. Pentru a înțelege cum funcționează Machine Learning-ul în general, este esențial să înțelegi aceste două concepte.
Ce este Overfitting
Overfitting înseamnă că modelul învață prea mult din datele de antrenament – inclusiv zgomotul, erorile și particularitățile care nu sunt relevante pentru problema generală. Este ca și cum ai memora toate întrebările și răspunsurile dintr-un test de probă, dar când vine testul real cu întrebări diferite, nu știi să răspunzi.
Analogia elevului care memorează
Imaginează-ți un elev care se pregătește pentru un examen de istorie. În loc să înțeleagă cauzele și consecințele evenimentelor istorice, memorează verbatim fiecare pagină din manual – cu tot cu greșeli de tipar și note de subsol. La testul de probă (care folosește exact textele din manual), obține nota 10. Dar la examenul real, care pune întrebări similare dar formulate diferit, eșuează complet. Nu a învățat istorie – a memorat un text specific.
Exact asta face un model overfitted: memorează datele de antrenament în loc să învețe pattern-uri generale. Dacă îl antrenezi să recunoască spam, poate învăța că "orice email trimis marți la 14:32 este spam" pentru că în datele tale de antrenament, întâmplător, multe email-uri spam au fost trimise atunci. Dar asta nu e un pattern util – e doar o coincidență din datele tale.
Semnele overfitting-ului
Un model overfitted arată perfect pe datele de antrenament (precizie 99-100%), dar eșuează pe date noi, nevăzute. Este diferența dintre a fi genial la teme și a pica examenul – temele erau predictibile, examenul testează cu adevărat înțelegerea.
Ce este Underfitting
Underfitting este opusul: modelul este prea simplu pentru a învăța pattern-uri reale din date. Nu învață suficient, chiar dacă are la dispoziție informație valoroasă. Este ca și cum ai încerca să rezolvi probleme complexe de matematică știind doar adunarea și scăderea – nu ai instrumentele necesare.
Analogia hărții prea simple
Imaginează-ți că vrei să creezi o hartă pentru turiști care vizitează orașul tău. O hartă perfectă ar arăta străzi, obiective turistice, restaurante și transport public. O hartă underfitted ar arăta doar un dreptunghi cu scris "Orașul X" pe el. Tehnică este o hartă, dar e atât de simplificată încât nu oferă nicio informație utilă. Turiștii nu pot naviga cu ea.
Similar, un model underfitted nu captează complexitatea problemei. Dacă încerci să prezici prețul caselor și modelul tău spune "toate casele costă în medie 150.000 euro" – indiferent de dimensiune, locație sau stare – modelul e underfitted. Ignoră complet factorii care influențează cu adevărat prețul.
Semnele underfitting-ului
Un model underfitted are performanțe slabe atât pe datele de antrenament cât și pe date noi. Nu e doar că nu generalizează bine – pur și simplu nu învață nimic util. Este ca un elev care ia note mici consistent, indiferent de test, pentru că nu a înțeles materia deloc.
Diferențe clare între Overfitting și Underfitting
Complexitatea modelului
Overfitting: Modelul este prea complex pentru cantitatea de date disponibile. Ca și cum ai încerca să desenezi o curbă perfectă prin trei puncte – poți inventa infinite curbe complicate care trec exact prin acele puncte, dar niciuna nu va reprezenta pattern-ul real.
Underfitting: Modelul este prea simplu pentru complexitatea problemei. Ca și cum ai încerca să desenezi o curbă prin sute de puncte care formează clar un cerc, dar singura ta unealtă este o linie dreaptă – nu ai cum să captezi pattern-ul real.
Performanța pe date de antrenament vs date noi
Overfitting: Excelent pe antrenament (99%+), prost pe date noi (50-60%). Diferența mare între cele două este semnul clasic.
Underfitting: Prost pe antrenament (60-70%), prost pe date noi (60-70%). Performanța e mediocră peste tot.
Problema de bază
Overfitting: Modelul memorează detalii irelevante și zgomot din datele de antrenament, în loc să învețe pattern-uri generale.
Underfitting: Modelul nu are capacitatea de a învăța pattern-urile reale, chiar dacă există în date.
De ce apar aceste probleme
Cauze pentru Overfitting
Date de antrenament insuficiente: Dacă ai prea puține exemple, modelul va învăța particularitățile fiecărui exemplu în loc de pattern-uri generale. Este ca și cum ai învăța despre "câini" văzând doar doi câini – un labrador galben și un ciobanesc negru. Ai putea concluziona greșit că "câinii sunt fie galbeni, fie negri" și că "toți câinii sunt mari".
Model prea complex: Când modelul are prea multă "putere de învățare" pentru cantitatea de date disponibile, va găsi pattern-uri acolo unde nu există. Este ca un detectiv prea imaginativ care vede conspirații complexe în coincidențe aleatorii.
Antrenament prea lung: Dacă lași modelul să învețe prea mult timp, va începe să memoreze particularități în loc să optimizeze pentru pattern-uri generale.
Cauze pentru Underfitting
Model prea simplu: Structura modelului nu are complexitatea necesară pentru a capta relațiile din date. Este ca și cum ai încerca să înțelegi Shakespeare cunoscând doar 100 de cuvinte – limba ta e prea limitată.
Date de antrenament de calitate scăzută: Dacă datele sunt zgomotoase, incomplete sau irelevante, chiar și un model bun nu poate învăța nimic util. Nu poți învăța chimie dintr-o carte de istorie.
Antrenament insuficient: Modelul nu a avut destul timp sau iterații să învețe pattern-urile din date. Este ca și cum ai abandona învățatul după prima lecție.
În contextul diferitelor tipuri de Machine Learning, aceste probleme apar atât în Supervised Learning cât și în Reinforcement Learning, dar se manifestă puțin diferit în fiecare caz.
Cum pot fi evitate (la nivel conceptual)
Prevenirea Overfitting-ului
Mai multe date de antrenament: Cu cât ai mai multe exemple diverse, cu atât mai greu poate modelul să memoreze fiecare caz particular. Este ca diferența dintre a învăța despre câini văzând doi câini versus o mie de câini de toate rasele.
Validare pe date separate: Împarte datele în antrenament și testare. Evaluează modelul pe date pe care nu le-a văzut niciodată în timpul antrenamentului. Astfel detectezi dacă memorează sau învață cu adevărat.
Simplificare: Uneori, un model mai simplu generalizează mai bine decât unul complex. Nu folosi un tanc când o bicicletă e suficientă.
Oprirea timpurie: Monitorizează performanța pe datele de validare și oprește antrenamentul când începe să scadă, chiar dacă pe datele de antrenament continuă să crească.
Prevenirea Underfitting-ului
Modele mai complexe: Dacă modelul e prea simplu, folosește unul cu mai multă capacitate de învățare. Este ca upgrade de la o hartă schițată la o hartă detaliată.
Date mai bune: Asigură-te că datele conțin cu adevărat informația necesară pentru a rezolva problema. Dacă încerci să prezici vremea fără date despre temperatură, presiune sau umiditate, niciun model nu va reuși.
Mai mult antrenament: Lasă modelul să învețe mai mult timp. Uneori pare că nu funcționează doar pentru că nu i-ai dat suficiente iterații să descopere pattern-urile.
Caracteristici relevante: Oferă modelului informația potrivită. Dacă vrei să prezici prețul caselor, include dimensiunea, locația, anul – nu numărul de ferestre din vecini.
De reținut
-
Overfitting înseamnă că modelul memorează datele de antrenament (inclusiv zgomotul) în loc să învețe pattern-uri generale – funcționează perfect la antrenament, prost în realitate.
-
Underfitting înseamnă că modelul e prea simplu sau nu a învățat suficient – are performanțe slabe peste tot, nu doar pe date noi.
-
Detectarea lor se face comparând performanța pe datele de antrenament cu performanța pe date separate de testare: diferență mare = overfitting, ambele slabe = underfitting.
-
Balanța perfectă între complexitate și simplitate este cheia unui model bun – destul de complex să capteze pattern-urile reale, dar nu atât de complex încât să memoreze zgomot.
-
Datele de calitate și în cantitate suficientă sunt esențiale – cu date proaste sau puține, orice model va suferi de una dintre aceste probleme.
Concluzie
Overfitting și underfitting sunt ca Scylla și Charybdis din Machine Learning – trebuie să navighezi între aceste două extreme pentru a obține un model care funcționează cu adevărat. Un model bun nu este cel care memorează perfect exemplele pe care le-a văzut, ci cel care înțelege principiile generale și le poate aplica la situații noi. Înțelegerea acestor concepte este fundamentală pentru oricine lucrează cu ML, de la începători până la experți. Pentru a aprofunda, explorează categoria Machine Learning sau revizuiește conceptele fundamentale despre cum învață sistemele computerizate.



