Kursusindhold
Lineær Regression med Python
Lineær Regression med Python
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 X_new
, som 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ærlig godt.
Underfitting
Der er også et andet begreb, underfitting. Det er, når den byggede 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 Lineær 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
Vi ønsker at vide, hvordan modellen vil præstere på usete eksempler. For at gøre dette har vi brug for usete eksempler med de sande målværdier. Og vi har kun de sande målværdier i træningsdatasættet. Løsningen er at opdele træningsdatasættet i to sæt: et træningssæt og et testsæt.
Nu kan vi opbygge modellen ved hjælp af træningssættet, beregne metrikkerne på træningssættet (sete eksempler) og derefter beregne metrikkerne på testsættet (usete eksempler).
Det er vigtigt at opdele træningsdatasættet tilfældigt. Typisk vil du bruge omkring 20-30% af dit træningsdatasæt til testsættet, og de resterende 70-80% vil blive brugt som træningssæ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!