03 · Nadzorowane · 4 min czytania · Interaktywne · aktualizacja
Czym jest regresja wielomianowa i kiedy wielomian przeucza model?
W skrócie
Regresja wielomianowa dopasowuje krzywą, dodając potęgi cech do zwykłej regresji liniowej. Wysoki stopień szybko prowadzi do przeuczenia i dzikich wahań.
Co to jest
Regresja wielomianowa to regresja liniowa, w której oprócz cechy x używa się także jej potęg: ŷ = b₀ + b₁x + b₂x² + … + b_d·x^d. Liczba d to stopień wielomianu. Model rysuje krzywą zamiast prostej, ale wagi wciąż dobiera się zwykłą metodą najmniejszych kwadratów, bo jest liniowy w parametrach.
To ważna obserwacja: „liniowość” regresji liniowej dotyczy wag, nie kształtu zależności. Wystarczy dopisać do tabeli kolumny x², x³ i podać je zwykłemu algorytmowi. Przy wielu cechach dochodzą też iloczyny, np. x₁·x₂, które pozwalają modelowi uchwycić interakcje: efekt jednej cechy zależny od wartości drugiej.
Intuicja: zależność zużycia paliwa od prędkości nie jest prostą — przy bardzo małych i bardzo dużych prędkościach spalanie rośnie. Prosta tego nie odda, parabola (stopień 2) już tak.
Mechanizm — dlaczego tak działa
Wielomian stopnia d ma d + 1 parametrów i przez n punktów o różnych x zawsze da się przeprowadzić wielomian stopnia n − 1 dokładnie. Rosnący stopień daje więc coraz większą elastyczność, aż do pełnego „zapamiętania” danych treningowych. Błąd treningowy może tylko maleć wraz ze stopniem; błąd na nowych danych zwykle najpierw maleje, potem rośnie. To podręcznikowy obraz kompromisu między obciążeniem a wariancją.
Dlaczego wysokie stopnie są tak niebezpieczne? Potęgi wysokiego stopnia rosną wybuchowo poza środkiem danych, więc wielomian zachowuje się rozsądnie tam, gdzie jest gęsto, a na brzegach zakresu i poza nim wykonuje gwałtowne skoki (tzw. zjawisko Rungego). Ekstrapolacja wielomianem to proszenie się o kłopoty: kilka jednostek za ostatnim punktem przewidywania mogą uciec do nieskończoności.
Drugi problem jest numeryczny. Kolumny x, x², x³… są ze sobą silnie skorelowane, a ich skale różnią się o rzędy wielkości. Macierz układu jest wtedy źle uwarunkowana i współczynniki stają się niestabilne. Pomaga standaryzacja cechy przed podniesieniem do potęgi, a w statystyce — wielomiany ortogonalne.
Trzeci problem: eksplozja liczby cech przy wielu zmiennych. Pełny wielomian stopnia 2 z 10 cech to 65 kolumn (cechy, kwadraty, iloczyny par), stopnia 3 — już 285. Gdy kolumn jest więcej niż obserwacji, metoda najmniejszych kwadratów potrafi dopasować dane treningowe niemal idealnie i kompletnie zawieść na nowych. Dlatego regresję wielomianową prawie zawsze łączy się z regularyzacją (ridge lub lasso) i dobiera stopień walidacją krzyżową.
Alternatywą są funkcje sklejane (splajny): wielomiany niskiego stopnia dopasowane osobno w przedziałach i gładko połączone. Są elastyczne w środku i spokojne na brzegach.
Na przykładzie
Zbiór Diabetes, cecha BMI, cel — postęp choroby po roku; trening na 331 pacjentach, test na 111 (podział 75/25, random_state=0). Prosta daje na teście R² = 0,16 (na treningu 0,39). Wielomiany stopnia 2, 5 i 10 podnoszą R² treningowe ledwie do 0,39–0,41, a testowe stoi w miejscu (0,15–0,16). Przy stopniu 15 test spada do 0,11, a przy stopniu 20 do −7,7: krzywa na brzegu zakresu BMI ucieka tak daleko, że model jest dużo gorszy od przewidywania średniej. Zależność postępu choroby od BMI jest po prostu bliska liniowej.
Jeszcze wyraźniej widać to na wszystkich 10 cechach. Zwykła regresja liniowa: R² testowe 0,36. Wielomian stopnia 2 (65 cech): trening 0,65, test 0,24. Stopień 3 (285 cech przy 331 pacjentach): trening 0,92, test −22. Model nauczył się danych treningowych na pamięć, a na nowych pacjentach przewiduje absurdy. Hasło o regresji grzbietowej i lasso pokazuje, jak regularyzacja ratuje ten sam model.
Dane: Diabetes (progresja cukrzycy)
W praktyce
- W scikit-learn:
make_pipeline(StandardScaler(), PolynomialFeatures(degree=3), Ridge(alpha=1.0))— skalowanie przed potęgowaniem, regularyzacja po. PolynomialFeatures(interaction_only=True)dodaje tylko iloczyny cech, bez potęg — często wystarcza i jest tańsze.- Stopień dobieraj walidacją krzyżową (
GridSearchCVpopolynomialfeatures__degree) albo krzywą walidacji; w praktyce rzadko przekracza 3. - Nigdy nie ekstrapoluj wielomianem poza zakres danych treningowych.
- Do gładkich nieliniowości jednej cechy lepsze bywają
SplineTransformerlub modele drzewiaste.
Najczęstsze pytania
- Czy regresja wielomianowa to model liniowy czy nieliniowy?
- Oba naraz, zależnie od punktu widzenia. Zależność między x a y jest nieliniowa (krzywa), ale model jest liniowy w parametrach, więc dopasowuje się go zwykłą metodą najmniejszych kwadratów i ma wszystkie jej własności.
- Jak wybrać stopień wielomianu?
- Walidacją krzyżową: dopasuj modele różnych stopni i wybierz ten z najlepszym wynikiem na danych walidacyjnych, nie treningowych. Błąd treningowy zawsze faworyzuje najwyższy stopień, więc nie wolno się nim kierować. Przy remisie wybierz niższy stopień.
- Dlaczego wielomian wysokiego stopnia tak dziwnie zachowuje się na brzegach?
- Potęgi wysokiego stopnia rosną bardzo szybko, a współczynniki dobrane do zbalansowania danych w środku przestają się równoważyć na krańcach. Na brzegach zwykle jest też mniej danych, które mogłyby krzywą „przytrzymać”. Stąd oscylacje i ucieczki znane jako zjawisko Rungego.
Źródła
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 7.1 i 7.4.
- Hastie T., Tibshirani R., Friedman J. „The Elements of Statistical Learning”, 2nd ed., 2009, rozdz. 5.
- Bishop C. „Pattern Recognition and Machine Learning”, Springer, 2006, rozdz. 1.1.
- Dokumentacja scikit-learn, „PolynomialFeatures” i „SplineTransformer”: https://scikit-learn.org/stable/modules/preprocessing.html#generating-polynomial-features