Underfitting en overfitting bij machinaal leren

Geloof het of niet, in de echte wereld zullen we nooit een schone en perfecte dataset hebben. Elke dataset zal een aantal vreemde of ontbrekende delen of onevenwichtige gegevens hebben. Of wij als Machine Learning ontwikkelaars zullen enkele fouten of tekortkomingen in ons model introduceren. Een van de belangrijkste redenen hiervoor is dat we willen dat ons model in staat is een onderliggend patroon te beschrijven. Helaas is de aard van echte gegevens dat ze een zekere mate van ruis en uitbijters bevatten, en voor het grootste deel willen we dat het model het signaal in de gegevens vastlegt en niet de ruis.

Nu, om het onderliggende patroon in de gegevens nauwkeurig vast te leggen, moet het model misschien de ruis incorporeren. De implicatie is dat het afgeleide model goed past bij de modelleringsgegevens, maar niet goed genoeg generaliseert naar andere monsters die niet in het modelleringsproces zijn opgenomen.

Er bestaat terminologie om te beschrijven hoe goed een machine-leermodel leert en generaliseert naar nieuwe gegevens, dit zijn overfitting en underfitting. Het doel van een goed machine learning model is om goed te generaliseren van de training dataset naar elke dataset uit het probleemdomein. Hierdoor kunnen we voorspellingen doen op basis van een dataset die het model nog nooit heeft gezien.

In de statistiek wordt een fit aangeduid als, hoe dicht je model bij de doelklasse / functie / waarde ligt. Overfitting en underfitting zijn de twee grootste oorzaken van slechte prestaties van machine learning algoritmen of modellen.

Laten we eens begrijpen wat Best Fit, Overfitting en Underfitting is? Gevolgd door wat code.

Wat is Overfitting & Underfitting?

Overfitting verwijst naar het scenario waarin een machine learning model niet goed kan generaliseren of passen op ongeziene dataset. Een duidelijk teken van machine learning overfitting is als zijn fout op de test- of validatiedataset veel groter is dan de fout op de trainingsdataset.

Overfitting is een term die wordt gebruikt in de statistiek en die verwijst naar een modelleringsfout die optreedt wanneer een functie te nauw overeenkomt met een dataset. Als gevolg hiervan kan overfitting mislukken bij het passen van aanvullende gegevens, en dit kan de nauwkeurigheid van het voorspellen van toekomstige waarnemingen beïnvloeden.

Overfitting gebeurt wanneer een model de details en ruis in de trainingsdataset in die mate leert dat het de prestaties van het model op een nieuwe dataset negatief beïnvloedt. Dit betekent dat de ruis of de willekeurige fluctuaties in de trainingsdataset door het model worden opgepikt en als concepten worden aangeleerd. Het probleem is dat deze concepten niet van toepassing zijn op nieuwe datasets en een negatieve invloed hebben op het vermogen van het model om te generaliseren.

Het tegenovergestelde van overfitting is underfitting.

Underfitting verwijst naar een model dat noch de trainingsdataset kan modelleren, noch kan generaliseren naar nieuwe dataset. Een underfit machine learning-model is geen geschikt model en zal duidelijk zijn omdat het slecht presteert op de trainingsdataset.

Underfitting wordt vaak niet besproken omdat het gemakkelijk te detecteren is gegeven een goede prestatiemetriek.

Uitleg met voorbeelden

Voorbeeld 1:

Laten we zeggen dat drie studenten zich hebben voorbereid op een wiskunde-examen.

De eerste student heeft alleen de wiskundige bewerkingen Optellen bestudeerd en andere wiskundige bewerkingen overgeslagen, zoals Aftrekken, Delen, Vermenigvuldigen enz.

De tweede student heeft een bijzonder goed geheugen. Zo heeft de tweede student alle problemen uit het hoofd geleerd die in het tekstboek worden gepresenteerd.

En de derde student heeft alle wiskundige bewerkingen bestudeerd en is goed voorbereid op het examen.

In het examen zal de student alleen in staat zijn om de vragen op te lossen die betrekking hebben op Optellen en zal falen in problemen of vragen die worden gesteld met betrekking tot andere wiskundige bewerkingen.

Student twee zal alleen vragen kunnen beantwoorden als ze toevallig in het tekstboek voorkomen (omdat hij het heeft onthouden) en zal geen andere vragen kunnen beantwoorden.

Student drie zal alle examenproblemen redelijk kunnen oplossen.

Machine-Leer-algoritmen vertonen een soortgelijk gedrag als onze drie studenten. Ze leren slechts van een klein deel van de trainingsdataset, in zulke gevallen is het model Underfitting.

Soms onthoudt het model de hele trainingsdataset, zoals de tweede student. Zij presteren zeer goed op bekende gevallen, maar falen slecht op ongeziene gegevens of onbekende gevallen. In dergelijke gevallen is er sprake van overfitting.

En wanneer het model het zowel in de trainingsdataset als op de ongeziene gegevens of onbekende gevallen goed doet, zoals bij student drie, is er sprake van een goede fit.

Voorbeeld 2:

Laten we een ander voorbeeld nemen en bedenken dat u een stad “X” hebt bezocht en een ritje in een taxi hebt gemaakt. Toen u met vrienden sprak, besefte u later dat de taxichauffeur u twee of drie keer zoveel rekende als het standaardtarief. Dit gebeurde omdat u nieuw was in de stad en de taxichauffeur u letterlijk meenam voor een ritje.

Ook kocht u enkele artikelen van een straatverkoper, en ook hier betaalde u uiteindelijk meer dan ze waard waren. Uiteindelijk besluit u dat de mensen in de stad “X” oneerlijk zijn. Dat is een menselijke eigenschap, mensen generaliseren vaak. Machine learning-modellen hebben ook deze zwakte als we niet voorzichtig zijn om vooringenomenheid te vermijden tijdens de ontwikkelingsfasen: modellering, selectie van algoritmen, kenmerken, training dataset enz.

Suppose in dezelfde stad “X” een andere taxichauffeur rekende u redelijk en volgens de meter, maar op basis van ervaring bent u van mening dat deze chauffeur ook meer heeft berekend. Dit wordt Overfitting genoemd.

Vanuit bovenstaande twee voorbeelden kunnen we zeggen dat, als het model goed presteert op test of ongeziene dataset dan is het een best fit of goed model. En als het model niet goed presteert op de test of ongeziene dataset, maar wel goed presteert op de trainingsdataset, dan is het een Overfit-model. En elk model dat het noch in de trainingsdataset noch in de testdataset goed deed, is een Underfit-model.

Volgende zal een voorbeeld zien met python-code.

Voorbeeld 3:

Dit voorbeeld demonstreert de problemen van underfitting en overfitting en hoe we lineaire regressie met polynomiale kenmerken kunnen gebruiken om niet-lineaire functies te benaderen.

Laat ons twee variabelen genereren, zeg X en y. X zal een willekeurig getal / monster, waar als y is een deel van cosinus functie.

Op basis van de gegevens de grafiek zal eruit zien … eenvoudig plotten X en y.

Laten we ons model trainen met behulp van Lineaire Regressie, voorspellen en visualiseren het.

Laten we het voorspelde model visualiseren.

We kunnen zien dat de rechte lijn niet in staat is de patronen in de gegevens weer te geven. Dit is een voorbeeld van under-fitting. De fout zal enorm zijn in dit model.

Laten we de polynomiale functie met enkele graden eens bekijken en ons model trainen.

We kunnen zien dat een lineaire functie (polynoom met graad 1) niet voldoende is om de trainingsmonsters te passen. Dit wordt underfitting genoemd.

Een polynoom van graad 4 benadert de ware functie bijna perfect. Dit wordt Best Fit of Good Model genoemd.

Bij hogere graden (met graad 15) zal het model de trainingsdataset echter overfitten, d.w.z. het leert de ruis van de trainingsdata.

We evalueren overfitting / underfitting kwantitatief met behulp van kruisvalidatie.

Wij berekenen ook de gemiddelde kwadratische fout (MSE) op de validatiedataset, hoe hoger de kans dat het model correct generaliseert vanaf de trainingsdataset.

De volledige code kan worden geraadpleegd vanaf
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

Opsporen van overfitting of underfitting

Een belangrijke uitdaging bij het opsporen van elke vorm van fit (of het nu gaat om underfitting of best fit of overfitting), is bijna onmogelijk voordat u de gegevens test. Het kan helpen de inherente kenmerken van overfitting aan te pakken, namelijk het onvermogen om een dataset te generaliseren. De gegevens kunnen daarom worden opgesplitst in verschillende deelverzamelingen, zodat ze gemakkelijk kunnen worden getraind en getest. De gegevens worden opgesplitst in twee grote delen, namelijk een testdataset en een trainingsdataset.

De techniek voor het opsplitsen kan variëren naargelang van het type dataset en men kan om het even welke opsplitsingstechniek gebruiken.

Als ons model het veel beter doet op de trainingsdataset dan op de testdataset, zijn we waarschijnlijk aan het overfitten. Bijvoorbeeld, ons model presteerde met een nauwkeurigheid van 99% op de trainingsdataset, maar slechts met een nauwkeurigheid van 50-55% op de testdataset. Het model is overgefitting en presteerde niet goed op de ongeziene dataset.

Als ons model het veel beter doet op de testdataset dan op de trainingsdataset, dan zijn we waarschijnlijk aan het underfitten.

En als ons model het goed doet op zowel de training- als de testdataset, dan hebben we de beste fit. Bijvoorbeeld, ons model presteert 90% nauwkeurigheid op de training dataset en presteert 88% – 92% nauwkeurigheid op de test dataset. Het is het best passende model.

Een andere eenvoudige manier om dit vast te stellen is door gebruik te maken van kruisvalidatie. Hierbij wordt geprobeerd het getrainde model met een nieuwe dataset te onderzoeken om de voorspellende nauwkeurigheid ervan te controleren. Van een dataset wordt een deel gereserveerd (bijvoorbeeld 30%), terwijl de rest wordt gebruikt om het model te trainen. Zodra het model is getraind, worden de gereserveerde gegevens gebruikt om de nauwkeurigheid van het model te controleren in vergelijking met de nauwkeurigheid van de gegevens die voor de training werden gebruikt. Een significant verschil in deze twee markeert overfitting.

Hoe overfitting of underfitting te voorkomen

Het opsporen van overfitting of underfitting is nuttig, maar het lost het probleem niet op. Gelukkig hebt u verschillende opties om te proberen. Hier zijn een paar van de meest populaire oplossingen.

De remedie voor Underfitting, is om verder te gaan en alternatieve machine learning algoritmen te proberen. Toch biedt het een goed contrast met het probleem van overfitting.

Om overfitting te voorkomen, zijn er verschillende manieren en een paar van hen worden hieronder weergegeven.

  • Cross-validatie:
    • Cross-validatie is een krachtige preventieve maatregel tegen overfitting.
    • Gebruik uw initiële trainingsgegevens om meerdere mini-train-test splits te genereren. Gebruik deze splits om uw model te tunen.
    • In standaard k-voudige kruisvalidatie, verdelen we de gegevens in k subsets, vouwen genaamd. Vervolgens trainen we het algoritme iteratief op k-1 vouwen, terwijl we de resterende vouw als de testset gebruiken (de “holdout-vouw” genoemd).
    • Cross-validatie stelt u in staat hyperparameters af te stemmen met alleen uw oorspronkelijke trainingsdataset. Dit stelt u in staat om uw test dataset te houden als een echt ongeziene dataset voor het selecteren van uw uiteindelijke model.
  • Trainen met meer gegevens
    • Het zal niet elke keer werken, maar trainen met meer gegevens kan algoritmen helpen het signaal beter te detecteren.
    • Als de gebruiker meer trainingsgegevens in het model invoert, zal het niet in staat zijn om alle monsters te over-fitten en zal het gedwongen worden om te generaliseren om resultaten te verkrijgen.
    • Gebruikers zouden voortdurend meer gegevens moeten verzamelen als een manier om de nauwkeurigheid van het model te vergroten.
    • Deze methode wordt echter als duur beschouwd, en daarom moeten gebruikers ervoor zorgen dat de gegevens die worden gebruikt relevant en schoon zijn.
    • Natuurlijk is dat niet altijd het geval. Als we alleen maar meer gegevens met ruis toevoegen, zal deze techniek niet helpen. Daarom moet u er altijd voor zorgen dat uw gegevens schoon en relevant zijn.
  • Data augmentation
    • Een alternatief voor trainen met meer gegevens is data augmentation, dat in vergelijking met het eerste minder duur is.
    • Als u niet in staat bent om voortdurend meer gegevens te verzamelen, kunt u de beschikbare gegevenssets divers laten lijken.
    • Data augmentation laat een gegevensmonster er iets anders uitzien telkens wanneer het door het model wordt verwerkt. Het proces zorgt ervoor dat elke dataset uniek lijkt voor het model en voorkomt dat het model de kenmerken van de datasets leert.
  • Vermindering van de complexiteit of gegevensvereenvoudiging
    • Overfitting kan optreden als gevolg van de complexiteit van een model, zodanig dat, zelfs met grote hoeveelheden gegevens, het model er nog steeds in slaagt om de trainingsdataset te overfitten.
    • De gegevensvereenvoudigingsmethode wordt gebruikt om overfitting te verminderen door de complexiteit van het model zodanig te verminderen dat het eenvoudig genoeg is om niet te overfitten.
    • Enkele van de acties die kunnen worden uitgevoerd zijn het snoeien van een beslissingsboom, het verminderen van het aantal parameters in een neuraal netwerk en het gebruik van drop-out op een neuraal netwerk.
    • Het vereenvoudigen van het model kan het model ook lichter maken en sneller uitvoeren.
  • Regularisatie
    • Regularisatie verwijst naar een breed scala van technieken om uw model kunstmatig te dwingen eenvoudiger te zijn.
    • De methode zal afhangen van het type lerende dat u gebruikt. Je kunt bijvoorbeeld een beslisboom snoeien, dropout gebruiken bij een neuraal netwerk, of een strafparameter toevoegen aan de kostenfunctie bij regressie.
    • Vaak is de regularisatiemethode ook een hyperparameter, wat betekent dat deze via kruisvalidatie kan worden afgesteld.
    • Om meer te leren over Regularization zie het artikel https://datascience.foundation/datatalk/regularization-machine-learning-teacher geschreven en zeer goed uitgelegd door Abhishek Mishra.
  • Ensembling
    • Ensembles zijn machine learning methoden voor het combineren van voorspellingen van meerdere afzonderlijke modellen. Er zijn een paar verschillende methoden voor ensembling, maar de twee meest voorkomende zijn: Boosting en Bagging.
    • Boosting werkt door eenvoudige basismodellen te gebruiken om hun geaggregeerde complexiteit te verhogen. Het traint een groot aantal zwakke lerenden gerangschikt in een reeks, zodanig dat elke lerende in de reeks leert van de fouten van de lerende ervoor.
    • Boosting probeert de voorspellende flexibiliteit van eenvoudige modellen te verbeteren.
    • Boosting combineert alle zwakke lerenden in de reeks om één sterke lerende naar voren te brengen.
    • Bagging werkt door vele sterke lerenden te trainen gerangschikt in een parallel patroon en ze dan te combineren om hun voorspellingen te optimaliseren.
    • Bagging probeert de kans op overfitting van complexe modellen te verkleinen.
    • Bagging combineert dan alle sterke lerenden samen om hun voorspellingen “glad te strijken”.
  • Early Stopping
    • Wanneer u een leeralgoritme iteratief traint, kunt u meten hoe goed elke iteratie van het model presteert.
    • Tot aan een bepaald aantal iteraties verbeteren nieuwe iteraties het model. Na dat punt kan het vermogen van het model om te generaliseren echter verzwakken, omdat het de trainingsgegevens begint te overfitten.
    • Early stopping verwijst naar het stoppen van het trainingsproces voordat de lerende dat punt passeert.
    • Heden ten dage wordt deze techniek meestal gebruikt bij deep learning, terwijl andere technieken (bijv. regularisatie) hebben de voorkeur voor klassieke machine learning.
  • U moet regularisatie toevoegen in het geval van Lineaire en SVM-modellen.
  • In beslissingsboommodellen kunt u de maximale diepte verminderen.
  • Terwijl u in neurale netwerken dropout-laag kunt introduceren om overfitting te verminderen.

Korte samenvatting

Overfitting is een modelleringsfout die een vertekening in het model introduceert omdat het te nauw verwant is aan de dataset.

Overfitting maakt het model alleen relevant voor zijn dataset, en irrelevant voor andere datasets.

Enkele van de methoden die worden gebruikt om overfitting te voorkomen zijn ensembling, data augmentation, data simplification, en cross-validatie.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.