course
Vet du varför din modell har 99% noggrannhet på träningsdata men inte verkar kunna förutsäga något rätt i produktion?
Det är skillnad på en modell som memorerade och en modell som lärde sig. Generalisering är hela poängen med maskininlärning – du vill ha förutsägelser som håller på data modellen aldrig har sett, inte bara datan du använde under träning. När så inte är fallet går det nästan alltid åt ett av två håll.
De två riktningarna är overfitting och underfitting. Du behöver veta vilken av dem du har att göra med innan du kan åtgärda den.
I den här artikeln visar jag hur du känner igen overfitting och underfitting, varför de uppstår och de praktiska stegen som hjälper dig att hitta balansen.
Vad är underfitting?
Underfitting inträffar när din modell är för enkel för att representera vad som faktiskt händer i datan.
Föreställ dig att försöka förutsäga bostadspriser med en enda regel: "varje hus kostar 300 000 $". Den regeln blir fel nästan överallt. Den ser inte stadsdelar, boyta, antal sovrum, garage eller byggår. Modellen har långt ifrån tillräcklig flexibilitet för att följa mönstret.
Du kan känna igen underfitting på samma sätt varje gång. Träningsnoggrannheten är låg och testnoggrannheten är också låg. Båda siffrorna är dåliga, men det viktiga är att de är dåliga tillsammans.
Ett klassiskt fall är att passa en rät linje till data som böjer sig. Linjen skär genom mitten och missar formen. Ingen mängd extra träningsdata kommer att rädda den, eftersom modellen i sig inte kan representera sambandet.

Underfitting-exempel
Vad är overfitting?
Overfitting är det motsatta problemet. Modellen är för komplex.
Istället för att lära sig det generella mönstret memorerar den träningsmängden. Varje bruspunkt, varje udda avvikare, varje topp och dal, varje tillfällighet i datan får uppmärksamhet som om det vore ett verkligt mönster. Modellen blir nästintill perfekt för datan den tränades på.
Det bra med overfitting är att du lätt kan upptäcka det. Träningsnoggrannheten ser fantastisk ut, men testnoggrannheten är usel.
Tänk på en student som memorerar provsvar ord för ord men aldrig lär sig det underliggande materialet. De får bra resultat på övningsprov och misslyckas troligen på det riktiga.

Overfitting-exempel
Overfitting vs underfitting: viktiga skillnader
Nu när du har sett båda är skillnaden lättare att upptäcka. Underfitting-modeller klarar inte ens data de har sett. Overfitting-modeller klarar inte data de inte har sett.
De ser olika ut under träning:
- Underfitting visar sig som platt, medioker prestanda överallt – modellen lär sig aldrig särskilt mycket av något
- Overfitting visar sig som en lucka där träningsresultat fortsätter öka medan testresultat står still eller blir sämre över tid
Orsakerna speglar varandra också. Underfitting kommer av att göra för lite: enkla modeller och saknade features. Overfitting kommer av att göra för mycket: komplexa modeller och för många features.
Här är en sammanfattning av de två:

Underfitting jämfört med overfitting
Hur man identifierar overfitting och underfitting
Att veta hur underfitting och overfitting ser ut i teorin är en sak, men att upptäcka dem i dina egna modeller är en annan.
Det enklaste här är att jämföra träningsfel med testfel och titta på inlärningskurvor.
Träningsfel vs testfel
Den snabbaste kontrollen är att dela upp datan i en träningsmängd och en testmängd, träna modellen och titta på felet på vardera.
Vid underfitting kommer båda felen att vara höga. Modellen lärde sig inte träningsdatan väl, och kommer inte prestera bättre på data den aldrig sett. Du har samma dåliga resultat på båda sidor.
Vid overfitting kommer träningsfelet vara mycket lågt medan testfelet förblir högt. Modellen har memorerat träningsdatan, men den kunskapen överförs inte.

Visualisering av träningsfel vs testfel
Du vill analysera gapet mellan dessa två siffror. Ett litet gap med höga fel pekar på underfitting. Ett stort gap med lågt träningsfel och högt testfel pekar på overfitting. Ett litet gap med låga fel på båda är målet, eftersom det betyder att modellen lärde sig den faktiska daterepresentationen.
Inlärningskurvor
Inlärningskurvor plottar tränings- och valideringsfel mot storleken på träningsmängden, eller mot träningsiterationer. De visar vad som händer när modellen lär sig.
I en underfit-modell planar båda kurvorna snabbt ut vid ett högt fel. Att lägga till mer data hjälper inte eftersom modellen inte kan representera mönstret från början. Båda kurvorna förblir höga.

Kurvor för underfit-modell
I en overfit-modell sjunker träningskurvan till nära noll medan valideringskurvan förblir hög. Gapet mellan dem vidgas när träningen fortsätter. Det växande gapet är hur overfitting ser ut i en graf.

Kurvor för overfit-modell
En frisk modell visar att båda kurvorna sjunker och möts vid ett lågt fel, med ett litet gap mellan dem.
Varför overfitting och underfitting uppstår
När du kan se dem är nästa fråga varför de dyker upp. Båda beror på en missmatch mellan modell och problem, men i motsatta riktningar.
Orsaker till underfitting
Underfitting kan nästan alltid spåras till en av tre saker.
- Modellen är för enkel: En linjär modell kan inte representera ett böjt samband. Modellen har inte den kapacitet som problemet faktiskt kräver.
- Features är otillräckliga: Även en kapabel modell kommer underfit:a om du ger den fel indata. Att förutsäga huspriser från postnummer är inte rimligt, och missar boyta, sovrum, skick, ålder och tomtstorlek. Modellen har inget användbart att arbeta med.
- Inte tillräcklig träning: Modellen hade inte tillräckligt djup, iterationer, epoker eller justeringar av inlärningshastighet för att nå en bra lösning. Träningen avslutades helt enkelt för tidigt.
Orsaker till overfitting
Overfitting kommer av att ge modellen mer frihet än vad datan behöver.
- Modellen är för komplex: Ett djupt neuralt nätverk med miljontals parametrar tränat på ett litet dataset har gott om utrymme att memorera. Kapaciteten överstiger vad problemet kräver.
- För många features: När du har fler features än meningsfulla mönster i datan lär sig modellen korrelationer som råkar finnas i din träningsmängd men som inte generaliserar.
- Datasetet är för litet: Med begränsad träningsdata kan även måttlig modellkomplexitet memorera hela mängden. Det finns inte tillräckligt många exempel för att modellen ska kunna generalisera.
- Träningen pågick för länge: Modellen fortsatte att justera vikter efter att den redan lärt sig det verkliga mönstret och började istället passa bruset. Därifrån gör mer träning saken värre.
Bias-variance-avvägningen
Bias-variance-avvägningen förklarar varför modellprestanda handlar om att hitta den gyllene medelvägen där din modell generaliserar väl till osedd data utan att förenkla problemet för mycket eller överanpassa till din träningsmängd.
Hög bias
Bias är det fel som kommer från en modells antaganden om datan. En modell med hög bias har starka, förenklade antaganden. Den kan inte representera den faktiska komplexiteten i vad som pågår i datan.
Detta är precis vad underfitting är. Modellen är för stel för att passa mönstren, så den ger förutsägelser som är fel oavsett hur mycket data du ger den.
Om du tränar en modell med hög bias 100 gånger på olika sampel kommer alla 100 versioner att göra liknande misstag. Deras förutsägelser klustrar kring fel svar.
Hög varians
Varians är det fel som kommer av att en modell är för känslig för den specifika data den tränades på. En modell med hög varians plockar upp varje litet mönster, oftast bruset.
Detta är vad overfitting är. Modellen passar träningsmängden mycket nära, men små förändringar i träningsdatan leder till mycket olika förutsägelser.
Om du tränar en modell med hög varians 100 gånger på olika sampel får du 100 väldigt olika modeller. Deras förutsägelser spretar åt alla håll, även på samma indata.
Avvägningen
Du kan inte helt eliminera vare sig bias eller varians, du kan bara skifta mellan dem.
Minska bias genom att göra modellen mer komplex, och variansen går upp. Minska variansen genom att förenkla modellen, och bias går upp. Målet är att hitta mitten, där det totala felet är som lägst.

Exempel på bias-variance-avvägning
Hur man åtgärdar underfitting
När du har diagnostiserat underfitting finns det några sätt att fixa det. De ger alla modellen mer kapacitet att representera mönstren i din data.
- Öka modellkomplexiteten: Gå till en mer flexibel modell. Gå från linjär regression till polynomregression, eller från ett grunt träd till ett djupare.
- Lägg till fler features: lägg till nya indata som faktiskt har värde. Skapa interaktionstermer, polynomfeatures eller domänspecifika features som modellen inte hade tillgång till.
- Träna längre: Modellen kanske inte hade tillräckligt med tid att konvergera. Ge den fler epoker eller ett annat schema för inlärningshastigheten.
- Minska regularisering: Regularisering håller en modell enkel, vilket är motsatsen till vad underfitting behöver. Sänk regulariseringsstyrkan eller ta bort den helt för att ge modellen mer frihet.
Ett par bra features har ofta större effekt än att byta arkitektur. Börja där innan du ändrar själva modellen.
Hur man åtgärdar overfitting
Att fixa overfitting kräver motsatt angreppssätt. Du vill begränsa modellen så att den slutar memorera träningsdatan.
- Samla in mer data: Ett större dataset gör det mycket svårare för modellen att memorera. Fler exempel tvingar den att hitta mönster som håller över hela mängden, inte bara ett fåtal rader.
- Tillämpa regularisering: L1- och L2-regularisering lägger till en straffkostnad för stora vikter, vilket hindrar modellen från att luta sig för mycket på en enskild feature. Detta är en av de mest pålitliga lösningarna.
- Minska modellkomplexiteten: Om modellen är för stor för datan, skala ner den. Använd färre parametrar, grundare träd eller mindre nätverk.
- Använd korsvalidering: Korsvalidering ger dig en ärligare bild av hur modellen kommer prestera på osedd data. Det ger dig fler tränings–test-uppdelningar från ett enda dataset.
- Använd dropout för neurala nätverk: Dropout inaktiverar slumpmässigt en andel neuroner under träning. Det tvingar nätverket att lära sig redundanta representationer, vilket minskar beroendet av enskilda neuroner.
- Avsluta träningen tidigt: Övervaka valideringsfelet och stoppa träningen när det börjar öka, även om träningsfelet fortfarande minskar. Detta kallas early stopping och är en av de enklaste ändringarna att införa.
Regularisering och early stopping är vanligtvis det första du bör prova. De kostar inget och hjälper nästan alltid.
Overfitting och underfitting i olika modeller
Olika modellfamiljer visar underfitting och overfitting på sina egna sätt. Så här kan tre vanliga typer misslyckas i båda riktningarna.
Linjärmodeller
- Underfit: Linjära modeller antar ett rätlinjigt samband. När det faktiska mönstret böjer sig kan modellen inte följa det, oavsett hur mycket data du ger den.
- Overfit: När du lägger till tillräckligt många polynom- eller interaktionstermer kan även linjär regression memorera brus. Regulariseringsmetoder som Ridge och Lasso finns främst för att hantera detta.
Beslutsträd
- Underfit: Ett grunt träd kan bara göra några få delningar. Med två eller tre beslut kan det inte representera mönster som kräver mer finess.
- Overfit: Djupa träd tenderar att överanpassa. Ett träd som fortsätter dela tills varje blad innehåller en enda träningsobservation får perfekt träningsnoggrannhet och dålig testnoggrannhet. Det är därför parametrar som
max_depth,min_samples_splitoch beskärning finns.
Neurala nätverk
- Underfit: Nätverk som är för små för problemet kommer att underfit:a. Det gäller också nätverk där träningen stoppas för tidigt, eller där optimeraren fastnar i en suboptimal lösning.
- Overfit: Detta är vanligare i djupinlärning. Ett nätverk med miljontals parametrar kan memorera även stora dataset givet tillräckligt många epoker. Dropout, viktförfall, dataaugmentation och early stopping finns alla för att förhindra det.
Ytterligare exempel på overfitting vs underfitting
Jag går nu igenom två klassiska exempel med kod som gör dessa mönster lätta att se.
Polynomregression
En brusig sinusvåg är ett bra testfall. När du passar polynom av olika grad kan du se modellbeteendet förändras.
import numpy as np
# Data
np.random.seed(7)
X = np.linspace(0, 1, 30)
y_true = np.sin(2 * np.pi * X)
y = y_true + np.random.normal(0, 0.2, X.shape)
# Fit polynomials of three degrees
X_smooth = np.linspace(0, 1, 300)
degrees = [1, 3, 15]
for degree in degrees:
coefs = np.polyfit(X, y, deg=degree)
y_pred = np.polyval(coefs, X_smooth)

Exempel på polynomregression
Grad 1 är en rät linje som underfit:ar. Den kan inte följa kurvan alls. Grad 3 representerar den faktiska formen. Den absorberar en del brus men håller sig nära sanningen. Grad 15 överanpassar när den slingrar sig genom varje träningspunkt och ger stora svängningar mellan dem.
Beslutsträd med varierande djup
Samma historia syns med beslutsträd. Du kan träna träd med ökande djup på samma data och mäta fel på både tränings- och testmängd.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Data
np.random.seed(11)
X = np.linspace(0, 10, 250).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.3, 250)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0
)
depths = range(1, 21)
train_errors = []
test_errors = []
for depth in depths:
tree = DecisionTreeRegressor(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)
train_errors.append(mean_squared_error(y_train, tree.predict(X_train)))
test_errors.append(mean_squared_error(y_test, tree.predict(X_test)))

Exempel på beslutsträd
Träningsfelet minskar när trädet blir djupare och närmar sig till slut noll när varje blad innehåller en enda träningspunkt. Testfelet sjunker initialt när trädet fångar de faktiska sambanden i datan, för att sedan stiga igen när djupare delningar börjar passa brus. Minimum ligger vid det djup som balanserar de två.
Vanliga misstag när man diagnostiserar modellprestanda
Även om du väljer rätt mått är det lätt att dra fel slutsatser. Här är saker du inte bör göra när du utvärderar modellprestanda:
- Utvärdera bara träningsnoggrannhet: Träningsnoggrannhet berättar hur väl modellen passar data den redan sett. Den säger inget om hur modellen kommer prestera på nya indata. Mät alltid på en separat mängd innan du drar några slutsatser.
- Ignorera valideringsdata: Valideringsdata använder du för att finjustera modellval som arkitektur, hyperparametrar och stoppunkt. Modellen kommer överanpassa både träningsmängden och testmängden du har använt för många gånger.
- Anta att mer komplexitet alltid är bättre: En större modell innebär inte automatiskt en mer kapabel modell. Om din data är liten eller relationerna i datan är enkla kommer komplexitet bara försämra prestandan. Börja enkelt och lägg bara till kapacitet när diagnostiken kräver det.
- Förväxla brus med signal: Inte varje mönster i träningsdatan är värt att lära sig. Slumpmässiga svängningar, urvalsbias, avvikare och insamlingsartefakter kan se meningsfulla ut för en flexibel modell. Om du inte kan förklara varför ett samband borde finnas, behandla det med försiktighet.
Du bör alltid kontrollera alla fyra innan du nöjer dig med en modell. De flesta produktionsmisslyckanden är relaterade till en (eller flera) av dem.
Slutsats
Underfitting och overfitting är de två sätten en modell misslyckas med att generalisera. Den ena förblir för enkel för att lära sig mönstret. Den andra försöker lära sig varje punkt i ditt dataset.
Det verkliga målet med träning är att hamna någonstans mellan dem, där bias och varians är balanserade och det totala felet är som lägst.
Valideringsprestanda är måttet som berättar var du befinner dig. Håll koll på det under träning och låt skillnaden mellan tränings- och valideringsfel guida dina beslut. Om valideringsfelet slutar förbättras medan träningsfelet fortsätter sjunka har du passerat den gynnsamma punkten. Om båda förblir höga har du inte nått den än.
Vill du lära dig mer avancerade datavetenskapskoncept och bli jobbklar 2026? Anmäl dig till vår Machine Learning Engineer-bana för att gå från grunder till MLOps.
FAQs
Vad är skillnaden mellan overfitting och underfitting?
Underfitting inträffar när en modell är för enkel för att representera mönstren i din data, så den presterar dåligt på både tränings- och testmängd. Overfitting är motsatsen: modellen lär sig träningsdatan för väl, inklusive bruset, så den presterar utmärkt i träning men misslyckas på ny data. Båda ger svaga förutsägelser, men av olika skäl.
Hur vet jag om min modell överanpassar eller underanpassar?
Jämför träningsfel med testfel. Om båda är höga har du underfitting. Om träningsfelet är mycket lågt men testfelet är högt har du overfitting. Inlärningskurvor hjälper också, eftersom tränings- och valideringsfel divergerar i en overfit-modell och förblir platta vid ett högt fel i en underfit-modell.
Vad är bias-variance-avvägningen?
Bias är felet från en modell som är för enkel, och varians är felet från en modell som är för känslig för sin träningsdata. Att minska den ena ökar oftast den andra, så målet är att hitta balansen där det totala felet är som lägst. Modeller med bäst balans generaliserar bäst till ny data.
Löser det overfitting att samla in mer data?
Det hjälper oftast, men är ingen garanterad lösning. Mer data gör det svårare för en modell att memorera, så den måste hitta mönster som håller över hela mängden. Men om din modell är alldeles för komplex för problemet, eller dina features mestadels bär på brus, så löser inte mer data det fullt ut. Regularisering och enklare modeller fungerar ofta bättre i de fallen.
Kan jag använda early stopping för att förhindra overfitting i neurala nätverk?
Ja, och det är en av de enklaste åtgärderna att införa. Övervaka valideringsfelet under träning och stoppa när det planar ut eller börjar öka, även om träningsfelet fortsätter minska. Detta fångar punkten där modellen har lärt sig det faktiska mönstret och börjar passa brus. De flesta ramverk för djupinlärning har inbyggda callbacks för early stopping.