Over Train-, Validatie- en Testsets bij Machine Learning
On oktober 17, 2021 by adminDit is bedoeld als een korte inleiding voor iedereen die het verschil wil weten tussen de verschillende dataset-splitsingen bij het trainen van Machine Learning-modellen.
Voor dit artikel citeer ik de basisdefinities uit het uitstekende artikel van Jason Brownlee over hetzelfde onderwerp, dat vrij uitgebreid is, lees het voor meer details.
Training Dataset: De steekproef van gegevens die wordt gebruikt om het model te passen.
De werkelijke dataset die we gebruiken om het model te trainen (gewichten en biases in het geval van een neuraal netwerk). Het model ziet en leert van deze gegevens.
Validatie Dataset
Validatie Dataset: De steekproef van gegevens die wordt gebruikt om een onbevooroordeelde evaluatie te geven van een model dat geschikt is voor de trainingsdataset terwijl de hyperparameters van het model worden afgesteld. De evaluatie wordt meer bevooroordeeld naarmate de vaardigheid op de validatiedataset in de modelconfiguratie wordt opgenomen.
De validatieset wordt gebruikt om een bepaald model te evalueren, maar dit is voor frequente evaluatie. Wij, als ingenieurs op het gebied van machinaal leren, gebruiken deze gegevens om de hyperparameters van het model nauwkeurig af te stellen. Het model ziet deze gegevens dus af en toe, maar het “leert” er nooit van. Wij gebruiken de resultaten van de validatieset en passen de hyperparameters van een hoger niveau aan. De validatieset heeft dus invloed op een model, maar alleen indirect. De validatieset wordt ook wel de Dev-set of de Development-set genoemd. Dit is logisch omdat deze dataset helpt tijdens de “ontwikkelingsfase” van het model.
Test Dataset
Test Dataset: De steekproef van gegevens die wordt gebruikt om een onbevooroordeelde evaluatie te geven van een uiteindelijk model dat geschikt is voor de trainingsdataset.
De testdataset biedt de gouden standaard die wordt gebruikt om het model te evalueren. Deze wordt pas gebruikt nadat een model volledig is getraind (met behulp van de train- en validatiesets). De test set is over het algemeen wat wordt gebruikt om concurrerende modellen te evalueren (bijvoorbeeld op veel Kaggle wedstrijden, de validatie set wordt in eerste instantie vrijgegeven samen met de training set en de eigenlijke test set wordt pas vrijgegeven wanneer de wedstrijd op het punt staat te sluiten, en het is het resultaat van het model op de Test set die beslist wie de winnaar is). Vaak wordt de validatieset als de testset gebruikt, maar dat is geen goede praktijk. De testset is over het algemeen goed samengesteld. Deze bevat zorgvuldig bemonsterde gegevens die de verschillende klassen bestrijken waarmee het model in de echte wereld te maken zou krijgen.
Over de splitsingsverhouding van de dataset
Nu u weet wat deze datasets doen, bent u misschien op zoek naar aanbevelingen over hoe u uw dataset moet splitsen in Train-, Validatie- en Test-sets.
Dit hangt voornamelijk af van 2 dingen. Ten eerste, het totale aantal monsters in je data en ten tweede, van het eigenlijke model dat je traint.
Sommige modellen hebben substantiële data nodig om op te trainen, dus in dat geval zou je optimaliseren voor de grotere trainingssets. Modellen met zeer weinig hyperparameters zijn gemakkelijk te valideren en af te stellen, dus u kunt de grootte van uw validatieset waarschijnlijk beperken, maar als uw model veel hyperparameters heeft, wilt u ook een grote validatieset hebben (hoewel u ook kruisvalidatie moet overwegen). Als je toevallig een model hebt zonder hyperparameters of met hyperparameters die niet gemakkelijk kunnen worden afgesteld, heb je waarschijnlijk ook geen validatieset nodig!
Al met al, net als veel andere dingen in machine learning, is de train-test-validatie-splitsingsratio ook vrij specifiek voor jouw use case en wordt het gemakkelijker om te oordelen naarmate je meer en meer modellen traint en bouwt.
Note over kruisvalidatie: Vaak splitsen mensen hun dataset eerst in 2 – Train en Test. Daarna houden ze de Test set apart, en kiezen willekeurig X% van hun Train dataset om de eigenlijke Train set te zijn en de resterende (100-X)% om de Validatie set te zijn, waarbij X een vast getal is (zeg 80%), het model wordt dan iteratief getraind en gevalideerd op deze verschillende sets. Er zijn verschillende manieren om dit te doen, en het is algemeen bekend als kruisvalidatie. In principe gebruik je je trainingsset om meerdere splitsingen van de Train en Validatie sets te genereren. Kruisvalidatie voorkomt overaanpassing en wordt steeds populairder, met K-fold Cross Validation als de meest populaire methode van kruisvalidatie. Kijk hier voor meer informatie.
Geef een antwoord