AI-basisprincipes
Wat is Overfitting?
Wat is Overfitting?
Wanneer je een neurale netwerk traint, moet je overfitting vermijden. Overfitting is een probleem binnen machine learning en statistiek waarbij een model de patronen van een trainingsdataset te goed leert, waardoor het perfect de trainingsdata verklaart, maar niet in staat is om zijn voorspellende kracht te generaliseren naar andere datasets.
Om het anders te zeggen, in het geval van een overfitting-model zal het vaak extreem hoge nauwkeurigheid op de trainingsdataset laten zien, maar lage nauwkeurigheid op data die in de toekomst wordt verzameld en via het model wordt uitgevoerd. Dat is een korte definitie van overfitting, maar laten we het concept van overfitting in meer detail bekijken. Laten we eens kijken hoe overfitting optreedt en hoe het kan worden vermeden.
Over “Fit” en Underfitting
Het is nuttig om naar het concept van underfitting en “fit” in het algemeen te kijken wanneer we overfitting bespreken. Wanneer we een model trainen, proberen we een kader te ontwikkelen dat in staat is om de aard, of klasse, van items in een dataset te voorspellen, op basis van de kenmerken die deze items beschrijven. Een model moet in staat zijn om een patroon in een dataset te verklaren en de klassen van toekomstige datapunten te voorspellen op basis van dit patroon. Hoe beter het model de relatie tussen de kenmerken van de trainingsset verklaart, hoe “beter” ons model is.

Blauwe lijn vertegenwoordigt voorspellingen van een model dat underfitting vertoont, terwijl de groene lijn een beter passend model vertegenwoordigt. Foto: Pep Roca via Wikimedia Commons, CC BY SA 3.0, (https://commons.wikimedia.org/wiki/File:Reg_ls_curvil%C3%ADnia.svg)
Een model dat de relatie tussen de kenmerken van de trainingsdata slecht verklaart en dus niet in staat is om toekomstige datapunten nauwkeurig te classificeren, vertoont underfitting. Als je de voorspelde relatie van een underfitting-model tegen de werkelijke intersectie van de kenmerken en labels zou grafischeren, zouden de voorspellingen afwijken van het doel. Als we een grafiek zouden hebben met de werkelijke waarden van een trainingsset gelabeld, zou een ernstig underfitting-model de meeste datapunten drastisch missen. Een model met een betere fit zou een pad door het midden van de datapunten volgen, met individuele datapunten die slechts een beetje afwijken van de voorspelde waarden.
Underfitting kan vaak optreden wanneer er onvoldoende data is om een nauwkeurig model te creëren, of wanneer je probeert om een lineair model te ontwerpen met niet-lineaire data. Meer trainingsdata of meer kenmerken zullen vaak helpen om underfitting te verminderen.
Waarom zouden we dan niet gewoon een model creëren dat elke punt in de trainingsdata perfect verklaart? Zeker is perfecte nauwkeurigheid wenselijk? Het creëren van een model dat de patronen van de trainingsdata te goed heeft geleerd, is wat overfitting veroorzaakt. De trainingsdataset en andere, toekomstige datasets die je via het model uitvoert, zullen niet exact hetzelfde zijn. Ze zullen waarschijnlijk op veel punten erg lijken, maar ze zullen ook op belangrijke punten verschillen. Daarom leidt het ontwerpen van een model dat de trainingsdataset perfect verklaart ertoe dat je een theorie over de relatie tussen kenmerken krijgt die niet goed generaliseert naar andere datasets.
Overfitting begrijpen
Overfitting treedt op wanneer een model de details in de trainingsdataset te goed leert, waardoor het model lijdt wanneer voorspellingen op externe data worden gedaan. Dit kan optreden wanneer het model niet alleen de kenmerken van de dataset leert, maar ook toevallige fluctuaties of ruis in de dataset, en belang hecht aan deze toevallige/onbelangrijke gebeurtenissen.
Overfitting is waarschijnlijker wanneer niet-lineaire modellen worden gebruikt, omdat ze flexibeler zijn bij het leren van datapatronen. Niet-parametrische machine learning-algoritmen hebben vaak verschillende parameters en technieken die kunnen worden toegepast om de gevoeligheid van het model voor data te beperken en daarmee overfitting te verminderen. Als voorbeeld zijn beslissingsboommodellen zeer gevoelig voor overfitting, maar een techniek genaamd pruning kan worden gebruikt om willekeurig enkele van de details die het model heeft geleerd te verwijderen.
Als je de voorspellingen van het model op X- en Y-assen zou grafischeren, zou je een voorspellingslijn hebben die heen en weer zigzagt, wat weerspiegelt dat het model te hard heeft geprobeerd om alle punten in de dataset in zijn verklaring te passen.
Overfitting controleren
Wanneer we een model trainen, willen we idealiter dat het model geen fouten maakt. Wanneer de prestaties van het model convergeren naar het maken van correcte voorspellingen op alle datapunten in de trainingsdataset, wordt de fit beter. Een model met een goede fit kan bijna alle trainingsdata verklaren zonder overfitting.
Terwijl een model traint, verbetert de prestatie van het model over tijd. De foutenratio van het model zal afnemen naarmate de trainingsduur vordert, maar het neemt alleen af tot een bepaald punt. Het punt waarop de prestatie van het model op de testset weer begint te stijgen, is typisch het punt waarop overfitting optreedt. Om de beste fit voor een model te krijgen, willen we het model stoppen met trainen op het punt van laagste verlies op de trainingsset, voordat de fouten weer beginnen te stijgen. Het optimale stoppunt kan worden bepaald door de prestatie van het model gedurende de trainingsduur te grafischeren en de training te stoppen wanneer het verlies het laagst is. Echter, een risico met deze methode om overfitting te controleren is dat het specificeren van het eindpunt voor de training op basis van testprestatie betekent dat de testdata enigszins wordt opgenomen in de trainingsprocedure en daardoor zijn status als puur “ongeraakt” data verliest.
Er zijn een paar verschillende manieren om overfitting te bestrijden. Een methode om overfitting te verminderen is door een resampling-tactiek te gebruiken, die werkt door de nauwkeurigheid van het model te schatten. Je kunt ook een validatiedataset gebruiken in combinatie met de testset en de trainingsnauwkeurigheid grafischeren tegen de validatiedataset in plaats van de testdataset. Dit houdt je testdataset ongezien. Een populaire resampling-methode is K-folds cross-validatie. Deze techniek stelt je in staat om je data op te delen in subsets waarop het model wordt getraind, en vervolgens wordt de prestatie van het model op de subsets geanalyseerd om te schatten hoe het model zal presteren op externe data.
Het gebruik van cross-validatie is een van de beste manieren om de nauwkeurigheid van een model op ongezien data te schatten, en wanneer het wordt gecombineerd met een validatiedataset, kan overfitting vaak tot een minimum worden beperkt.












