Waarom kan een model uitstekend scoren en toch onbruikbaar zijn?

Een model kan uitstekend scoren en toch onbruikbaar zijn als het wordt getest op dezelfde gegevens waarvan het heeft geleerd. Het kan die voorbeelden namelijk uit het hoofd hebben geleerd, in plaats van iets te leren dat ook op nieuwe klanten van toepassing is.

Stelt u zich een fictief maaltijdboxbedrijf met 120 medewerkers voor: Pantrybox. Analist Kofi bouwt een model om te voorspellen welke abonnees volgende maand zullen opzeggen, zodat het klantbehoudteam hen als eerste kan bellen. Zijn update aan Sian, hoofd klantzaken, luidt: 'Model A: 99% nauwkeurigheid!! gebruikt 85 kolommen, incl. klant-ID, postcode, alle eerdere besteldatums. Model B (eenvoudig, 2 kolommen): 69% op trainingsdata, 68% op testdata. Model A op nieuwe data van vorige maand: 71%. Ongeveer 30% van de klanten zegt elke maand op.' Sian wil weten welk model ze moet gebruiken en waarom het model met 99% vorige maand zo slecht presteerde.

ModelNauwkeurigheid op trainingsgegevensNauwkeurigheid op de testgegevensWat het voorstelt
Model A, 85 kolommen99%71%Overfitting: klanten uit de trainingsgegevens uit het hoofd geleerd
Model B, 2 kolommen69%68%Onderfitting: nauwelijks beter dan altijd 'blijft' gokken

Hoe stelt u stap voor stap overfitting en underfitting vast?

Stel beide problemen vast door de prestaties op de trainingsgegevens te vergelijken met die op gegevens die het model nog nooit heeft gezien, en door beide te vergelijken met een eenvoudige referentiewaarde. Het patroon van die drie getallen laat zien welk probleem u hebt.

1. Houd gegevens achter

Houd vóór de training een testset apart die het model nooit te zien krijgt. Een model testen op de gegevens waarvan het heeft geleerd, is een fundamentele fout: een model dat alleen herhaalt wat het heeft gezien, scoort perfect maar voorspelt niets.

2. Stel een uitgangswaarde vast

Bereken welke score een eenvoudige regel zou halen. Bij Pantrybox blijft elke maand ongeveer 70% van de klanten, dus als u voor iedereen 'blijft' voorspelt, levert dat een score van ongeveer 70% op. Een bruikbaar model moet duidelijk beter presteren.

3. Vergelijk training en test

Een hoge trainingsscore met een veel lagere testscore wijst op overfitting. Lage scores op beide, dicht bij de referentiescore, wijzen op underfitting. Vergelijkbare, goede scores op beide wijzen op een redelijke fit.

4. Controleer de stabiliteit

Bij kruisvalidatie wordt het model meerdere keren getraind en getest op verschillende delen van de trainingsgegevens en worden de resultaten gemiddeld. Als de scores tussen de delen sterk uiteenlopen, is het model kwetsbaar.

5. Kies een oplossing die bij het probleem past

Overfitting en underfitting vereisen tegengestelde oplossingen, dus stel eerst vast wat het probleem is voordat u iets verandert.

Hoe verhelpt u overfitting en underfitting?

Verhelp overfitting door het model eenvoudiger te maken of de gegevens representatiever, en verhelp underfitting door het model meer bruikbare informatie of meer flexibiliteit te geven. In gewone woorden:

Bij overfitting

Verwijder kolommen die personen identificeren in plaats van gedrag beschrijven, zoals klant-ID; gebruik trainingsgegevens die representatief zijn voor de klanten die u daadwerkelijk gaat beoordelen; geef de voorkeur aan een eenvoudiger model; en pas regularisatie toe, die complexiteit tijdens de training bestraft zodat het model eenvoudigere patronen verkiest.

Bij underfitting

Voeg kenmerken toe die aannemelijk verband houden met opzeggen, zoals overgeslagen leveringen, recente klachten of een prijswijziging; gebruik een flexibeler model; en controleer of de gegevens niet zoveel ruis of verkeerde labels bevatten dat geen enkel model ervan kan leren.

Voor beide

Laat de testset tot het einde onaangeroerd. Als u het model herhaaldelijk afstemt op de testset, lekt er informatie naar het model en geeft de testscore geen eerlijke schatting meer.

Hoe ziet een zwak besluit op basis van een klantverloopmodel eruit, en hoe een verbeterd besluit?

De zwakke beslissing kiest model A omdat 99% het hoogste getal op de dia is. In de praktijk presteert het nauwelijks beter dan gokken en verspilt het klantbehoudteam telefoontjes aan klanten die nooit van plan waren te vertrekken.

De verbeterde beslissing luidt: 'Model A heeft individuele klanten uit het hoofd geleerd: het bevat klant-ID's en exacte besteldatums en herkende daardoor mensen die het al had gezien, in plaats van te leren waarom mensen opzeggen. Model B is te eenvoudig om beter te presteren dan de basiswaarde van 70%. Volgende stap: model C gebruikt zes gedragskenmerken, waaronder overgeslagen leveringen in de afgelopen maand, ondersteuningsverzoeken en het aantal weken sinds de laatste menuwijziging. Klant-ID en postcode zijn verwijderd. Doel: een testscore die duidelijk boven 70% ligt en hooguit enkele punten afwijkt van de trainingsscore, gecontroleerd met vijfvoudige kruisvalidatie, voordat het klantbehoudteam erop gaat vertrouwen.' Sian weet nu waarom het model met 99% faalde en wat een goed resultaat is.

Hoe controleert u of een model niet overfit of underfit is?

Controleer een model door na te gaan of de testscore dicht bij de trainingsscore ligt, duidelijk beter is dan de referentiescore en stabiel blijft over de verschillende deelsets van de kruisvalidatie en over gegevens uit een nieuwe maand. Vraag ook of een kenmerk pas na de uitkomst bekend zou zijn, zoals een reden voor opzegging. Dat is datalek tussen invoer en uitkomst, waardoor beide scores een beter beeld geven dan het model werkelijk verdient.

Wat zijn veelgemaakte fouten rond overfitting en underfitting?

De meest voorkomende fout is de nauwkeurigheid op trainingsgegevens rapporteren alsof het de nauwkeurigheid in de praktijk is. Andere fouten: de basiswaarde negeren, waardoor 70% indrukwekkend lijkt terwijl gokken hetzelfde oplevert; elke beschikbare kolom toevoegen in de hoop op een hogere score; tijdens het afstellen alvast naar de testset kijken; en overaanpassing zien als een reden om het model complexer te maken, terwijl meestal juist het tegenovergestelde nodig is.

Waar staat deze les binnen Tosheo.ai?

Deze les valt onder de categorie Machinaal leren en volgt op de inleiding over modellen in de cursus machinaal leren. In de praktijkopdracht op Tosheo.ai krijgt u een fictief modelrapport om te onderzoeken wat er misgaat. De feedback op basis van het beoordelingsschema controleert of u de trainings-, test- en referentieresultaten hebt vergeleken voordat u een oplossing aanbeveelt. De les biedt een professionele basis om met datateams samen te werken; het trainen en evalueren van modellen in code komt aan bod in het optionele programmeertraject.

Bronnen en reikwijdte

Google-spoedcursus machine learning: overfitting (gecontroleerd op 19 October 2026) ↗

Google-spoedcursus machine learning: modelcomplexiteit en regularisatie (gecontroleerd op 19 October 2026) ↗

Gebruikershandleiding van scikit-learn: kruisvalidatie (gecontroleerd op 19 October 2026) ↗