Kursinnhold
Lineær Regresjon med Python
Lineær Regresjon med Python
Overtilpasning
Overfitting
Vurder de to regresjonslinjene nedenfor. Hvilken er best?
Ifølge måleverdiene er den andre bedre. Da bruker vi den til å forutsi nye verdier! Vi trenger prediksjoner for X_new = [0.2,0.5,2.7]
. Men da vi fikk de faktiske målverdiene for X_new
vi nettopp hadde forutsagt, viste det seg at den første modellen hadde en mye bedre prediksjon.
Dette er fordi den andre modellen overtilpasser treningssettet. Overtilpasning oppstår når den bygde modellen er for kompleks slik at den passer treningsdataene perfekt, men ikke forutsier ukjente tilfeller like godt.
Underfitting
Det finnes også et annet begrep, underfitting. Dette oppstår når den bygde modellen er så enkel at den ikke engang passer treningsdataene godt. I slike tilfeller vil også prediksjonene for ukjente tilfeller være feil.
Vi kan forsøke å avgjøre om modellen underfitter eller overfitter visuelt.
Vi vet allerede at vi ikke kan visualisere multippel lineær regresjon med mange variabler. Finnes det en annen måte å avgjøre om modellen overfitter eller underfitter? Det viser seg at det gjør det.
Deling av trenings- og testsett
Vi ønsker å vite hvordan modellen vil prestere på ukjente eksempler. For dette trenger vi ukjente eksempler med de sanne målverdiene. Og vi har kun sanne målverdier i treningssettet. Løsningen er å dele treningssettet i to sett, et treningssett og et testsett.
Nå kan vi bygge modellen ved å bruke treningssettet, beregne metrikkene på treningssettet (kjente eksempler) og deretter beregne metrikkene på testsettet (ukjente eksempler).
Det er viktig å dele treningssettet tilfeldig. Vanligvis vil du bruke omtrent 20-30 % av treningssettet til testsettet, og de resterende 70-80 % vil være treningssettet. Scikit-learn tilbyr en enkel funksjon for å dele settet tilfeldig:
For eksempel, for å dele treningssettet i 70 % trening/30 % test, kan du bruke 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)
Takk for tilbakemeldingene dine!