Civiele & structurele engineering
Uitvoering van kruisvalidatie in Supervised Leren: Beste praktijken en praktische voorbeelden
Table of Contents
Cross-validation is een techniek die wordt gebruikt in het onder toezicht leren om de prestaties van een model te evalueren. Het helpt bij het beoordelen hoe goed een model generaliserend is om ongeziene gegevens te ontwaren, waardoor het risico van overpassen wordt verminderd.
Begrijpen van kruisvalidatie
Cross-validatie houdt in dat de dataset in meerdere subgroepen wordt verdeeld, het model op sommige van deze subgroepen wordt getraind en op andere wordt getest. Dit proces geeft een nauwkeurigere schatting van de prestaties van het model in vergelijking met een enkele trein-testsplit.
Gemeenschappelijke kruisvalidatietechnieken
- K-Fold Cross-Validation: Verdeelt de gegevens in 'k' gelijke delen, traint op k-1 delen en test op de overige delen. Dit proces herhaalt k keer.
- Gestratificeerde K-Fold: Gelijkaardig aan K-Fold maar behoudt klasseverdeling over vouwen, nuttig voor onevenwichtige datasets.
- Laat-één-uit (LOO): Gebruikt één datapunt als de testset, met de rest als trainingsgegevens. Geschikt voor kleine datasets.
Beste praktijken voor de uitvoering
Om een effectieve kruisvalidatie te waarborgen, moet u de volgende praktijken in overweging nemen:
- Gebruik gestratificeerde bemonstering bij het omgaan met onevenwichtige klassen.
- Kies het aantal vouwen op basis van datasetgrootte; de gebruikelijke keuzes zijn 5 of 10.
- Combineer kruisvalidatie met hyperparameter tuning voor optimale resultaten.
- Zorg ervoor dat gegevens schuifelen voordat splitsen om vooringenomenheid te verminderen.
Praktisch voorbeeld in Python
Het uitvoeren van kruisvalidatie in Python met scikit-learn is eenvoudig. Hier is een eenvoudig voorbeeld:
Code-knipper:
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# Load dataset
data = load_iris()
X = data.data
y = data.target
# Initialize model
model = RandomForestClassifier()
# Perform 5-fold cross-validation
scores = cross_val_score(model, X, y, cv=5)
print("Cross-validation scores:", scores)
print("Average score:", scores.mean())