Overfitting
Overfitting
Bekijk de twee regressielijnen hieronder. Welke is beter?
Volgens de statistieken is de tweede beter. Dus gebruiken we deze om nieuwe waarden te voorspellen! We hebben de voorspellingen nodig voor X_new = [0.2,0.5,2.7]
. Maar toen we de werkelijke doelwaarden voor de voorspelde X_new
kregen, bleek dat het eerste model een veel betere voorspelling had.
Dat komt omdat het tweede model overfit op de trainingsset. Overfitting betekent dat het gebouwde model te complex is, waardoor het perfect past op de trainingsdata, maar het voorspellen van niet eerder geziene gevallen minder goed gaat.
Underfitting
Er is ook nog een ander concept, underfitting. Dit betekent dat het gebouwde model te eenvoudig is, waardoor het zelfs de trainingsdata niet goed benadert. In zulke gevallen zijn de voorspellingen voor onbekende gevallen ook onjuist.
Het is mogelijk om visueel te beoordelen of het model underfit of overfit.
We weten al dat Multiple Linear Regression met veel kenmerken niet te visualiseren is. Is er een andere manier om te bepalen of het model overfit of underfit? Die is er inderdaad.
Train-test-splits
We willen weten hoe het model presteert op niet eerder geziene voorbeelden. Daarvoor hebben we niet eerder geziene voorbeelden nodig met de bijbehorende echte doelwaarden. En we hebben alleen echte doelwaarden in de trainingsset. De oplossing is om de trainingsset op te splitsen in twee sets: een trainingsset en een testset.
Nu kunnen we het model bouwen met de trainingsset, de metriekwaarden berekenen op de trainingsset (bekende voorbeelden) en vervolgens de metriekwaarden berekenen op de testset (onbekende voorbeelden).
Het is essentieel om de trainingsset willekeurig te splitsen. Gewoonlijk wordt ongeveer 20-30% van de trainingsset gebruikt als testset, terwijl de overige 70-80% als trainingsset wordt gebruikt. Scikit-learn biedt een eenvoudige functie om de set willekeurig te splitsen:
Bijvoorbeeld, om de trainingsset te splitsen in 70% training/30% test, kun je de volgende code gebruiken:
from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 5.26
Overfitting
Veeg om het menu te tonen
Overfitting
Bekijk de twee regressielijnen hieronder. Welke is beter?
Volgens de statistieken is de tweede beter. Dus gebruiken we deze om nieuwe waarden te voorspellen! We hebben de voorspellingen nodig voor X_new = [0.2,0.5,2.7]
. Maar toen we de werkelijke doelwaarden voor de voorspelde X_new
kregen, bleek dat het eerste model een veel betere voorspelling had.
Dat komt omdat het tweede model overfit op de trainingsset. Overfitting betekent dat het gebouwde model te complex is, waardoor het perfect past op de trainingsdata, maar het voorspellen van niet eerder geziene gevallen minder goed gaat.
Underfitting
Er is ook nog een ander concept, underfitting. Dit betekent dat het gebouwde model te eenvoudig is, waardoor het zelfs de trainingsdata niet goed benadert. In zulke gevallen zijn de voorspellingen voor onbekende gevallen ook onjuist.
Het is mogelijk om visueel te beoordelen of het model underfit of overfit.
We weten al dat Multiple Linear Regression met veel kenmerken niet te visualiseren is. Is er een andere manier om te bepalen of het model overfit of underfit? Die is er inderdaad.
Train-test-splits
We willen weten hoe het model presteert op niet eerder geziene voorbeelden. Daarvoor hebben we niet eerder geziene voorbeelden nodig met de bijbehorende echte doelwaarden. En we hebben alleen echte doelwaarden in de trainingsset. De oplossing is om de trainingsset op te splitsen in twee sets: een trainingsset en een testset.
Nu kunnen we het model bouwen met de trainingsset, de metriekwaarden berekenen op de trainingsset (bekende voorbeelden) en vervolgens de metriekwaarden berekenen op de testset (onbekende voorbeelden).
Het is essentieel om de trainingsset willekeurig te splitsen. Gewoonlijk wordt ongeveer 20-30% van de trainingsset gebruikt als testset, terwijl de overige 70-80% als trainingsset wordt gebruikt. Scikit-learn biedt een eenvoudige functie om de set willekeurig te splitsen:
Bijvoorbeeld, om de trainingsset te splitsen in 70% training/30% test, kun je de volgende code gebruiken:
from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
Bedankt voor je feedback!