02 · Dane · 4 min czytania · Interaktywne · aktualizacja
Czym są cechy wielomianowe i kiedy warto ich używać w modelu liniowym?
W skrócie
Cechy wielomianowe to potęgi i iloczyny zmiennych. Pozwalają modelowi liniowemu wyrażać krzywe i interakcje, ale ich liczba rośnie lawinowo.
Co to jest
Cechy wielomianowe to nowe zmienne powstałe z potęg i iloczynów cech oryginalnych. Z dwóch cech x₁, x₂ w stopniu 2 powstaje zestaw x₁, x₂, x₁², x₁·x₂, x₂². Iloczyn x₁·x₂ nazywa się interakcją: pozwala, by wpływ jednej zmiennej zależał od wartości drugiej.
Model liniowy pozostaje liniowy względem wag — nadal to suma ważona — ale teraz sumuje także kwadraty i iloczyny. Dzięki temu w przestrzeni oryginalnych zmiennych potrafi narysować parabolę, siodło czy zakrzywioną granicę decyzyjną. To najprostszy przykład rozszerzenia bazy (basis expansion).
Intuicja: dawka leku działa coraz lepiej, ale powyżej pewnego progu szkodzi. Prosta tego nie opisze, parabola tak — i wystarczy do tego cecha „dawka²”.
Mechanizm — dlaczego tak działa
Regresja liniowa szuka wag w w modelu ŷ = w₀ + w₁x₁ + … + wₚxₚ. Każda cecha ma stały, niezależny wpływ. Po dodaniu x₁² krzywizna staje się kolejnym parametrem do oszacowania, a po dodaniu x₁·x₂ — efekt x₁ wynosi w₁ + w₁₂·x₂, czyli zmienia się wraz z x₂. Algorytm uczenia się nie zmienia: to wciąż najmniejsze kwadraty albo regresja logistyczna, tylko na szerszej tabeli.
Klasyczny przykład to problem XOR: klasa zależy od tego, czy x₁ i x₂ mają ten sam znak. Żadna prosta nie rozdziela takich klas, ale pojedyncza cecha x₁·x₂ robi to idealnie — jej znak to dokładnie odpowiedź. Interakcja zamienia problem nieliniowy w liniowy.
Cena to eksplozja liczby cech. Dla p zmiennych i stopnia d liczba cech (bez wyrazu wolnego) wynosi C(p + d, d) − 1. Dla 10 zmiennych stopień 2 daje 65 cech, stopień 3 — 285. Dla 100 zmiennych stopień 2 to już 5150 cech, a stopień 3 — 176 850. Z każdą cechą rośnie wariancja oszacowań, a wysokie potęgi zachowują się dziko na krańcach danych: wielomian wysokiego stopnia potrafi wystrzelić w nieskończoność tuż za ostatnim punktem treningowym.
Dlatego cechy wielomianowe niemal zawsze łączy się z regularyzacją (ridge, lasso) i skalowaniem. Bez skalowania x² i x³ mają zupełnie inne zakresy niż x, co psuje optymalizację i karę regularyzacyjną. Alternatywą dla wysokich potęg są splajny (wielomiany odcinkowe), które modelują krzywizny lokalnie i nie wybuchają na brzegach. Metody jądrowe (kernel trick) liczą iloczyny skalarne w przestrzeni wielomianowej bez jawnego tworzenia cech.
Na przykładzie
Problem typu XOR: 400 punktów losowanych równomiernie z kwadratu [−1, 1]², klasa 1, gdy x₁·x₂ > 0. Regresja logistyczna na surowych cechach osiąga w 5-krotnej walidacji krzyżowej 48% trafności — poziom zgadywania. Ta sama regresja na cechach wielomianowych stopnia 2 osiąga 98%.
Na zbiorze Diabetes (442 pacjentów, 10 cech, cel: postęp choroby po roku) efekt jest odwrotny i pouczający. Zwykła regresja liniowa ma R² = 0,48 w 10-krotnej walidacji krzyżowej. Ze stopniem 2 (65 cech) na treningu R² rośnie do 0,59, ale w walidacji spada do 0,41. Ze stopniem 3 (285 cech przy 442 przykładach) R² na treningu to 0,80, a w walidacji −14,8 — przewidywania gorsze niż stała średnia. Regularyzacja ridge ratuje sytuację (0,47 dla stopnia 2, 0,44 dla stopnia 3), ale nie przebija prostego modelu. Wniosek: interakcje pomagają, gdy istnieją w danych; gdy ich nie ma, dodają tylko szum.
Dane: Diabetes (progresja cukrzycy)
W praktyce
PolynomialFeatures(degree=2, include_bias=False)w scikit-learn;interaction_only=Truedaje same iloczyny bez potęg.- Zawsze w potoku:
make_pipeline(PolynomialFeatures(2), StandardScaler(), RidgeCV(alphas=...)). - Stopień 2, rzadko 3; wyższe stopnie zastępuj
SplineTransformeralbo modelem nieliniowym. - Liczbę cech sprawdzisz przez
n_output_features_pofit— warto zrobić to przed treningiem na dużej liczbie zmiennych. - Stopień i siłę regularyzacji dobieraj walidacją krzyżową (
GridSearchCV). - Typowy błąd: ocena na zbiorze treningowym, gdzie każdy dodatkowy stopień „poprawia” wynik.
Najczęstsze pytania
- Czy model z cechami wielomianowymi to nadal regresja liniowa?
- Tak — liniowa względem wag, które szacujemy. Nieliniowa jest tylko zależność od oryginalnych zmiennych. Dlatego można użyć tych samych algorytmów, wzorów i diagnostyki co w zwykłej regresji.
- Jak wybrać stopień wielomianu?
- Walidacją krzyżową: wynik na zbiorze treningowym zawsze rośnie ze stopniem, wynik walidacyjny ma zwykle maksimum przy niskim stopniu. W praktyce rzadko opłaca się więcej niż 2–3.
- Czym różnią się cechy wielomianowe od kernel trick?
- Cechy wielomianowe tworzą jawnie nowe kolumny. Jądro wielomianowe w SVM daje równoważny efekt bez ich tworzenia, licząc tylko iloczyny skalarne, co ma znaczenie przy dużej liczbie zmiennych.
Źródła
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 3.3.2 i 7.1 (regresja wielomianowa).
- Hastie T., Tibshirani R., Friedman J. „The Elements of Statistical Learning”, 2nd ed., 2009, rozdz. 5 (Basis Expansions and Regularization).
- Géron A. „Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow”, 3rd ed., 2022, rozdz. 4 (Polynomial Regression).
- Dokumentacja scikit-learn:
PolynomialFeatures, https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html