Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Överanpassning | Välja Den Bästa Modellen
Linjär Regression med Python

bookÖveranpassning

Överanpassning

Titta på de två regressionslinjerna nedan. Vilken är bättre?

Enligt mätvärdena är den andra bättre. Då använder vi den för att förutsäga nya värden! Vi behöver förutsägelser för X_new = [0.2,0.5,2.7]. Men när vi fick de faktiska målvariabelvärdena för de X_new vi just förutsade, visade det sig att den första modellen gav en mycket bättre förutsägelse.

Detta beror på att den andra modellen överanpassar träningsdatan. Överanpassning innebär att den byggda modellen är för komplex och därför kan anpassa sig perfekt till träningsdatan, men den förutsäger inte osedda exempel särskilt bra.

Underfitting

Det finns också ett annat begrepp, underfitting. Det innebär att den byggda modellen är så enkel att den inte ens passar träningsdatan väl. I sådana fall blir även förutsägelserna för osedda instanser felaktiga.

Vi kan alltså försöka avgöra om modellen underanpassar eller överanpassar visuellt.

Vi vet redan att vi inte kan visualisera multipel linjär regression med många variabler. Finns det något annat sätt att avgöra om modellen överanpassar eller underanpassar? Det visar sig att det finns.

Tränings- och testuppdelning

Vi vill veta hur modellen presterar på osedda exempel. För detta behöver vi osedda exempel med de sanna målvariabelvärdena. Och vi har endast sanna målvariabelvärden i träningsuppsättningen. Lösningen är att dela upp träningsuppsättningen i två delar, en träningsuppsättning och en testuppsättning.

Nu kan vi bygga modellen med hjälp av träningsuppsättningen, beräkna metrikvärden på träningsuppsättningen (sedda exempel) och därefter beräkna metrikvärden på testuppsättningen (osedda exempel).

Det är viktigt att dela upp träningsuppsättningen slumpmässigt. Vanligtvis används cirka 20–30 % av träningsuppsättningen som testuppsättning, medan resterande 70–80 % används som träningsuppsättning. Scikit-learn tillhandahåller en enkel funktion för att slumpmässigt dela upp uppsättningen:

Till exempel, för att dela upp träningsuppsättningen i 70% träning/30% test, kan du använda följande kod:

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)
question-icon

Baserat på MSE-värdena för modellerna, avgör om de överanpassar/underanpassar träningsuppsättningen (datasetet är detsamma).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 5.26

bookÖveranpassning

Svep för att visa menyn

Överanpassning

Titta på de två regressionslinjerna nedan. Vilken är bättre?

Enligt mätvärdena är den andra bättre. Då använder vi den för att förutsäga nya värden! Vi behöver förutsägelser för X_new = [0.2,0.5,2.7]. Men när vi fick de faktiska målvariabelvärdena för de X_new vi just förutsade, visade det sig att den första modellen gav en mycket bättre förutsägelse.

Detta beror på att den andra modellen överanpassar träningsdatan. Överanpassning innebär att den byggda modellen är för komplex och därför kan anpassa sig perfekt till träningsdatan, men den förutsäger inte osedda exempel särskilt bra.

Underfitting

Det finns också ett annat begrepp, underfitting. Det innebär att den byggda modellen är så enkel att den inte ens passar träningsdatan väl. I sådana fall blir även förutsägelserna för osedda instanser felaktiga.

Vi kan alltså försöka avgöra om modellen underanpassar eller överanpassar visuellt.

Vi vet redan att vi inte kan visualisera multipel linjär regression med många variabler. Finns det något annat sätt att avgöra om modellen överanpassar eller underanpassar? Det visar sig att det finns.

Tränings- och testuppdelning

Vi vill veta hur modellen presterar på osedda exempel. För detta behöver vi osedda exempel med de sanna målvariabelvärdena. Och vi har endast sanna målvariabelvärden i träningsuppsättningen. Lösningen är att dela upp träningsuppsättningen i två delar, en träningsuppsättning och en testuppsättning.

Nu kan vi bygga modellen med hjälp av träningsuppsättningen, beräkna metrikvärden på träningsuppsättningen (sedda exempel) och därefter beräkna metrikvärden på testuppsättningen (osedda exempel).

Det är viktigt att dela upp träningsuppsättningen slumpmässigt. Vanligtvis används cirka 20–30 % av träningsuppsättningen som testuppsättning, medan resterande 70–80 % används som träningsuppsättning. Scikit-learn tillhandahåller en enkel funktion för att slumpmässigt dela upp uppsättningen:

Till exempel, för att dela upp träningsuppsättningen i 70% träning/30% test, kan du använda följande kod:

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)
question-icon

Baserat på MSE-värdena för modellerna, avgör om de överanpassar/underanpassar träningsuppsättningen (datasetet är detsamma).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2
some-alt