Przejdź do treści głównej

Regularizacja w uczeniu maszynowym: L1, L2 i Elastic Net – wyjaśnienie

Praktyczny przegląd regularizacji w uczeniu maszynowym – czym jest, jak działa i kiedy używać L1, L2 oraz Elastic Net, aby budować modele, które uogólniają.
Zaktualizowano 4 maj 2026  · 9 min Czytać

Wytrenowali Państwo model, który niemal perfekcyjnie trafia każdy przykład treningowy, ale zawodzi na nowych danych? Każdemu się to zdarzało.

To wysokopoziomowa definicja przeuczenia (overfitting). Model nie nauczył się rzeczywistego wzorca, lecz zapamiętał dane treningowe. W środowisku produkcyjnym, z nowymi i nieznanymi danymi, model będzie wydawał prognozy, którym trudno zaufać. Im bardziej dane z rzeczywistości odbiegają od próbek treningowych, tym gorzej.

Regularizacja rozwiązuje ten problem, dodając karę do funkcji straty. Kara zniechęca do zbyt złożonych modeli. Innymi słowy, to mechanizm, który powstrzymuje model przed dopasowywaniem się do każdego punktu danych i zmusza go do uogólniania.

W tym artykule wyjaśnię intuicję stojącą za regularizacją, najpopularniejsze metody – L1, L2 i Elastic Net – oraz to, jak wybrać właściwą dla danego przypadku użycia.

Jeśli chcą Państwo zrozumieć, dlaczego i jak modele uczenia maszynowego zawodzą w produkcji, proszę przeczytać nasz wpis Kompromis między obciążeniem a wariancją.

Czym jest regularizacja w uczeniu maszynowym

Regularizacja to technika polegająca na dodaniu do funkcji straty modelu składnika kary, aby zniechęcać do złożoności.

Bez tego składnika model może dowolnie ściśle dopasować się do danych treningowych – łącznie ze szumem i obserwacjami odstającymi. Regularizacja nakłada koszt na taką elastyczność. Im bardziej złożony chce być model, tym wyższą dostaje karę.

Funkcja straty modelu zwykle mierzy różnicę między wartościami przewidywanymi a rzeczywistymi. Regularizacja dodaje do tego równania dodatkowy składnik, który rośnie wraz ze wzrostem współczynników modelu. Model musi więc równoważyć dwa sprzeczne cele: dopasować dane treningowe i utrzymać współczynniki na niewielkim poziomie.

Ta równowaga kontroluje elastyczność modelu.

Bardzo elastyczny model potrafi „wykrzywić się” w dowolny kształt, by dopasować dane treningowe. Regularizacja wygładza go do prostszej postaci – takiej, która ma większą szansę sprawdzić się na danych, których wcześniej nie widział.

Dlaczego regularizacja jest potrzebna

Każdy trenowany model znajduje się gdzieś pomiędzy dwoma nieużytecznymi skrajnościami: zbyt prostym i zbyt złożonym.

Zbyt prosty model nie „łapie” rzeczywistych wzorców w danych. Przegapia sygnał. To niedouczenie (underfitting) – model źle działa zarówno na danych treningowych, jak i na nowych.

Zbyt złożony model robi odwrotnie. Dopasowuje każdy szczegół danych treningowych, w tym szum. To przeuczenie (overfitting) – model świetnie radzi sobie na danych treningowych, ale zawodzi na nowych, bo zapamiętał nie to, co trzeba.

Rozważmy regresję wielomianową jako konkretny przykład. Wielomian stopnia 3 dopasowany do danych o łagodnej krzywiźnie prawdopodobnie uchwyci właściwy wzorzec. Ale wielomian stopnia 15 na tych samych danych prowadzi do przeuczenia – krzywa przechodzi przez każdy punkt, lecz między nimi daje losowe prognozy.

Wykres poniżej pokazuje, jak to wygląda w praktyce.

Model w sam raz kontra zbyt złożony

Model w sam raz kontra zbyt złożony

To jest kompromis między obciążeniem a wariancją.

Proste modele mają wysokie obciążenie – przyjmują silne założenia i pomijają prawdziwe wzorce. Złożone modele mają wysoką wariancję – są zbyt wrażliwe na konkretne próbki treningowe i niewielkie zmiany danych prowadzą do bardzo różnych modeli.

Regularizacja pomaga znaleźć złoty środek. Nie eliminuje złożoności, ale ją karze. W efekcie model ma większą szansę nauczyć się rzeczywistego sygnału.

Jak działa regularizacja

Każdy model uczy się, minimalizując funkcję straty – miarę tego, jak bardzo jego przewidywania są błędne. Bez regularizacji jedynym zadaniem modelu jest minimalizować ten błąd. Zrobi więc wszystko, w tym „napompowanie” dużych współczynników, które dopasowują dane treningowe, ale nie uogólniają.

Regularizacja zmienia cel. Zamiast minimalizować sam błąd, model minimalizuje teraz to:

Jak działa regularizacja

Jak działa regularizacja

Składnik kary jest funkcją współczynników modelu. Duże współczynniki zwiększają karę. Aby utrzymać łączny koszt na niskim poziomie, model jest zmuszony utrzymywać współczynniki małe – co przekłada się na prostsze, lepiej uogólniające rozwiązania.

Parametr λ (lambda) kontroluje, jak bardzo kara ma znaczenie. Wyższe λ wywiera większą presję, by model pozostał prosty. Niższe λ pozwala modelowi bardziej skupić się na dopasowaniu danych. Jak to dostroić – o tym w sekcji Wybór siły regularizacji poniżej.

Rodzaje regularizacji w uczeniu maszynowym

Istnieje kilka sposobów karania złożoności modelu. Każdy inaczej „naciska” na współczynniki, więc lepiej sprawdza się w innych sytuacjach.

Regularizacja L2 (regresja grzbietowa, Ridge)

Regularizacja L2 karze kwadrat wartości każdego współczynnika. Im większy współczynnik, tym bardziej przyczynia się do kary – i tym mocniej model dąży do jego skurczenia.

Regularizacja L2

Regularizacja L2

Kluczowe słowo to „skurczenie”. L2 pcha wszystkie współczynniki w stronę zera, ale nigdy dokładnie do zera. Każda cecha pozostaje w modelu, tylko z mniejszą wagą. Dlatego Ridge to dobry domyślny wybór, gdy uważa się, że większość cech jest istotna i zależy nam na stabilnym, przewidywalnym modelu.

Regularizacja L1 (regresja Lasso)

Regularizacja L1 karze wartość bezwzględną każdego współczynnika zamiast jego kwadratu.

Regularizacja L1

Regularizacja L1

Ta drobna różnica ma duże konsekwencje. L1 potrafi „zepchnąć” współczynniki aż do dokładnie zera, czyli usuwa cechy z modelu. Można to traktować jak automatyczny dobór cech. Innymi słowy, regularizacja Lasso upraszcza model, usuwając cechy.

Regularizacja L1 vs. L2

Sedno różnicy sprowadza się do rzadkości (sparsity). L1 daje modele rzadkie – przepuszcza tylko podzbiór cech. L2 daje modele gęste – wszystkie cechy pozostają, ale z mniejszymi wagami.

Wpływa to także na interpretowalność. Model Lasso z 5 aktywnymi cechami łatwiej wyjaśnić niż model Ridge z 50 cechami, z których każda trochę się dokłada. Z kolei Ridge bywa stabilniejszy, gdy cechy są ze sobą skorelowane, ponieważ rozkłada wagę między nie, a nie wybiera arbitralnie jednej.

Oto szybkie porównanie różnic:

Regularizacja L1 kontra L2

Regularizacja L1 kontra L2

Jeśli chcą Państwo zobaczyć porównanie w Pythonie, proszę zajrzeć do naszego samouczka o regresji Lasso i Ridge w Pythonie.

Regularizacja Elastic Net

Elastic Net łączy L1 i L2 w pojedynczym składniku kary.

Regularizacja Elastic Net

Regularizacja Elastic Net

Chodzi o połączenie zalet obu: selekcji cech z L1 i stabilności z L2. To przydatne, gdy mamy skorelowane cechy, a mimo to chcemy część z nich odrzucić. Samo Lasso ma tendencję do wybierania jednej cechy z grupy skorelowanych i ignorowania reszty. Elastic Net częściej zachowa kilka z nich, nadal usuwając nieistotne.

Regularizacja w różnych modelach

Regularizacja pojawia się w wielu modelach uczenia maszynowego, ale w różnych formach. Oto najważniejsze z nich.

Regresja liniowa to miejsce, gdzie większość osób po raz pierwszy spotyka regularizację. Dodanie regularizacji L2 do regresji liniowej daje regresję Ridge. Analogicznie, dodanie L1 daje regresję Lasso. Matematyka jest taka sama, jak opisano wyżej – składnik kary dodany do błędu najmniejszych kwadratów.

Regresja logistyczna działa tak samo. Zmienia się funkcja straty – zamiast błędu kwadratowego mamy entropię krzyżową – ale składnik kary jest identyczny. Większość bibliotek ML domyślnie stosuje L2 do regresji logistycznej, stąd parametr C w scikit-learn. To odwrotność λ, więc mniejsze C oznacza silniejszą regularizację.

Sieci neuronowe używają kilku podejść:

  • Weight decay: regularizacja L2 zastosowana do wag sieci – działa tak samo, tylko na dużo większą skalę
  • Dropout: podczas treningu losowo wyłącza część neuronów w każdym przebiegu, co zapobiega nadmiernemu poleganiu na pojedynczej ścieżce przez warstwy.

Obie metody redukują przeuczenie, ale innymi środkami.

Modele drzewiaste nie używają kar w funkcji straty. Zamiast tego kontrolują złożoność przez przycinanie – ograniczają głębokość drzewa lub usuwają gałęzie, które nie poprawiają prognoz na tyle, by uzasadnić ich istnienie. Hiperparametry takie jak max_depth i min_samples_split w scikit-learn są parametrami regularizacji, choć nie zawsze tak się je nazywa.

Regularizacja a kompromis obciążenie–wariancja

Regularizacja to sztuka kompromisu.

Dodając składnik kary, ograniczają Państwo to, co model może zrobić. Nie może już tak ściśle dopasowywać danych treningowych, jak by chciał. To ograniczenie wprowadza obciążenie – model z definicji przyjmuje lekko błędne założenia, bo kazano mu pozostać prostym.

To samo ograniczenie zmniejsza jednak wariancję. Model, który nie może dopasować każdego punktu danych, jest mniej wrażliwy na konkretne próbki treningowe. Gdy wytrenuje się go na nieco innym zbiorze, wynik będzie podobny. Ta stabilność jest kluczowa, aby model nie zawiódł w produkcji.

Bez regularizacji otrzymujemy bardzo elastyczny model o niskim obciążeniu (mało założeń i dobre dopasowanie do danych treningowych) i wysokiej wariancji (niewielkie zmiany danych treningowych dają bardzo różne modele, więc nie można mu ufać na nowych danych).

Regularizacja przesuwa tę równowagę. Odrobina większego obciążenia w zamian za znacznie mniejszą wariancję zwykle daje lepsze wyniki na danych niewidzianych. To kompromis, który prawie zawsze się opłaca.

Wybór siły regularizacji

Jako praktyk uczenia maszynowego będą Państwo musieli dobrać siłę regularizacji po wybraniu jej rodzaju.

Siłę tę kontroluje hiperparametr – zwykle nazywany lambda (λ) w zapisie matematycznym lub alpha w scikit-learn. To mnożnik przed składnikiem kary. Zmieniając go, zmieniają Państwo, jak mocno model jest „popychany” w stronę prostoty.

Błąd w którąkolwiek stronę będzie problemem w produkcji:

  • Zbyt niska: kara jest zbyt słaba, by mieć znaczenie. Model się przeucza, jakby regularizacji nie było.
  • Zbyt wysoka: kara dominuje. Model jest tak ograniczony, że nie potrafi uchwycić rzeczywistych wzorców w danych. To niedouczenie.

Właściwa wartość leży gdzieś pośrodku i nie ma uniwersalnej odpowiedzi. Zależy od danych, modelu i poziomu szumu.

Standardową metodą jej znalezienia jest walidacja krzyżowa. Dzieli się dane treningowe na foldy, trenuje model na każdej kombinacji foldów i mierzy wyniki walidacji dla zakresu wartości alpha. Wartość dająca najlepszy średni wynik walidacyjny wybiera się do modelu.

W scikit-learn RidgeCV i LassoCV zrobią to automatycznie – przeprowadzą walidację krzyżową po siatce wartości alpha i wybiorą najlepszą dla Państwa.

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_)

Wypisane alpha pokaże najlepszą wartość znalezioną przez walidację krzyżową. Proszę zacząć od szerokiego zakresu wartości, a następnie zawęzić go, gdy wiadomo już, gdzie leży optimum.

Wnioski

Regularizacja to sposób, by powstrzymać model przed byciem „zbyt sprytnym dla samego siebie”.

Karanie złożoności zmusza model do szukania rozwiązań uogólniających, zamiast zapamiętywania danych treningowych. L2 zachowa wszystkie cechy i ograniczy ich wpływ. L1 usunie nieistotne cechy. Elastic Net łączy oba podejścia. W modelach liniowych, regresji logistycznej, sieciach neuronowych i modelach zespołowych ta sama idea pojawia się w różnych formach i nie zawsze nazywa się „regularizacją”.

Najważniejszy jest dobór techniki i ustawienie jej siły. Dlatego należy eksperymentować. Proszę wypróbować różne podejścia i różne wartości parametrów. Nie warto poprzestawać na jednym wyborze.

To Państwa dane pokażą, co działa.

Jeśli chcą Państwo zobaczyć więcej technik regularizacji w praktyce, proszę zapisać się na naszą ścieżkę Machine Learning Scientist in Python. Obejmuje 85 godzin materiałów przygotowujących do pracy.

FAQs

Czym jest regularizacja w uczeniu maszynowym?

Regularizacja to technika dodająca do funkcji straty modelu składnik kary, aby zniechęcać do złożoności. Zapobiega przeuczeniu, zmuszając model do utrzymywania małych współczynników, co prowadzi do prostszych rozwiązań lepiej uogólniających się na nowe dane.

Kiedy powinienem/powinnam używać regularizacji?

Proszę stosować regularizację zawsze, gdy model dobrze wypada na danych treningowych, a słabo na walidacyjnych lub testowych – ta różnica to znak przeuczenia. To także dobra praktyka domyślna przy danych o wysokiej wymiarowości lub gdy liczba cech jest zbliżona do, bądź przewyższa, liczbę próbek.

Czy regularizacja zawsze poprawia działanie modelu?

Nie zawsze. Jeśli model już jest niedouczeniem, dodanie regularizacji pogorszy sytuację, popychając go ku jeszcze prostszym rozwiązaniom. Celem jest znalezienie właściwej równowagi – regularizacja pomaga, gdy model jest zbyt złożony, a nie zbyt prosty.

Jaka jest różnica między alpha w Lasso a C w regresji logistycznej?

Oba parametry kontrolują siłę regularizacji, ale działają w przeciwnych kierunkach. alpha w Lasso skaluje karę – wyższa wartość oznacza silniejszą regularizację. C w regresji logistycznej scikit-learn jest odwrotnością siły kary, więc mniejsze C oznacza silniejszą regularizację. Przechodząc między nimi, proszę pamiętać, że zwiększenie alpha i zmniejszenie C ma ten sam efekt.

Czy mogę używać jednocześnie regularizacji L1 i L2?

Tak – właśnie to robi Elastic Net. Łączy oba składniki kary w jeden cel, dając jednocześnie selekcję cech z L1 i stabilność z L2. To przydatne przy skorelowanych cechach, gdy nadal chcą Państwo pewnego „przycięcia”, ponieważ samo Lasso ma tendencję do arbitralnego pozostawiania tylko jednej cechy z grupy skorelowanych.

Tematy

Ucz się z DataCamp

course

Machine Learning with Tree-Based Models in Python

5 godz.
115.8K
In this course, you'll learn how to use tree-based models and ensembles for regression and classification using scikit-learn.
Zobacz szczegółyRight Arrow
Rozpocznij kurs
Zobacz więcejRight Arrow