Hoppa till huvudinnehåll

Regularisering i maskininlärning: L1, L2 och Elastic Net förklarade

En praktisk översikt över regularisering i maskininlärning – vad det är, hur det fungerar och när du ska använda L1, L2 och Elastic Net för att bygga modeller som generaliserar.
Uppdaterad 4 maj 2026  · 9 min läsa

Så du har tränat en modell som nästan prickar in varje tränings­exempel perfekt, men misslyckas på ny data? Vi har alla varit där.

Det är en övergripande definition av överanpassning. Din modell lärde sig inte det verkliga mönstret, utan memorerade i stället träningsdatan. I produktion, med ny och osedd data, skulle modellen göra förutsägelser du inte skulle lita på. Ju mer verklig data avviker från tränings­exemplen, desto värre blir det.

Regularisering åtgärdar detta genom att lägga till en straffterm i förlustfunktionen. Den straffar komplexa modeller. Med andra ord är det mekanismen som hindrar din modell från att passa in varje datapunkt och tvingar den att generalisera i stället.

I den här artikeln går jag igenom intuitionen bakom regularisering, de vanligaste metoderna – L1, L2 och Elastic Net – och hur du väljer rätt för ditt användningsfall.

Om du vill förstå varför och hur maskininlärningsmodeller fallerar i produktion kan du läsa vårt inlägg om bias-varians-avvägningen.

Vad är regularisering i maskininlärning

Regularisering är en teknik som lägger till en straffterm i din modells förlustfunktion för att motverka komplexitet.

Utan den här strafftermen är en modell tillräckligt flexibel för att passa träningsdatan hur väl den vill. Det inkluderar brus och avvikare. Regularisering lägger en kostnad på den flexibiliteten. Ju mer komplex modellen vill vara, desto högre straff får den.

Din modells förlustfunktion mäter normalt skillnaden mellan predikterade och faktiska värden. Regularisering lägger till en extra term i den ekvationen, en som växer när modellens koefficienter växer. Modellen måste nu balansera två konkurrerande mål: passa träningsdatan och hålla koefficienterna små.

Den balansen är det som styr modellens flexibilitet.

En mycket flexibel modell kan vrida sig i vilken form som helst för att passa träningsdatan. Regularisering slätar tillbaka den till en enklare form – en som med större sannolikhet håller på data som modellen inte har sett tidigare.

Varför regularisering behövs

Varje modell du tränar hamnar någonstans mellan två oanvändbara modeller: en som är för enkel och en som är för komplex.

En modell som är för enkel ”förstår” inte de verkliga mönstren i din data. Den missar signalen. Det kallas underanpassning – modellen presterar dåligt på träningsdata och på ny data.

En modell som är för komplex gör motsatsen. Den passar in varje detalj i din träningsdata, inklusive bruset. Det är överanpassning – modellen presterar utmärkt på träningsdata men misslyckas på ny data eftersom den memorerade fel saker.

Ta polynomregression som ett konkret exempel. Ett tredjegradspolynom anpassat till data som visar en mjuk kurva innebär att du sannolikt fångar ett korrekt mönster. Men ett femtondegradspolynom på samma data leder till överanpassning – kurvan går genom varje datapunkt men gör slumpmässiga prediktioner däremellan.

Diagrammet nedan visar hur det ser ut i praktiken.

Lagom komplex kontra för komplex modell

Lagom komplex kontra för komplex modell

Detta är bias-varians-avvägningen.

Enkla modeller har hög bias – de gör starka antaganden som missar verkliga mönster. Komplexa modeller har hög varians – de är för känsliga för de specifika tränings­exempel de sett, och små förändringar i datan ger väldigt olika modeller.

Regularisering hjälper dig att få det bästa av båda. Den eliminerar inte komplexitet, men den straffar den. Som resultat får din modell bättre chans att lära sig den verkliga signalen.

Hur regularisering fungerar

Varje modell lär sig genom att minimera en förlustfunktion – ett mått på hur fel dess prediktioner är. Utan regularisering är modellens enda uppgift att minimera det felet. Den gör vad som än krävs, inklusive att få stora koefficienter som passar träningsdatan men inte generaliserar.

Regularisering ändrar målet. I stället för att enbart minimera felet minimerar modellen nu detta:

Hur regularisering fungerar

Hur regularisering fungerar

Strafftermen är en funktion av modellens koefficienter. Stora koefficienter höjer straffet. För att hålla den totala kostnaden låg tvingas modellen hålla sina koefficienter små – vilket innebär enklare, mer generaliserbara lösningar.

λ (lambda) styr hur mycket straffet spelar roll. En högre λ lägger mer press på modellen att förbli enkel. En lägre λ låter modellen fokusera mer på att passa datan. Du ser hur du ställer in detta i avsnittet Att välja regulariseringsstyrka nedan.

Typer av regularisering i maskininlärning

Det finns ett par sätt att straffa modellkomplexitet. Var och en pressar koefficienterna på olika sätt, vilket gör dem lämpliga i olika situationer.

L2-regularisering (Ridge-regression)

L2-regularisering straffar kvadraten av varje koefficient. Ju större koefficient, desto mer bidrar den till straffet – och desto hårdare jobbar modellen för att krympa den.

L2-regularisering

L2-regularisering

Nyckelordet här är krympa. L2 trycker alla koefficienter mot noll, men når aldrig riktigt noll. Varje funktion stannar kvar i modellen, bara med lägre vikt. Det gör Ridge till ett bra standardval när du tror att de flesta av dina funktioner är relevanta och du vill ha en stabil, välbeteende modell.

L1-regularisering (Lasso-regression)

L1-regularisering straffar absolutvärdet av varje koefficient i stället för kvadraten.

L1-regularisering

L1-regularisering

Den lilla skillnaden får stora konsekvenser. L1 kan trycka koefficienter hela vägen till exakt noll, vilket innebär att den tar bort funktioner från modellen. Du kan se det som automatisk funktionsurval. Med andra ord kan Lasso-regularisering förenkla din modell genom att ta bort funktioner.

L1 kontra L2-regularisering

Kärnskillnaden handlar om gleshet. L1 ger glesa modeller – bara en delmängd av funktionerna släpps igenom. L2 ger täta modeller – alla funktioner finns kvar, med mindre vikter.

Det påverkar också tolkbarheten. En Lasso-modell med 5 aktiva funktioner är lättare att förklara än en Ridge-modell med 50 funktioner som alla bidrar lite grann. Men Ridge tenderar att vara mer stabil när funktioner är korrelerade med varandra, eftersom den sprider vikten över dem i stället för att godtyckligt välja en.

Här är en snabb översikt över skillnaderna:

L1 kontra L2-regularisering

L1 kontra L2-regularisering

Om du vill se hur dessa jämförs i Python har vår handledning om Lasso- och Ridge-regression i Python allt du behöver.

Elastic Net-regularisering

Elastic Net kombinerar L1 och L2 i en enda straffterm.

Elastic Net-regularisering

Elastic Net-regularisering

Tanken är att få det bästa av båda: L1:s funktionsurval och L2:s stabilitet. Det är praktiskt när du har korrelerade funktioner och ändå vill att vissa av dem ska plockas bort. Lasso ensam tenderar att välja en funktion från en korrelerad grupp och ignorera resten. Elastic Net behåller mer sannolikt några av dem samtidigt som irrelevanta tas bort.

Regularisering i olika modeller

Regularisering dyker upp i många maskininlärningsmodeller, men i olika former. Låt mig visa vad dessa är.

Linjär regression är där de flesta först ser regularisering. När du lägger till L2-regularisering i linjär regression får du Ridge-regularisering. På samma sätt ger L1 dig Lasso-regression. Matematiken är densamma som beskrivits ovan – en straffterm läggs till minsta kvadrat-summans förlust.

Logistisk regression fungerar på samma sätt. Förlustfunktionen ändras – det är korsentropi i stället för kvadratfel – men strafftermen är identisk. De flesta maskininlärningsbibliotek tillämpar L2-regularisering på logistisk regression som standard, vilket är varför du ser en parameter som heter C i scikit-learn. Den är inversen av λ, så ett mindre C innebär starkare regularisering.

Neurala nätverk använder ett par olika angreppssätt:

  • Viktförfall: L2-regularisering applicerad på nätverkets vikter – det fungerar likadant, bara i mycket större skala
  • Dropout: Under träning inaktiveras slumpmässigt en andel neuroner i varje pass, vilket förhindrar nätverket från att förlita sig för mycket på en enskild väg genom lagren.

Båda minskar överanpassning, men på olika sätt.

Trädbaserade modeller använder inte förluststraff alls. I stället kontrollerar de komplexiteten genom beskärning – att begränsa hur djupt ett träd kan växa, eller ta bort grenar som inte förbättrar prediktionerna tillräckligt för att motivera sin existens. Hyperparametrar som max_depth och min_samples_split i scikit-learn är regulariseringsparametrar, även om de inte kallas så.

Regularisering och bias-varians-avvägningen

Regularisering handlar om kompromisser.

När du lägger till en straffterm begränsar du vad modellen kan göra. Den kan inte längre passa träningsdatan lika nära som den vill. Den begränsningen introducerar bias – modellen gör medvetet något lite fel, eftersom du har sagt åt den att hålla sig enkel.

Men samma begränsning minskar variansen. En modell som inte kan passa varje datapunkt är mindre känslig för de specifika exemplen den tränades på. När du tränar den på ett lite annorlunda dataset får du ett liknande resultat. Den stabiliteten är i praktiken det du vill ha, så att din modell inte misslyckas i produktion.

Utan regularisering får du en mycket flexibel modell med låg bias (gör få antaganden och passar träningsdatan väl) och hög varians (små förändringar i träningsdatan ger väldigt olika modeller, vilket innebär att den inte kan litas på för ny data).

Regularisering handlar om att flytta balansen. Lite mer bias i utbyte mot mycket mindre varians leder oftast till bättre prestanda på data som modellen inte har sett. Det är kompromissen, och den är nästan alltid värd att göra.

Att välja regulariseringsstyrka

Som praktiker inom maskininlärning måste du ställa in regulariseringsstyrkan efter att du valt regulariseringstyp.

Den styrkan kontrolleras av en hyperparameter – vanligtvis kallad lambda (λ) i matematisk notation, eller alpha i scikit-learn. Det är multiplikatorn framför strafftermen. När du ändrar den, ändrar du hur hårt modellen pressas mot enkelhet.

Om du sätter den fel åt något håll får du problem i produktion:

  • För låg: straffet är för svagt för att spela roll. Modellen överanpassar, precis som om du inte hade någon regularisering alls.
  • För hög: straffet dominerar. Modellen är så begränsad att den inte kan förstå verkliga mönster i datan. Det är underanpassning.

Rätt värde ligger någonstans däremellan, och det finns inget universellt svar. Det beror på din data, din modell och hur mycket brus du har att göra med.

Standardmetoden för att hitta det är korsvalidering. Du delar upp din träningsdata i vikningar, tränar modellen på varje kombination av vikningar och mäter valideringsprestanda över ett spann av alpha-värden. Det värde som ger bäst genomsnittlig valideringspoäng är det du använder.

I scikit-learn kan RidgeCV och LassoCV göra detta automatiskt – de kör korsvalidering över ett rutnät av alpha-värden och väljer det bästa åt dig.

from sklearn.linear_model import RidgeCV

model = RidgeCV(alphas=[0.01, 0.1, 1.0, 10.0], cv=5)
model.fit(X_train, y_train)

print(model.alpha_)

Det utskrivna alpha-värdet visar det bästa värdet som hittats genom korsvalidering. Börja med ett brett spann av värden och snäva in det när du vet var det optimala intervallet ligger.

Slutsats

Regularisering är hur du hindrar en modell från att vara för smart för sitt eget bästa.

Den straffar komplexitet, vilket tvingar modellen att hitta lösningar som generaliserar i stället för att bara memorera träningsdata. L2 behåller alla dina funktioner men minskar deras inflytande. L1 tar bort irrelevanta funktioner. Elastic Net kombinerar båda. Och i linjära modeller, logistisk regression, neurala nätverk och ensemblemodeller dyker samma idé upp i olika former, och den kallas inte alltid ”regularisering”.

Det viktigaste är tekniken du väljer och styrkan du ställer in. Så det du bör göra är att experimentera. Prova olika angreppssätt med olika parametervärden. Välj inte bara en och gå vidare.

Din data kommer att tala om vad som fungerar.

Om du vill se fler regulariseringstekniker i praktiken kan du anmäla dig till vårt spår Machine Learning Scientist in Python. Det innehåller 85 timmars material som gör dig redo för jobbet.

FAQs

Vad är regularisering i maskininlärning?

Regularisering är en teknik som lägger till en straffterm i en modells förlustfunktion för att motverka komplexitet. Den förhindrar överanpassning genom att tvinga modellen att hålla sina koefficienter små, vilket leder till enklare lösningar som generaliserar bättre till ny data.

När ska jag använda regularisering?

Använd regularisering när din modell presterar bra på träningsdata men dåligt på validerings- eller testdata – det glappet är ett tecken på överanpassning. Det är också en bra standardpraxis när du arbetar med högdimensionell data eller dataset där antalet funktioner är nära, eller överstiger, antalet prover.

Förbättrar regularisering alltid modellens prestanda?

Inte alltid. Om din modell redan underanpassar kommer regularisering att förvärra situationen genom att pressa den mot ännu enklare lösningar. Målet är att hitta rätt balans – regularisering hjälper när din modell är för komplex, inte när den är för enkel.

Vad är skillnaden mellan alpha i Lasso och C i logistisk regression?

Båda styr regulariseringsstyrkan, men de verkar i motsatta riktningar. alpha i Lasso skalar straffet – ett högre värde innebär starkare regularisering. C i scikit-learns logistiska regression är inversen av straffstyrkan, så ett mindre C innebär starkare regularisering. Om du växlar mellan de två, kom ihåg att öka alpha och att minska C har samma effekt.

Kan jag använda L1- och L2-regularisering tillsammans?

Ja – det är precis vad Elastic Net gör. Det kombinerar båda strafftermerna i ett enda mål, vilket ger dig L1:s funktionsurval och L2:s stabilitet samtidigt. Det är praktiskt när du har korrelerade funktioner och ändå vill ha viss beskärning, eftersom Lasso ensamt tenderar att godtyckligt behålla en enda funktion från en korrelerad grupp och släppa resten.

Ämnen

Lär dig med DataCamp

course

Machine Learning with Tree-Based Models in Python

5 timmar
115.8K
In this course, you'll learn how to use tree-based models and ensembles for regression and classification using scikit-learn.
Se detaljerRight Arrow
Starta kursen
Se merRight Arrow