Underfitting og overfitting i maskinlæring

Tro det eller ej, men i den virkelige verden vil vi aldrig have et rent og perfekt datasæt. Hvert datasæt vil have nogle mærkelige eller manglende dele eller ubalancerede data. Eller vi som udviklere af maskinlæring vil indføre nogle fejl eller mangler i vores model. En af hovedårsagerne hertil er, at vi ønsker, at vores model skal være i stand til at beskrive et underliggende mønster. Desværre er det karakteristisk for data i det virkelige liv, at de kommer med et vist niveau af støj og outliers, og for det meste ønsker vi, at modellen skal fange signalet i dataene og ikke støjen.

Nu skal modellen muligvis indarbejde støjen for at fange det underliggende mønster i dataene præcist. Konsekvensen er, at den afledte model passer godt til modelleringsdataene, men ikke generaliserer godt nok til andre prøver, der ikke er blevet inddraget i modelleringsprocessen.

Der findes en terminologi til at beskrive, hvor godt en maskinlæringsmodel lærer og generaliserer til nye data, dette er overfitting og underfitting. Målet med en god maskinlæringsmodel er at generalisere godt fra træningsdatasættet til et hvilket som helst datasæt fra problemdomænet. Dette giver os mulighed for at lave forudsigelser baseret på et datasæt, som modellen aldrig har set.

I statistikken betegnes et fit som, hvor tæt din model er på målklassen/funktionen/værdien. Overfitting og underfitting er de to største årsager til dårlig præstation af maskinlæringsalgoritmer eller modeller.

Lad os forstå, hvad der er bedste tilpasning, overfitting og underfitting? Efterfulgt af noget kode.

Hvad er Overfitting & Underfitting?

Overfitting henviser til det scenarie, hvor en maskinlæringsmodel ikke kan generalisere eller passe godt på usete datasæt. Et klart tegn på overtilpasning af maskinlæring er, hvis dens fejl på test- eller valideringsdatasættet er meget større end fejlen på træningsdatasættet.

Overfitting er et begreb, der anvendes i statistik, og som henviser til en modelleringsfejl, der opstår, når en funktion svarer for tæt til et datasæt. Som følge heraf kan en overtilpasning muligvis ikke passe til yderligere data, og dette kan påvirke nøjagtigheden af forudsigelsen af fremtidige observationer.

Overfitting sker, når en model lærer detaljerne og støjen i træningsdatasættet i et sådant omfang, at det har en negativ indvirkning på modellens ydeevne på et nyt datasæt. Det betyder, at støjen eller de tilfældige udsving i træningsdatasættet opfanges og læres som begreber af modellen. Problemet er, at disse begreber ikke gælder for nye datasæt og påvirker modellens evne til at generalisere negativt.

Det modsatte af overfitting er underfitting.

Underfitting refererer til en model, der hverken kan modellere træningsdatasættet eller generalisere til nye datasæt. En undertilpasset maskinlæringsmodel er ikke en egnet model og vil være indlysende, da den vil have dårlig ydeevne på træningsdatasættet.

Undertilpasning diskuteres ofte ikke, da det er let at opdage, når man har en god præstationsmetrik.

Underfitting med eksempler

Eksempel 1:

Lad os sige, at tre studerende har forberedt sig til en matematikeksamen.

Den første studerende har kun studeret matematiske operationer i addition og sprunget andre matematiske operationer over, såsom subtraktion, division, multiplikation osv.

Den anden studerende har en særlig god hukommelse. Således har den anden elev lært alle de opgaver, der er præsenteret i lærebogen udenad.

Og den tredje elev har studeret alle matematiske operationer og er godt forberedt til eksamen.

I eksamen vil elev et kun være i stand til at løse de spørgsmål, der vedrører Addition og vil fejle i problemer eller spørgsmål, der stilles vedrørende andre matematiske operationer.

Student to vil kun kunne besvare spørgsmål, hvis de tilfældigvis optræder i lærebogen (da han har lært den udenad) og vil ikke kunne besvare andre spørgsmål.

Student tre vil kunne løse alle eksamensproblemer rimeligt godt.

Maskinindlæringsalgoritmer har en lignende adfærd som vores tre studerende, nogle gange ligner den model, der genereres af algoritmen, den første studerende. De lærer kun fra en lille del af træningsdatasættet, i sådanne tilfælde er modellen Underfitting.

I nogle tilfælde vil modellen lære hele træningsdatasættet udenad, ligesom den anden elev. De klarer sig meget godt på kendte forekomster, men fejler dårligt på usete data eller ukendte forekomster. I sådanne tilfælde siges modellen at være Overfitting.

Og når modellen klarer sig godt på både træningsdatasættet og på de usete data eller ukendte forekomster som elev tre, er den en god tilpasning.

Eksempel 2:

Lad os få et andet eksempel og overveje, at du har besøgt en by “X” og tog en tur i en taxa. Når du taler med dine venner, opdager du senere, at taxachaufføren tog to eller tre gange mere for dig end den normale pris. Dette skete, fordi du var ny i byen, og chaufføren bogstaveligt talt tog dig med på en tur.

Der er også sket det, at du har købt nogle varer hos en gadesælger, og du endte igen med at betale mere, end de var værd. Du beslutter dig til sidst for, at folk i byen “X” er uærlige. Hvilket er et menneskeligt træk, folk generaliserer ofte. Maskinlæringsmodeller har også denne svaghed, hvis vi ikke er omhyggelige med at undgå bias i udviklingsfaserne: modellering, udvælgelse af algoritmer, funktioner, træningsdatasæt osv.

Sæt, at en anden taxachauffør i den samme by “X” opkrævede dig rimeligt og i henhold til taxameteret, men på baggrund af erfaring mener du, at denne chauffør også har opkrævet mere. Dette kaldes Overfitting.

Fra ovenstående to eksempler kan vi sige, at hvis modellen klarer sig godt på test- eller usete datasæt, så er det en model, der passer bedst eller en god model. Og hvis den ikke klarede sig godt på test- eller usete datasæt, men klarede sig godt på træningsdatasættet, så er det en Overfit-model. Og enhver model, der ikke klarede sig godt i træningsdatasættet eller i testdatasættet, så er det en Underfit-model.

Næste vil se et eksempel med python-kode.

Eksempel 3:

Dette eksempel demonstrerer problemerne med undertilpasning og overtilpasning, og hvordan vi kan bruge lineær regression med polynomiale funktioner til at tilnærme ikke-lineære funktioner.

Lad os generere to variabler, lad os sige X og y. X vil have et tilfældigt tal/prøve, hvor som y er en del af cosinusfunktionen.

Baseret på dataene vil grafen se ud som … simpel plotting X og y.

Lad os træne vores model ved hjælp af lineær regression, forudsige og visualisere den.

Lad os visualisere den forudsagte model.

Vi kan se, at den lige linje ikke er i stand til at indfange mønstrene i dataene. Dette er et eksempel på underpasning. Fejlen vil være enorm i denne model.

Lad os overveje den polynomiale funktion med nogle grader og træne vores model.

Vi kan se, at en lineær funktion (polynomium med grad 1) ikke er nok til at passe til træningsprøverne. Dette kaldes underfitting.

Et polynomium af grad 4 tilnærmer sig den sande funktion næsten perfekt. Dette kaldes Best Fit eller Good Model.

Derimod vil modellen for højere grader (med grad 15) overtilpasse træningsdatasættet, dvs. den lærer træningsdataenes støj.

Vi evaluerer kvantitativt overtilpasning/undertilpasning ved hjælp af krydsvalidering.

Vi beregner også den gennemsnitlige kvadrerede fejl (MSE) på valideringsdatasættet, jo højere jo mindre sandsynligt er det, at modellen generaliserer korrekt fra træningsdatasættet.

Fuld kode kan refereres fra
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

Detektering af overpasning eller underpasning

En central udfordring ved at detektere enhver form for tilpasning (det være sig underpasning eller bedste tilpasning eller overpasning), er næsten umulig, før du tester dataene. Det kan hjælpe med at løse de iboende karakteristika ved overpasning, som er den manglende evne til at generalisere et datasæt. Dataene kan derfor opdeles i forskellige delmængder for at gøre det nemt at træne og teste dem. Dataene opdeles i to hoveddele, nemlig et testdatasæt og et træningsdatasæt.

Splittingteknikken kan variere alt efter typen af datasæt, og man kan bruge enhver opdelingsteknik.

Hvis vores model klarer sig meget bedre på træningsdatasættet end på testdatasættet, er der sandsynligvis tale om overfitting For eksempel klarede vores model sig med en nøjagtighed på 99 % på træningsdatasættet, men kun 50-55 % nøjagtighed på testdatasættet. Det er Overfitting af modellen og præsterede ikke godt på usete datasæt.

Hvis vores model klarer sig meget bedre på testdatasættet end på træningsdatasættet, så er vi sandsynligvis underfitting.

Og hvis vores model klarer sig godt på både trænings- og testdatasættene, så har vi den bedste tilpasning. Vores model opnåede f.eks. en nøjagtighed på 90 % på træningsdatasættet og en nøjagtighed på 88-92 % på testdatasættet. Det er den model, der passer bedst.

En anden enkel måde at opdage dette på er ved at bruge krydsvalidering. Herved forsøger man at undersøge den trænede model med et nyt datasæt for at kontrollere dens forudsigelsesnøjagtighed. Når man får et datasæt, holdes en vis del af dette tilbage (f.eks. 30 %), mens resten bruges til at træne modellen. Når modellen er blevet trænet, bruges de reserverede data derefter til at kontrollere modellens nøjagtighed sammenlignet med nøjagtigheden af de data, der er afledt af de data, der blev brugt ved træningen. En betydelig afvigelse i disse to flagger for overfitting.

Sådan forhindrer man overfitting eller underfitting

Det er nyttigt at opdage overfitting eller underfitting, men det løser ikke problemet. Heldigvis har du flere muligheder, du kan prøve. Her er et par af de mest populære løsninger.

Midlet mod Underfitting, er at gå videre og prøve alternative maskinlæringsalgoritmer. Ikke desto mindre giver det en god kontrast til problemet med overfitting.

For at forhindre overfitting er der forskellige måder, og et par af dem er vist nedenfor.

  • Krydsvalidering:
    • Krydsvalidering er et effektivt forebyggende middel mod overfitting.
    • Brug dine oprindelige træningsdata til at generere flere mini trænings- og testopdelinger. Brug disse opdelinger til at afstemme din model.
    • I standard k-fold krydsvalidering opdeler vi dataene i k delmængder, kaldet folds. Derefter træner vi algoritmen iterativt på k-1 folds, mens vi bruger den resterende fold som testsæt (kaldet “holdout fold”).
    • Krydsvalidering giver dig mulighed for at indstille hyperparametre med kun dit oprindelige træningsdatasæt. Dette giver dig mulighed for at beholde dit testdatasæt som et ægte uset datasæt til udvælgelse af din endelige model.
  • Træn med flere data
    • Det vil ikke fungere hver gang, men træning med flere data kan hjælpe algoritmerne med at opdage signalet bedre.
    • Da brugeren indfører flere træningsdata i modellen, vil den ikke være i stand til at overtilpasse alle prøverne og vil være tvunget til at generalisere for at opnå resultater.
    • Brugere bør løbende indsamle flere data som en måde at øge modellens nøjagtighed på.
    • Denne metode anses dog for at være dyr, og derfor bør brugere sikre sig, at de data, der anvendes, er relevante og rene.
    • Det er naturligvis ikke altid tilfældet. Hvis vi blot tilføjer flere støjende data, vil denne teknik ikke hjælpe. Derfor bør du altid sikre dig, at dine data er rene og relevante.
  • Dataforøgelse
    • Et alternativ til træning med flere data er dataforøgelse, som er mindre dyrt sammenlignet med førstnævnte.
    • Hvis du ikke er i stand til løbende at indsamle flere data, kan du få de tilgængelige datasæt til at se forskellige ud.
    • Dataforøgelse får et datastikprøve til at se lidt anderledes ud, hver gang den behandles af modellen. Processen får hvert datasæt til at fremstå unikt for modellen og forhindrer modellen i at lære datasættenes karakteristika.
  • Reducer kompleksitet eller dataforenkling
    • Overfitting kan forekomme på grund af en models kompleksitet, således at modellen selv med store datamængder stadig formår at overpasse træningsdatasættet.
    • Dataforenklingsmetoden bruges til at reducere overtilpasning ved at mindske modellens kompleksitet, så den bliver så enkel, at den ikke overtilpasser.
    • Nogle af de handlinger, der kan gennemføres, omfatter beskæring af et beslutningstræ, reduktion af antallet af parametre i et neuralt netværk og brug af dropout på et neuralt netværk.
    • Simplificering af modellen kan også gøre modellen lettere og hurtigere at køre.
  • Regularisering
    • Regularisering henviser til en bred vifte af teknikker til kunstigt at tvinge din model til at være enklere.
    • Metoden vil afhænge af den type learner, du bruger. Du kan f.eks. beskære et beslutningstræ, bruge dropout på et neuralt netværk eller tilføje en strafparameter til omkostningsfunktionen i regression.
    • Ofte er reguleringsmetoden også en hyperparameter, hvilket betyder, at den kan indstilles gennem krydsvalidering.
    • For at lære mere om regularisering henvises til artiklen https://datascience.foundation/datatalk/regularization-machine-learning-teacher skrevet og meget godt forklaret af Abhishek Mishra.
  • Ensembling
    • Ensembler er maskinlæringsmetoder til at kombinere forudsigelser fra flere separate modeller. Der findes et par forskellige metoder til ensembling, men de to mest almindelige er: Boosting og Bagging.
    • Boosting fungerer ved at bruge enkle basismodeller til at øge deres samlede kompleksitet. Den træner et stort antal svage lærere arrangeret i en sekvens, således at hver lærer i sekvensen lærer af fejlene fra læreren før den.
    • Boosting forsøger at forbedre den forudsigelsesmæssige fleksibilitet af simple modeller.
    • Boosting kombinerer alle de svage lærere i sekvensen for at frembringe én stærk lærer.
    • Bagging fungerer ved at træne mange stærke lærere arrangeret i et parallelt mønster og derefter kombinere dem for at optimere deres forudsigelser.
    • Bagging forsøger at reducere risikoen for overtilpasning af komplekse modeller.
    • Bagging kombinerer derefter alle de stærke lærere sammen for at “udjævne” deres forudsigelser.
  • Frølig stopning
    • Når du træner en læringsalgoritme iterativt, kan du måle, hvor godt hver enkelt iteration af modellen klarer sig.
    • Op til et vist antal iterationer forbedrer nye iterationer modellen. Efter dette punkt kan modellens evne til at generalisere imidlertid svækkes, da den begynder at overtilpasse træningsdataene.
    • Tidligt stop henviser til at stoppe træningsprocessen, før den lærende passerer dette punkt.
    • I dag bruges denne teknik mest i deep learning, mens andre teknikker (f.eks. regulering) foretrækkes til klassisk maskinlæring.
  • Du skal tilføje regulering i tilfælde af lineære modeller og SVM-modeller.
  • I beslutningstræmodeller kan du reducere den maksimale dybde.
  • Mens du i neurale netværk kan indføre dropout-lag for at reducere overtilpasning.

Kort opsummering

Overfitting er en modelleringsfejl, der introducerer bias i modellen, fordi den er for tæt relateret til datasættet.

Overfitting gør modellen relevant kun for dens datasæt og irrelevant for alle andre datasæt.

Nogle af de metoder, der anvendes til at forhindre overfitting, omfatter ensembling, dataforøgelse, dataforenkling og krydsvalidering.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.