Overfitting
Overfitting
Overvej de to regressionslinjer nedenfor. Hvilken er bedst?
Ifølge målingerne er den anden bedre. Derfor bruger vi den til at forudsige nye værdier! Vi har brug for forudsigelserne for X_new = [0.2,0.5,2.7]
. Men da vi fik de faktiske målte værdier for de X_new
, vi netop havde forudsagt, viste det sig, at den første model havde en langt bedre forudsigelse.
Dette skyldes, at den anden model overfitter træningssættet. Overfitting opstår, når den opbyggede model er for kompleks, så den kan tilpasse sig træningsdataene perfekt, men ikke forudsiger ukendte tilfælde særligt godt.
Underfitting
Der er også et andet begreb, underfitting. Det er, når den opbyggede model er så simpel, at den ikke engang passer godt til træningsdataene. I sådanne tilfælde er forudsigelserne for de usete eksempler også forkerte.
Vi kan derfor forsøge at vurdere, om modellen underfitter eller overfitter visuelt.
Vi ved allerede, at vi ikke kan visualisere Multiple Linear Regression med mange features. Er der en anden måde at afgøre, om modellen overfitter eller underfitter? Det viser sig, at det er der.
Opdeling i trænings- og testdatasæt
Det er nødvendigt at vurdere modellens præstation på ukendte observationer. For at gøre dette kræves ukendte observationer med de sande målværdier. De sande målværdier findes kun i træningsdatasættet. Derfor opdeles træningsdatasættet i to dele: et træningsdatasæt og et testdatasæt.
Herefter kan modellen opbygges ved brug af træningsdatasættet, metrikker beregnes på træningsdatasættet (kendte observationer), og derefter beregnes metrikker på testdatasættet (ukendte observationer).
Det er afgørende, at træningsdatasættet opdeles tilfældigt. Typisk anvendes omkring 20-30% af træningsdatasættet som testdatasæt, mens de resterende 70-80% anvendes som træningsdatasæt. Scikit-learn tilbyder en simpel funktion til tilfældig opdeling af datasættet:
For eksempel, for at opdele træningssættet i 70% træning/30% test, kan du bruge følgende kode:
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)
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
What are some common signs of overfitting and underfitting in a model?
How does the train-test split help prevent overfitting?
Can you explain how to interpret the results after splitting the data into training and test sets?
Awesome!
Completion rate improved to 5.26
Overfitting
Stryg for at vise menuen
Overfitting
Overvej de to regressionslinjer nedenfor. Hvilken er bedst?
Ifølge målingerne er den anden bedre. Derfor bruger vi den til at forudsige nye værdier! Vi har brug for forudsigelserne for X_new = [0.2,0.5,2.7]
. Men da vi fik de faktiske målte værdier for de X_new
, vi netop havde forudsagt, viste det sig, at den første model havde en langt bedre forudsigelse.
Dette skyldes, at den anden model overfitter træningssættet. Overfitting opstår, når den opbyggede model er for kompleks, så den kan tilpasse sig træningsdataene perfekt, men ikke forudsiger ukendte tilfælde særligt godt.
Underfitting
Der er også et andet begreb, underfitting. Det er, når den opbyggede model er så simpel, at den ikke engang passer godt til træningsdataene. I sådanne tilfælde er forudsigelserne for de usete eksempler også forkerte.
Vi kan derfor forsøge at vurdere, om modellen underfitter eller overfitter visuelt.
Vi ved allerede, at vi ikke kan visualisere Multiple Linear Regression med mange features. Er der en anden måde at afgøre, om modellen overfitter eller underfitter? Det viser sig, at det er der.
Opdeling i trænings- og testdatasæt
Det er nødvendigt at vurdere modellens præstation på ukendte observationer. For at gøre dette kræves ukendte observationer med de sande målværdier. De sande målværdier findes kun i træningsdatasættet. Derfor opdeles træningsdatasættet i to dele: et træningsdatasæt og et testdatasæt.
Herefter kan modellen opbygges ved brug af træningsdatasættet, metrikker beregnes på træningsdatasættet (kendte observationer), og derefter beregnes metrikker på testdatasættet (ukendte observationer).
Det er afgørende, at træningsdatasættet opdeles tilfældigt. Typisk anvendes omkring 20-30% af træningsdatasættet som testdatasæt, mens de resterende 70-80% anvendes som træningsdatasæt. Scikit-learn tilbyder en simpel funktion til tilfældig opdeling af datasættet:
For eksempel, for at opdele træningssættet i 70% træning/30% test, kan du bruge følgende kode:
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)
Tak for dine kommentarer!