Underfitting și Overfitting în Machine Learning
Credeți sau nu, în lumea reală nu vom avea niciodată un set de date curat și perfect. Fiecare set de date va avea unele părți ciudate sau lipsă sau date dezechilibrate. Sau noi, în calitate de dezvoltatori de învățare automată, vom introduce unele erori sau deficiențe în modelul nostru. Unul dintre principalele motive pentru acest lucru este faptul că dorim ca modelul nostru să fie capabil să descrie un model de bază. Din nefericire, natura datelor din viața reală este că acestea vin cu un anumit nivel de zgomot și valori aberante și, în cea mai mare parte, dorim ca modelul să capteze semnalul din date și nu zgomotul.
Acum, pentru a capta cu acuratețe tiparul care stă la baza datelor, este posibil ca modelul să trebuiască să încorporeze zgomotul. Implicația este că modelul derivat se potrivește bine datelor de modelare, dar nu se generalizează suficient de bine la alte eșantioane care nu au fost incluse în procesul de modelare.
Există o terminologie pentru a descrie cât de bine un model de învățare automată învață și generalizează la date noi, aceasta este supraadaptarea și subadaptarea. Scopul unui model bun de învățare automată este de a generaliza bine de la setul de date de instruire la orice set de date din domeniul problemei. Acest lucru ne permite să facem predicții pe baza unui set de date pe care modelul nu l-a văzut niciodată.
În statistică, o potrivire este menționată ca, cât de aproape este modelul dvs. de clasa / funcția / valoarea țintă. Supraadaptarea și subadaptarea sunt cele două mari cauze ale performanțelor slabe ale algoritmilor sau modelelor de învățare automată.
Să înțelegem ce înseamnă Best Fitting, Overfitting și Underfitting? Urmată de câteva coduri.
Ce este Overfitting & Underfitting?
Overfitting se referă la scenariul în care un model de învățare automată nu poate generaliza sau se potrivește bine pe seturi de date nevăzute. Un semn clar de supraadaptare a învățării automate este dacă eroarea sa pe setul de date de testare sau validare este mult mai mare decât eroarea pe setul de date de instruire.
Supraadaptarea este un termen utilizat în statistică care se referă la o eroare de modelare care apare atunci când o funcție corespunde prea mult unui set de date. Ca urmare, supraadaptarea poate eșua să se potrivească unor date suplimentare, iar acest lucru poate afecta acuratețea predicției observațiilor viitoare.
Overfitting are loc atunci când un model învață detaliile și zgomotul din setul de date de instruire în așa măsură încât are un impact negativ asupra performanței modelului pe un nou set de date. Acest lucru înseamnă că zgomotul sau fluctuațiile aleatorii din setul de date de instruire sunt preluate și învățate ca și concepte de către model. Problema este că aceste concepte nu se aplică noilor seturi de date și au un impact negativ asupra capacității modelului de a generaliza.
Opusul supraadaptării este subadaptarea.
Subadaptarea se referă la un model care nu poate nici să modeleze setul de date de instruire, nici să generalizeze la un nou set de date. Un model de învățare automată subadaptat nu este un model adecvat și va fi evident, deoarece va avea performanțe slabe pe setul de date de instruire.
Subadaptarea nu este adesea discutată, deoarece este ușor de detectat, având în vedere o măsurătoare de performanță bună.
Înțelegere cu exemple
Exemplul 1:
Să spunem că trei elevi s-au pregătit pentru un examen de matematică.
Primul elev a studiat doar operațiile matematice de Adăugare și a sărit peste alte operații matematice cum ar fi Scăderea, Diviziunea, Înmulțirea etc.
Al doilea elev are o memorie deosebit de bună. Astfel, al doilea elev a memorat toate problemele prezentate în manual.
Și al treilea elev a studiat toate operațiile matematice și este bine pregătit pentru examen.
În examen elevul unu va putea rezolva doar întrebările legate de Adăugare și va eșua în problemele sau întrebările puse legate de alte operații matematice.
Studentul doi va fi capabil să răspundă la întrebări doar dacă s-a întâmplat să apară în manual (deoarece l-a memorat) și nu va fi capabil să răspundă la alte întrebări.
Studentul trei va fi capabil să rezolve rezonabil de bine toate problemele din examen.
Agoritmii de învățare mecanică au un comportament similar cu cel al celor trei studenți ai noștri, uneori modelul generat de algoritm este similar cu cel al primului student. Ei învață doar dintr-o mică parte din setul de date de instruire, în astfel de cazuri modelul este Underfitting.
Câteodată modelul va memora întregul set de date de instruire, ca al doilea student. Acestea performează foarte bine pe instanțe cunoscute, dar greșesc grav pe date nevăzute sau instanțe necunoscute. În astfel de cazuri, se spune că modelul este supraadaptat.
Și atunci când modelul se descurcă bine atât în setul de date de instruire, cât și pe datele nevăzute sau instanțele necunoscute, cum este cazul studentului trei, este o potrivire bună.
Exemplu 2:
Să avem un alt exemplu și să considerăm că ați vizitat un oraș „X” și ați făcut o plimbare cu un taxi. Vorbind cu prietenii, vă dați seama ulterior că taximetristul v-a cerut de două sau trei ori mai mult decât tariful standard. Acest lucru s-a întâmplat deoarece erați nou în oraș și șoferul v-a luat la propriu la plimbare.
De asemenea, ați cumpărat niște articole de la un vânzător ambulant și, din nou, ați ajuns să plătiți mai mult decât meritau. În cele din urmă, ați decis că oamenii din orașul „X” sunt necinstiți. Ceea ce este o trăsătură umană, oamenii generalizează adesea. Modelele de învățare automată au, de asemenea, această slăbiciune dacă nu suntem atenți să evităm prejudecățile în timpul etapelor de dezvoltare: modelare, selectarea algoritmilor, a caracteristicilor, a setului de date de antrenament etc.
Să presupunem că în același oraș „X” un alt șofer de taxi v-a taxat în mod rezonabil și conform aparatului de taxare, dar, pe baza experienței, considerați că și acest șofer a taxat mai mult. Acest lucru se numește supraadaptare.
Din cele două exemple de mai sus putem spune că, dacă modelul se comportă bine pe setul de date de testare sau pe setul de date nevăzute, atunci este un model care se potrivește cel mai bine sau un model bun. Și dacă nu a performat bine pe setul de date de testare sau nevăzute, dar a performat bine pe setul de date de instruire, atunci este un model Overfit. Și orice model care nu s-a descurcat bine nici în setul de date de instruire, nici în setul de date de testare, atunci este un model Underfit.
În continuare vom vedea un exemplu cu cod python.
Exemplul 3:
Acest exemplu demonstrează problemele de subadaptare și supraadaptare și modul în care putem utiliza regresia liniară cu caracteristici polinomiale pentru a aproxima funcțiile neliniare.
Să generăm două variabile, să spunem X și y. X va avea un număr aleatoriu / eșantion, în timp ce y este o parte a funcției cosinus.
Pe baza datelor, graficul va arăta ca… o simplă reprezentare grafică a lui X și y.
Să antrenăm modelul nostru folosind Regresia liniară, să-l prezicem și să-l vizualizăm.
Să vizualizăm modelul prezis.
Vezi că linia dreaptă nu este capabilă să surprindă modelele din date. Acesta este un exemplu de subadaptare. Eroarea va fi uriașă în acest model.
Să luăm în considerare caracteristica polinomială cu câteva grade și să ne antrenăm modelul.
Vezi că o funcție liniară (polinomial cu gradul 1) nu este suficientă pentru a se potrivi eșantioanelor de antrenament. Acest lucru se numește subadaptare.
Un polinom de grad 4 aproximează aproape perfect funcția adevărată. Aceasta se numește Best Fitting sau Good Model.
Cu toate acestea, pentru grade mai mari (cu gradul 15) modelul se va supraadapta la setul de date de instruire, adică învață zgomotul din datele de instruire.
Evaluăm cantitativ supraadaptarea / subadaptarea prin utilizarea validării încrucișate.
Calculăm, de asemenea, eroarea medie pătratică (MSE) pe setul de date de validare, cu cât este mai mare, cu atât este mai puțin probabil ca modelul să generalizeze corect din setul de date de instruire.
Codul complet poate fi consultat la
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing
Detectarea supraadaptării sau subadaptării
O provocare cheie a detectării oricărui tip de adaptare (fie că este vorba de subadaptare sau de cea mai bună adaptare sau supraadaptare), este aproape imposibilă înainte de a testa datele. Aceasta poate ajuta la abordarea caracteristicilor inerente ale supraadaptării, care este incapacitatea de a generaliza un set de date. Prin urmare, datele pot fi separate în diferite subseturi pentru a facilita antrenarea și testarea. Datele sunt împărțite în două părți principale, și anume, un set de date de testare și un set de date de instruire.
Tehnica de divizare poate varia în funcție de tipul setului de date și se poate utiliza orice tehnică de divizare.
Dacă modelul nostru se descurcă mult mai bine pe setul de date de instruire decât pe setul de date de testare, atunci probabil că suntem supraadaptați De exemplu, modelul nostru a funcționat cu o precizie de 99% pe setul de date de instruire, dar cu o precizie de numai 50-55% pe setul de date de testare. Este o supraadaptare a modelului și nu a performat bine pe setul de date nevăzute.
Dacă modelul nostru se descurcă mult mai bine pe setul de date de testare decât pe setul de date de instruire, atunci probabil că suntem subadaptați.
Și dacă modelul nostru se descurcă bine atât pe setul de date de instruire, cât și pe cel de testare, atunci avem cea mai bună potrivire. De exemplu, modelul nostru a realizat o precizie de 90% pe setul de date de instruire și realizează o precizie de 88% – 92% pe setul de date de testare. Este modelul cu cea mai bună potrivire.
O altă modalitate simplă de a detecta acest lucru este prin utilizarea validării încrucișate. Aceasta încearcă să examineze modelul instruit cu un nou set de date pentru a verifica acuratețea predictivă a acestuia. Dat fiind un set de date, o parte din acesta este reținută (să zicem 30%), în timp ce restul este utilizat la antrenarea modelului. Odată ce modelul a fost instruit, datele rezervate sunt apoi utilizate pentru a verifica acuratețea modelului în comparație cu acuratețea datelor derivate din datele utilizate la instruire. O variație semnificativă între acestea două semnalează supraadaptarea.
Cum să preveniți supraadaptarea sau subadaptarea
Detectarea supraadaptării sau subadaptării este utilă, dar nu rezolvă problema. Din fericire, aveți mai multe opțiuni pe care le puteți încerca. Iată câteva dintre cele mai populare soluții.
Remediul pentru Underfitting, este de a merge mai departe și de a încerca algoritmi alternativi de învățare automată. Cu toate acestea, oferă un bun contrast față de problema supraadaptării.
Pentru a preveni supraadaptarea, există diverse modalități și câteva dintre ele sunt prezentate mai jos.
- Validarea încrucișată:
- Validarea încrucișată este o măsură preventivă puternică împotriva supraadaptării.
- Utilizați datele inițiale de instruire pentru a genera mai multe mini diviziuni de instruire-testare. Folosiți aceste diviziuni pentru a vă regla modelul.
- În validarea încrucișată k-fold standard, împărțim datele în k subansamble, numite folds. Apoi, antrenăm iterativ algoritmul pe k-1 pliuri în timp ce folosim pliul rămas ca set de testare (numit „holdout fold”).
- Validarea încrucișată vă permite să reglați hiperparametrii doar cu setul de date de antrenament original. Acest lucru vă permite să păstrați setul de date de testare ca un set de date cu adevărat nevăzut pentru selectarea modelului final.
- Învățați cu mai multe date
- Nu va funcționa de fiecare dată, dar antrenarea cu mai multe date poate ajuta algoritmii să detecteze mai bine semnalul.
- Pe măsură ce utilizatorul alimentează modelul cu mai multe date de antrenament, acesta nu va putea supraadapta toate eșantioanele și va fi forțat să generalizeze pentru a obține rezultate.
- Utilizatorii ar trebui să colecteze în mod continuu mai multe date ca o modalitate de a crește acuratețea modelului.
- Cu toate acestea, această metodă este considerată costisitoare și, prin urmare, utilizatorii ar trebui să se asigure că datele utilizate sunt relevante și curate.
- Desigur, acest lucru nu este întotdeauna cazul. Dacă pur și simplu adăugăm mai multe date zgomotoase, această tehnică nu va fi de ajutor. De aceea, ar trebui să vă asigurați întotdeauna că datele sunt curate și relevante.
- Creșterea datelor
- O alternativă la antrenarea cu mai multe date este creșterea datelor, care este mai puțin costisitoare în comparație cu prima.
- Dacă nu puteți colecta continuu mai multe date, puteți face ca seturile de date disponibile să pară diverse.
- Creșterea datelor face ca un eșantion de date să arate ușor diferit de fiecare dată când este procesat de model. Procesul face ca fiecare set de date să pară unic pentru model și împiedică modelul să învețe caracteristicile seturilor de date.
- Reducerea complexității sau simplificarea datelor
- Supraajustarea poate apărea din cauza complexității unui model, astfel încât, chiar și cu volume mari de date, modelul reușește totuși să supraajusteze setul de date de instruire.
- Metoda de simplificare a datelor este utilizată pentru a reduce supraadaptarea prin diminuarea complexității modelului pentru a-l face suficient de simplu încât să nu se supraadapteze.
- Câteva dintre acțiunile care pot fi implementate includ tăierea unui arbore de decizie, reducerea numărului de parametri într-o rețea neuronală și utilizarea abandonului pe o rețea neuronală.
- Simplificarea modelului poate face, de asemenea, ca modelul să fie mai ușor și să ruleze mai repede.
- Regularizarea
- Regularizarea se referă la o gamă largă de tehnici pentru a forța în mod artificial modelul dvs. să fie mai simplu.
- Metoda va depinde de tipul de învățător pe care îl utilizați. De exemplu, ați putea tăia un arbore de decizie, ați putea folosi dropout pe o rețea neuronală sau ați putea adăuga un parametru de penalizare la funcția de cost în regresie.
- De multe ori, metoda de regularizare este, de asemenea, un hiperparametru, ceea ce înseamnă că poate fi reglat prin validare încrucișată.
- Pentru a învăța despre regularizare consultați articolul https://datascience.foundation/datatalk/regularization-machine-learning-teacher scris și foarte bine explicat de Abhishek Mishra.
- Ensamblare
- Ensamblările sunt metode de învățare automată pentru combinarea predicțiilor de la mai multe modele separate. Există câteva metode diferite pentru ensamblare, dar cele două cele mai comune sunt: Boosting și Bagging.
- Boosting funcționează prin utilizarea unor modele de bază simple pentru a le crește complexitatea agregată. Acesta antrenează un număr mare de învățători slabi aranjați într-o secvență, astfel încât fiecare învățător din secvență învață din greșelile învățătorului dinaintea sa.
- Boosting încearcă să îmbunătățească flexibilitatea predictivă a modelelor simple.
- Boosting combină toți învățătorii slabi din secvență pentru a scoate la iveală un învățător puternic.
- Bagging funcționează prin antrenarea mai multor învățători puternici aranjați într-un model paralel și apoi combinându-i pentru a le optimiza predicțiile.
- Bagging încearcă să reducă șansele de supraajustare a modelelor complexe.
- Bagging combină apoi toți învățătorii puternici împreună pentru a le „netezi” predicțiile.
- Early Stopping
- Când antrenați un algoritm de învățare iterativ, puteți măsura cât de bine se comportă fiecare iterație a modelului.
- Până la un anumit număr de iterații, noile iterații îmbunătățesc modelul. După acest punct, însă, capacitatea modelului de a generaliza poate slăbi pe măsură ce începe să se supraadapteze la datele de instruire.
- Oprirea timpurie se referă la oprirea procesului de instruire înainte ca cel care învață să treacă de acel punct.
- Astăzi, această tehnică este folosită mai ales în învățarea profundă, în timp ce alte tehnici (de ex. regularizare) sunt preferate pentru învățarea automată clasică.
- Este necesar să adăugați regularizare în cazul modelelor liniare și SVM.
- În cazul modelelor de arbori de decizie puteți reduce adâncimea maximă.
- În timp ce în cazul rețelelor neuronale, puteți introduce un strat de abandon pentru a reduce supraadaptarea.
Rezumat
Supraajustarea este o eroare de modelare care introduce prejudecăți în model deoarece acesta este prea strâns legat de setul de date.
Supraajustarea face ca modelul să fie relevant doar pentru setul său de date și irelevant pentru orice alte seturi de date.
Câteva dintre metodele utilizate pentru a preveni supraajustarea includ ensamblarea, creșterea datelor, simplificarea datelor și validarea încrucișată.
.