Överanpassning
Överanpassning
Tänk 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äningsmängden. Överanpassning innebär att den skapade modellen är för komplex så att den kan passa träningsdata perfekt, men den förutsäger inte osedda exempel särskilt bra.
Underfitting
Det finns också ett ytterligare 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 därför 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äningsmängden. Lösningen är att dela upp träningsmängden i två delar, en träningsmängd och en testmängd.
Nu kan vi bygga modellen med hjälp av träningsmängden, beräkna metrik på träningsmängden (sedda exempel) och därefter beräkna metrik på testmängden (osedda exempel).
Det är viktigt att dela upp träningsmängden slumpmässigt. Vanligtvis vill du använda cirka 20–30 % av träningsmängden som testmängd, och de återstående 70–80 % som träningsmängd. Scikit-learn tillhandahåller en enkel funktion för att slumpmässigt dela upp mängden:
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)
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Överanpassning
Svep för att visa menyn
Överanpassning
Tänk 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äningsmängden. Överanpassning innebär att den skapade modellen är för komplex så att den kan passa träningsdata perfekt, men den förutsäger inte osedda exempel särskilt bra.
Underfitting
Det finns också ett ytterligare 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 därför 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äningsmängden. Lösningen är att dela upp träningsmängden i två delar, en träningsmängd och en testmängd.
Nu kan vi bygga modellen med hjälp av träningsmängden, beräkna metrik på träningsmängden (sedda exempel) och därefter beräkna metrik på testmängden (osedda exempel).
Det är viktigt att dela upp träningsmängden slumpmässigt. Vanligtvis vill du använda cirka 20–30 % av träningsmängden som testmängd, och de återstående 70–80 % som träningsmängd. Scikit-learn tillhandahåller en enkel funktion för att slumpmässigt dela upp mängden:
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)
Tack för dina kommentarer!