Gebruik bij machine learning technieken gescheiden train-, test- en validatiedata en houdt rekening met underfitting en overfitting.
dat-07Dataverkenning en datapreparatieOntwikkelenOntwikkelaarDataTechnische robuustheid en veiligheidBias en non discriminatie
Maatregel
Indien je gebruik maakt van machine learning technieken, maak een passende keuze voor gescheiden train-, test- en validatiedata en houd hierbij rekening met underfitting en overfitting.
Toelichting
Verdeel je dataset in drie delen:
-
de trainingsset
Deze dataset wordt gebruikt om het model te trainen. Uit deze dataset worden de onderliggende patronen of relaties geleerd die later gebruikt kunnen worden om voorspellingen mee te doen.
De kwaliteit van deze dataset moet goed zijn en zo representatief mogelijk voor de doelpopulatie. Eventuele bias of vooroordelen in deze dataset kan door het trainen in het model sluipen.
Let bij het samenstellen van de traningsset op dat de data waarop het model gebaseerd is, niet beschikbaar zijn voordat de uitkomsten zijn geobserveerd. Met andere woorden, zorg ervoor de de voorspellingen geen onderdeel kunnen zijn van de inputvariabelen.
-
de validatieset
De validatieset fungeert als een onafhankelijke, onbevooroordeelde dataset voor het vergelijken van de prestaties van verschillende algoritmes die zijn getraind op onze trainingsset.
Verschillende modellen kunnen getraind worden op de trainingsdataset. Zo kan je bijvoorbeeld variëren in de (hyper)parameters of de inputvariabelen. Dit leidt tot verschillende varianten van het model. Om de prestaties van de verschillende modellen te vergelijken, moeten we een nieuwe dataset gebruiken: de validatieset. Zou je hiervoor de trainingsdataset gebruiken, kan dat leiden tot overfitting, wanneer het model dan te specifiek afgestemd is op 1 dataset. Het model kan dan niet voldoende generaliseren voor nieuwe situaties.
-
de testset
Nadat er met behulp van de validatieset een keuze is gemaakt voor een passend model en bijbehorende (hyper)parameters, moet je het model nog testen op nieuwe data. Dit geeft een beeld van de werkelijke prestaties van het model in nieuwe omstandigheden.
Let op dat je pas naar deze resultaten kijkt als laatste stap. Inzichten uit deze testdataset mogen niet worden meegenomen in de ontwikkeling, omdat dit kan leiden tot overfitting. Het model zal dan in productie mogelijk minder goed presteren.
Grootte van de drie datasets
Er is geen optimale verdeling van de drie datsets. Veelvoorkomende verhoudingen om je data in te splitten zijn:
- 80% trainingsset, 10% validatieset, 10% testset
- 70% trainingsset, 15% validatieset, 15% testset
- 60% trainingsset, 20% validatieset, 20% testset
Afhankelijk van de hoeveelheid beschikbare data en de context maak je hierin een keuze. Houdt hierbij rekening met:
- Hoe minder trainingdata, hoe groter de variantie van het model tijdens het trainen. De patronen en relaties die ontdekt zijn, bevatten dan een grotere onzekerheid.
- Hoe minder validatie- en testdata je gebruikt, hoe grote de variantie en de onzekerheid in de verwachte prestaties van het algoritme.
- Hoe complexer het model, en hoe meer (hyper)parameters er zijn om te optimaliserne, hoe groter de validatieset moet zijn om het model met optimale presetaties te vinden. Wanneer er weinig hyperparameters zijn, is een relatief kleine validatieset vaak voldoende.
k-fold cross validation
Naast dat je de datasets willekeurig kan verdelen in drie delen (aselect), kan je ook meer geavanceerde technieken gebruiken. Een robuuste en veelgebruikte techniek is k-fold cross validation, waarbij het model k keer wordt getraind op verschillende delen van de data.
Bijbehorende vereiste(n)
Risico
Door onjuiste training van het model presteert het model in de praktijk minder goed dan bij de tests. Als trainings-, validatie- en testdata door elkaar lopen ("data leakage"), kan dit leiden tot overfitting, waardoor het model beter lijkt te presteren dan in werkelijkheid het geval is.
Bronnen
- Onderzoekskader Auditdienst Rijk, DM.5, DM.6
- Toetsingskader Algoritmes Algemene Rekenkamer, 2.15, 2.21
Voorbeeld
Gemeente Amsterdam:
Dit voorbeeld kan ter inspiratie dienen voor hoe de maatregel toegepast kan worden.
Gemeente Amsterdam heeft een systeem voor het herkennen van lantaarnpalen. Hiervoor is een subset van de data gebruikt uit Amsterdam-Oost om te trainen. Het testen is onder andere gebeurd in Weesp wat in het Zuid-Oost gebied ligt. Het uiteindelijke doel is het gehele gebied Amsterdam. Het grootste punt van verbetering zou zijn om de trainings-data en validatie-data expliciet te benoemen. Daarnaast zou de trainings-data het beste uit verschillende delen van het gebied Amsterdam gehaald kunnen worden om zo overfitting op Amsterdam-Oost te voorkomen.
Heb je een voorbeeld of best practice, laat het ons weten via algoritmes@minbzk.nl