Wat is overfitting bij machinaal leren en hoe kunt u dit vermijden?



Dit artikel behandelt overfitting in machine learning met voorbeelden en een paar technieken om overfitting te detecteren in een machine learning-model.

Het bouwen van een Machine Learning-model gaat niet alleen over het invoeren van de gegevens, er zijn veel tekortkomingen die de nauwkeurigheid van elk model beïnvloeden. Overfitting in is zo'n tekortkoming in Machine Learning die zowel de nauwkeurigheid als de prestaties van het model belemmert. In dit artikel komen de volgende onderwerpen aan bod:

Wat is overfitting bij machine learning?

Een statistisch model zou overmatig uitgerust zijn als we het veel meer gegevens geven dan nodig is. Om het herkenbaar te maken, stel je voor dat je probeert in te grote kleding te passen.





Wanneer een model meer gegevens bevat dan het werkelijk nodig heeft, begint het de ruisende gegevens en onnauwkeurige waarden in de gegevens op te vangen. Als gevolg hiervan nemen de efficiëntie en nauwkeurigheid van het model af. Laten we een paar voorbeelden van overfitting bekijken om te begrijpen hoe het werkelijk gebeurt.



Voorbeelden van overfitting

voorbeeld 1

Als we een voorbeeld nemen van eenvoudig lineaire regressie Bij het trainen van de gegevens draait het allemaal om het vinden van de minimale kosten tussen de best passende lijn en de datapunten. Het doorloopt een aantal iteraties om de optimale pasvorm te vinden, waarbij de kosten worden geminimaliseerd. Dit is waar overfitting in beeld komt.



De lijn in de bovenstaande afbeelding kan een zeer efficiënt resultaat geven voor een nieuw gegevenspunt. In het geval van overfitting, wanneer we het trainingsalgoritme op de dataset uitvoeren, laten we de kosten dalen met elk aantal iteraties.

Dit uitvoeren te lang betekent lagere kosten, maar het past ook in de ruisende gegevens uit de gegevensset. Het resultaat zou er ongeveer zo uitzien in de onderstaande grafiek.

Dit ziet er misschien efficiënt uit, maar is het niet echt. Het belangrijkste doel van een algoritme zoals lineaire regressie is om een ​​dominante trend te vinden en de gegevenspunten dienovereenkomstig aan te passen. Maar in dit geval past de lijn op alle datapunten, wat niet relevant is voor de efficiëntie van het model bij het voorspellen van optimale resultaten voor nieuwe datapunten.

Laten we nu een meer beschrijvend voorbeeld bekijken met behulp van een probleemstelling.

Voorbeeld 2

Probleemstelling: Laten we eens kijken of we willen voorspellen of een voetballer een plek zal krijgen in een tier 1 voetbalclub op basis van zijn / haar huidige prestaties in de tier 2 league.

Stel je nu voor, we trainen en passen het model met 10.000 van dergelijke spelers met uitkomsten. Als we het resultaat proberen te voorspellen op basis van de oorspronkelijke dataset, laten we zeggen dat we een nauwkeurigheid van 99% hebben. Maar de nauwkeurigheid van een andere dataset ligt rond de 50 procent. Dit betekent dat het model niet goed generaliseert op basis van onze trainingsgegevens en ongeziene gegevens.

Dit is hoe overfitting eruit ziet. Het is een veel voorkomend probleem in Machine Learning en zelfs data science. Laten we nu het signaal en de ruis begrijpen.

Signaal versus ruis

Bij voorspellende modellering verwijst signaal naar het echte onderliggende patroon dat het model helpt de gegevens te leren. Aan de andere kant is ruis niet relevant en willekeurige gegevens in de gegevensset. Laten we een realistisch voorbeeld nemen om het concept van ruis en signaal te begrijpen.

Laten we aannemen dat we leeftijd versus geletterdheid onder volwassenen willen modelleren. Als we een zeer groot deel van de bevolking bemonsteren, zullen we een duidelijke relatie vinden. Dit is het signaal, terwijl ruis het signaal verstoort. Als we hetzelfde doen bij een lokale bevolking, wordt de relatie modderig. Het zou worden beïnvloed door uitschieters en willekeur, bijvoorbeeld een volwassene ging vroeg naar school of een volwassene kon geen onderwijs betalen, enz.

java zet dubbel naar geheel getal om

Over ruis en signaal gesproken in termen van Machine Learning, een goed Machine Learning-algoritme zal automatisch signalen van de ruis scheiden. Als het algoritme te complex of inefficiënt is, kan het ook de ruis leren. Vandaar dat het model te veel past. Laten we ook de underfitting in Machine Learning begrijpen.

Wat is ondermaats?

Om overfitting te voorkomen, konden we de training in een eerder stadium stopzetten. Maar het kan er ook toe leiden dat het model niet genoeg kan leren van trainingsgegevens, waardoor het moeilijk wordt om de dominante trend vast te leggen. Dit staat bekend als underfitting. Het resultaat is hetzelfde als overfitting, inefficiëntie bij het voorspellen van uitkomsten.

Nu we hebben begrepen wat ondermaats en overfitting in Machine Learning werkelijk is, gaan we proberen te begrijpen hoe we overfitting in Machine Learning kunnen detecteren.

Hoe overfitting te detecteren?

De belangrijkste uitdaging bij overfitting is om de nauwkeurigheid van de prestaties van ons model te schatten met nieuwe gegevens. We zouden de nauwkeurigheid pas kunnen inschatten als we deze daadwerkelijk testen.

Om dit probleem aan te pakken, kunnen we de initiële dataset opsplitsen in afzonderlijke trainings- en testdatasets. Met deze techniek kunnen we eigenlijk een schatting maken van hoe goed ons model zal presteren met de nieuwe gegevens.

Laten we dit aan de hand van een voorbeeld begrijpen, stel je voor dat we een nauwkeurigheid van meer dan 90 procent krijgen op de trainingsset en een nauwkeurigheid van 50 procent op de testset. Dan zou het automatisch een rode vlag zijn voor het model.

Een andere manier om overfitting te detecteren is om te beginnen met een simplistisch model dat als maatstaf zal dienen.

Als u met deze benadering complexere algoritmen probeert, kunt u begrijpen of de extra complexiteit zelfs de moeite waard is voor het model of niet. Het is ook bekend als Occam's scheermes-test , kiest het in feite het simplistische model in het geval van vergelijkbare prestaties in het geval van twee modellen. Hoewel het opsporen van overfitting een goede gewoonte is,maar er zijn ook verschillende technieken om overfitting te voorkomen. Laten we eens kijken hoe we overfitting in Machine Learning kunnen voorkomen.

Hoe voorkom je overfitting bij machine learning?

Er zijn verschillende technieken om overfitting in Machine Learning te voorkomen, die hieronder worden vermeld.

  1. Kruisvalidatie

  2. Trainen met meer gegevens

  3. Functies verwijderen

  4. Vroegtijdig stoppen

  5. Regularisatie

  6. Ensembleren

1. Kruisvalidatie

Een van de krachtigste functies om overfitting te voorkomen / voorkomen, is kruisvalidatie. Het idee hierachter is om de initiële trainingsgegevens te gebruiken om minitrein-test-splitsingen te genereren en deze splitsingen vervolgens te gebruiken om uw model af te stemmen.

Bij een standaard k-fold-validatie worden de gegevens opgedeeld in k-subsets, ook wel bekend als folds. Hierna wordt het algoritme iteratief getraind op k-1-vouwen terwijl de resterende vouwen worden gebruikt als testset, ook wel holdout-vouw genoemd.

De kruisvalidatie helpt ons om de hyperparameters af te stemmen met alleen de originele trainingsset. Het houdt de testset in feite apart als een echte ongeziene dataset voor het selecteren van het uiteindelijke model. Daarom wordt overfitting helemaal vermeden.

2. Trainen met meer gegevens

Deze techniek werkt misschien niet elke keer, zoals we ook hebben besproken in het bovenstaande voorbeeld, waar training met een aanzienlijke hoeveelheid bevolking het model helpt. Het helpt het model in feite om het signaal beter te identificeren.

Maar in sommige gevallen kunnen de toegenomen gegevens ook betekenen dat er meer ruis naar het model wordt gevoerd. Wanneer we het model trainen met meer gegevens, moeten we ervoor zorgen dat de gegevens schoon zijn en vrij van willekeur en inconsistenties.

3. Functies verwijderen

verkrijg lengte van array js

Hoewel sommige algoritmen een automatische selectie van functies hebben. Voor een aanzienlijk aantal van degenen die geen ingebouwde functieselectie hebben, kunnen we handmatig een paar irrelevante functies uit de invoerfuncties verwijderen om de generalisatie te verbeteren.

Een manier om dit te doen is door een conclusie te trekken over hoe een kenmerk in het model past. Het lijkt veel op het regel voor regel debuggen van de code.

Als een kenmerk de relevantie in het model niet kan verklaren, kunnen we die kenmerken eenvoudig identificeren. We kunnen zelfs een paar heuristieken voor feature selectie gebruiken voor een goed startpunt.

4. Vroegtijdig stoppen

Wanneer het model traint, kunt u op basis van elke iteratie daadwerkelijk meten hoe goed het model presteert. We kunnen dit doen tot een punt waarop de iteraties de prestaties van het model verbeteren. Hierna past het model de trainingsgegevens te goed aan aangezien de generalisatie na elke iteratie zwakker wordt.

Dus in feite betekent vroeg stoppen het trainingsproces stoppen voordat het model het punt passeert waarop het model de trainingsgegevens begint te overtreffen. Deze techniek wordt vooral gebruikt in diep leren .

5. Regularisatie

Het betekent in feite dat u uw model kunstmatig dwingt om eenvoudiger te zijn door een breder scala aan technieken te gebruiken. Het hangt volledig af van het type leerling dat we gebruiken. We kunnen bijvoorbeeld een , gebruik een drop-out op een neuraal netwerk of voeg een penaltyparameter toe aan de kostenfunctie in regressie.

Regelmatig is regularisatie ook een hyperparameter. Het betekent dat het ook kan worden afgestemd door middel van kruisvalidatie.

6. Ensembleren

Deze techniek combineert in feite voorspellingen van verschillende Machine Learning-modellen. Twee van de meest gebruikelijke methoden voor ensembling worden hieronder vermeld:

  • Bagging probeert de kans op overfitting van de modellen te verkleinen

  • Pogingen stimuleren om de voorspellende flexibiliteit van eenvoudigere modellen te verbeteren

Hoewel het beide ensemblemethoden zijn, vertrekt de aanpak volledig vanuit tegengestelde richtingen. Bagging maakt gebruik van complexe basismodellen en probeert hun voorspellingen glad te strijken, terwijl boosting eenvoudige basismodellen gebruikt en probeert de totale complexiteit ervan te vergroten.

Wat is Goodness Of Fit?

Bij statistische modellen verwijst de goedheid van fit naar hoe nauw de uitkomsten of voorspelde waarden overeenkomen met de waargenomen of werkelijke waarden.Een model dat ruis heeft geleerd in plaats van het signaal, is overmatig uitgerust omdat het in de trainingsdataset past, maar minder efficiënt zal zijn met de nieuwe dataset.

De wisselwerking tussen bias en variantie

Zowel variantie als bias zijn vormen van voorspellingsfouten in . De afweging tussen hoge variantie en hoge bias is een zeer belangrijk concept in statistiek en machine learning. Dit is een concept dat van invloed is op alle algoritmen voor Machine Learning onder supervisie.

De afweging tussen bias en variantie heeft een zeer grote invloed op het bepalen van de complexiteit, onderfitting en overfitting voor elk Machine Learning-model.

Vooroordeel

Het is niets anders dan het verschil tussen de voorspelde waarden en de werkelijke of werkelijke waarden in het model. Het model kan niet altijd gemakkelijk leren van tamelijk complexe signalen.

Laten we ons voorstellen dat u een lineaire regressie naar een model met niet-lineaire gegevens. Hoe efficiënt het model de waarnemingen ook leert, het zal de curven niet efficiënt modelleren. Het staat bekend als underfitting.

Variantie

Het verwijst naar de gevoeligheid van het model voor specifieke sets in de trainingsgegevens. Een algoritme met hoge variantie levert een bizar model op dat drastisch verschilt van de trainingsset.

Stel je een algoritme voor dat past bij het ongedwongen en superflexibele model, het zal ook leren van de ruis in de trainingsset die overfitting veroorzaakt.

Bias-Variance-wisselwerking

Een Machine Learning-algoritme kan niet worden gezien als een eenmalige methode om het model te trainen, maar is een repetitief proces.

Lage variantie-hoge bias-algoritmen zijn minder complex, met een eenvoudige en rigide structuur.

  • Ze zullen de modellen trainen die consistent zijn, maar gemiddeld onnauwkeurig.

  • Deze omvatten lineaire of parametrische algoritmen, zoals regressie, , enzovoort.

Algoritmen met hoge variantie en lage bias zijn doorgaans complexer en hebben een flexibele structuur.

  • Ze zullen de modellen trainen die gemiddeld inconsistent maar nauwkeurig zijn.

  • Deze omvatten niet-lineaire of niet-parametrische algoritmen zoals , , enzovoort.

Dit brengt ons bij het einde van dit artikel waar we hebben geleerd overfitting in machine learning en over verschillende technieken om dit te voorkomen. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Overfitting in machine learning' relevant vond, bekijk dan het een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om je te helpen bij elke stap op je reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een . De cursus is ontworpen om u een voorsprong te geven in het programmeren van Python en om u te trainen in zowel kern- als geavanceerde Python-concepten, samen met verschillende Leuk vinden , , enzovoort.

fibonacci c ++ recursief

Mocht u vragen tegenkomen, stel dan gerust al uw vragen in het opmerkingengedeelte van 'Overfitting In Machine Learning' en ons team zal u graag antwoorden.