course
Dopasowywanie prostej do danych, które się wyginają, nigdy nie jest dobrym pomysłem.
Regresja liniowa zakłada, że związek między predyktorami a celem jest linią prostą. Niestety, większość relacji w świecie rzeczywistym taka nie jest. Pomyśl o relacji między dochodem a wydatkami albo czasem a wzrostem — wyginają się, spłaszczają, znów się wyginają i zmieniają kierunek w sposób, którego nie da się ująć jednym nachyleniem.
Regresja sklejkami radzi sobie z tym, pozwalając relacji wyginać się tam, gdzie trzeba, bez dopasowywania jakiejś dzikiej, nieograniczonej krzywej. Pomysł polega na dopasowaniu wielu gładkich odcinków wielomianowych w zakresie predyktora i połączeniu ich w określonych punktach.
W tym artykule poznasz podstawowe koncepcje regresji sklejkami, jak węzły sterują elastycznością, główne typy sklejek oraz jak stosować je w praktyce.
Zanim poznasz sklejki, przeczytaj nasz samouczek, który nauczy cię wszystkiego, co musisz wiedzieć o prostej regresji liniowej.
Czym jest regresja sklejkami?
Regresja sklejkami to technika regresji, która modeluje nieliniowe zależności za pomocą odcinkowych funkcji wielomianowych łączonych w punktach zwanych węzłami.
Zamiast więc tworzyć jedno równanie opisujące całą relację, regresja sklejkami dzieli zakres predyktora na mniejsze części i dopasowuje osobny wielomian do każdej części. Te części stykają się w węzłach, a ograniczenia zapewniają płynne przejścia.
Końcowy efekt plasuje się między dwoma skrajnościami. Jest bardziej elastyczny niż regresja liniowa, która potrafi poprowadzić tylko jedną prostą przez twoje dane. I bardziej ustrukturyzowany niż w pełni nieograniczone modele nieliniowe, takie jak głębokie sieci neuronowe czy metody jąder, które mogą dopasować prawie wszystko, ale niewiele mówią o tym, co właściwie dopasowały.
Z tego powodu sklejki pojawiają się bardzo często w statystyce stosowanej.
Dlaczego potrzebna jest regresja sklejkami
Prawdziwe dane niemal nigdy nie układają się w prostą linię.
Regresja liniowa to domyślny punkt wyjścia do modelowania relacji, ale ma silne założenie: efekt predyktora na wynik pozostaje stały w całym zakresie. Gdy rzeczywista relacja się wygina lub zmienia kierunek, prosta ją niedopasuje. Pojawiają się błędy na krańcach i model, który nie potrafi śledzić wzorca.
Rozwiązaniem jest użycie bardziej elastycznego modelu. Regresja wielomianowa wysokiego stopnia to jedna z opcji — dodajesz wyrazy x^2, x^3, x^4, aż krzywa wystarczająco się wygnie, by dopasować dane. Ale wielomiany stają się niestabilne na krańcach danych, gdy wystrzeliwują w górę lub w dół tam, gdzie masz mało punktów. To zjawisko nazywa się zjawiskiem Rungego i sprawia, że wielomiany wysokiego stopnia są ryzykowne w predykcji.
Regresja sklejkami jest pomiędzy tymi dwiema skrajnościami.
Zyskujesz lokalną elastyczność tam, gdzie dane się wyginają, bez globalnej niestabilności jednego wielomianu wysokiego stopnia. Każdy segment to wielomian niskiego stopnia (zwykle sześcienny), więc żadna część nie może zachowywać się nieoczekiwanie. A ponieważ segmenty są gładko łączone w węzłach, cała krzywa nadal wygląda jak jedna ciągła funkcja.
W skrócie, sklejka oferuje dość elastyczności, by śledzić złożone wzorce, i dość struktury, by zachowywać się rozsądnie na krańcach.
Jak działa regresja sklejkami
Regresja sklejkami zawsze podąża za prostym, trzyetapowym schematem.
- Podziel zakres predyktora na regiony: Wybierasz zestaw węzłów wzdłuż osi predyktora. Te węzły dzielą zakres na przedziały. Jeśli umieścisz trzy węzły, otrzymasz cztery regiony. Węzły są granicami między segmentami.
- Dopasuj wielomian w każdym regionie: W każdym przedziale model dopasowuje wielomian niskiego stopnia. Każdy region ma własne współczynniki wielomianu, więc krzywa może wyginać się inaczej w różnych częściach zakresu predyktora. Region, w którym relacja jest prawie płaska, dostaje prawie płaski wielomian. Region z ostrym wygięciem — bardziej zakrzywiony.
- Połącz regiony: Model wymusza ograniczenia ciągłości w każdym węźle. Wartości wielomianów po obu stronach muszą zgadzać się w węźle, aby na krzywej nie było skoków. Dla sklejek sześciennych także pierwsze i drugie pochodne muszą się zgadzać, co oznacza brak ostrych kątów i nagłych zmian krzywizny.
Te ograniczenia nadają sklejkom wygląd pojedynczej, gładkiej krzywej, która wygina się lokalnie, ale płynnie przepływa przez cały zakres predyktora. Wizualnie nie widać, gdzie kończy się jeden wielomian, a zaczyna następny.
Węzły, stopień wielomianu i ograniczenia ciągłości wspólnie definiują sklejkę. Jeśli zmienisz którykolwiek z nich, otrzymasz inny rodzaj sklejki o innych właściwościach — o czym mowa w kolejnych sekcjach.
Czym są węzły w regresji sklejkami?
Węzły to punkty wzdłuż osi predyktora, w których kończy się jeden segment wielomianu, a zaczyna następny.
Możesz myśleć o nich jak o stawach sklejki. Jeśli umieścisz węzeł przy x = 5, model dopasuje jeden wielomian dla wartości poniżej 5 i inny dla wartości powyżej 5. Dwa wielomiany spotykają się w węźle, a ograniczenia ciągłości zapewniają ich płynne połączenie. Dodając więcej węzłów, dostajesz więcej segmentów, co oznacza, że krzywa może wyginać się w większej liczbie miejsc.
Dlatego węzły są główną dźwignią kontrolującą elastyczność modelu.
Liczba węzłów określa, ile oddzielnych fragmentów wielomianowych tworzy sklejkę. Położenie węzłów określa, gdzie krzywa może zmieniać kształt. Sklejka z dwoma węzłami może wyginać się tylko w kilku miejscach. Sklejka z dwudziestoma węzłami może podążać niemal za każdym punktem danych.
Wybór odpowiedniej liczby i rozmieszczenia węzłów to główna decyzja w regresji sklejkami.
Zbyt mało węzłów
Jeśli umieścisz zbyt mało węzłów, sklejka nie ma dość segmentów, by śledzić rzeczywisty wzorzec w danych. Krzywa pozostaje zbyt sztywna. Zachowuje się niemal jak wielomian niskiego stopnia — elastyczna ogólnie, ale niełapiąca lokalnych zmian.
Wyobraź sobie dopasowanie sklejki z jednym węzłem do danych, które mają trzy wyraźne fazy: trend wzrostowy, plateau i spadek. Mając tylko jeden węzeł, sklejka ma do dyspozycji dwa segmenty. Może uchwycić wzrost i jedną z pozostałych faz, ale nie wszystkie trzy. Kończysz z tym samym problemem co w regresji liniowej — błędami tam, gdzie sklejka nie potrafi dopasować kształtu danych.

Przykład zbyt małej liczby węzłów
Zbyt mało węzłów prowadzi do niedopasowania. Model jest zbyt gładki, by był użyteczny.
Zbyt wiele węzłów
Przeciwieńny problem jest równie zły. Jeśli umieścisz zbyt wiele węzłów, sklejka ma tyle segmentów, że zaczyna dopasowywać szum w danych zamiast rzeczywistego wzorca. Krzywa faluje między każdą obserwacją i goni losową zmienność zamiast trendu leżącego u podstaw.
Sklejka z dwudziestoma węzłami na zbiorze pięćdziesięciu punktów będzie wyglądać bardziej jak obrazek „połącz kropki” niż model. Prawie perfekcyjnie dopasuje dane treningowe, ale prognozy na nowych danych będą zawodne. Małe zmiany na wejściu prowadzą do dużych, nieprzewidywalnych zmian na wyjściu.

Przykład zbyt wielu węzłów
Zbyt wiele węzłów prowadzi do przeuczenia. Model jest zbyt elastyczny, by uogólniać.
Chcesz mieć dość węzłów, by uchwycić prawdziwe załamania w danych, ale nie tyle, by model zaczął zapamiętywać szum. W kolejnych sekcjach omówimy, jak podejmować tę decyzję w praktyce.
Typy sklejek
Sklejki występują w kilku odmianach, a wybór zależy głównie od tego, jakiego wielomianu używasz w każdym segmencie i jakie ograniczenia nakładasz na krzywą.
Sklejki liniowe
Sklejki liniowe to najprostsza wersja. Każdy segment to prosta, a segmenty łączą się w węzłach.

Przykład sklejek liniowych
Ograniczenie ciągłości jest tu luźniejsze — wartości po obu stronach muszą się zgadzać w węźle, ale nachylenia mogą się zmieniać. Efekt wygląda jak seria połączonych odcinków prostych z załamaniami w każdym węźle. To wystarczająco elastyczne dla prostych wygięć, ale krzywa czasem nie jest gładka.
Sklejki liniowe sprawdzają się, gdy zależy ci tylko na uchwyceniu ogólnych trendów i nie przeszkadza ci wizualna ostrość. Są też najłatwiejsze do interpretacji, bo każdy segment to po prostu linia z własnym nachyleniem.
Sklejki sześcienne
Sklejki sześcienne to domyślny wybór w większości zastosowań. Każdy segment to wielomian trzeciego stopnia, a ograniczenia ciągłości są surowsze niż dla sklejek liniowych.

Przykład sklejek sześciennych
W każdym węźle muszą być spełnione trzy warunki: zgodność wartości, zgodność pierwszych pochodnych i zgodność drugich pochodnych. To oznacza brak skoków, brak ostrych kątów i brak nagłych zmian krzywizny. Krzywa przepływa przez węzły bez wizualnych śladów przejść.
Stopień trzeci to najniższy stopień wielomianu pozwalający na gładkie zmiany krzywizny. Dlatego jest tak popularny. Wyższe stopnie rzadko dodają użytecznej elastyczności i tylko utrudniają kontrolę modelu.
Naturalne sklejki sześcienne
Naturalne sklejki sześcienne to odmiana z dodatkowymi ograniczeniami na brzegach danych.

Przykład naturalnych sklejek sześciennych
Problem zwykłych sklejek sześciennych polega na tym, że mogą zachowywać się dziwnie na brzegach, zwłaszcza tam, gdzie masz mało punktów. Skrajne segmenty to wciąż wielomiany sześcienne, a takie wielomiany mogą szybko wystrzeliwać w górę lub w dół przy ekstrapolacji.
Naturalne sklejki sześcienne omijają to, wymuszając zerową drugą pochodną w obu węzłach brzegowych. W praktyce oznacza to, że krzywa staje się liniowa poza najbardziej zewnętrznymi węzłami. Zachowanie przy ekstrapolacji jest dużo stabilniejsze, co czyni naturalne sklejki sześcienne lepszym wyborem, gdy zależy ci na prognozach blisko brzegów danych.
B-sklejki
B-sklejki (od ang. basis splines) to inny sposób konstruowania sklejek. Zamiast bezpośrednio definiować każdy segment wielomianowy, B-sklejki budują sklejkę jako ważoną sumę funkcji bazowych.

Przykład B-sklekjek
Każda funkcja bazowa sama w sobie jest małą sklejką, która jest niezerowa tylko w ograniczonym regionie. Pełna sklejka to suma tych funkcji bazowych, z których każda jest mnożona przez współczynnik estymowany przez regresję.
B-sklejki są numerycznie stabilne i łatwe do rozszerzania. Większość nowoczesnych implementacji sklejek w Pythonie i R używa reprezentacji B-sklejek, nawet jeśli interfejs dla użytkownika wygląda jak zwykła sklejka. Jeśli kiedykolwiek wywołałeś bs() w R lub używałeś SplineTransformer w scikit-learn, używałeś B-sklekjek.
Regresja sklejkami a regresja wielomianowa
Zarówno regresja wielomianowa, jak i sklejkami radzą sobie z nieliniowością, ale podchodzą do tego zupełnie inaczej. Różnica sprowadza się do sposobu budowy krzywej.
Regresja wielomianowa
Regresja wielomianowa dopasowuje jeden globalny wielomian w całym zakresie predyktora. Wybierasz stopień (2, 3, 5, 10), a model znajduje jeden zestaw współczynników minimalizujący błąd we wszystkich danych. Krzywa ma jedno równanie i to równanie opisuje relację wszędzie.
Brzmi to czysto, ale ma problem. Jeden wielomian musi zbalansować dopasowanie w całym zakresie, więc to, co dzieje się w jednym regionie, wpływa na każdy inny. Jeśli zwiększysz stopień, by poradzić sobie z ostrym wygięciem pośrodku danych, zobaczysz, jak krzywa zaczyna „huśtać się” na krańcach. To wspomniane wcześniej zjawisko Rungego — wielomiany wysokiego stopnia stają się niestabilne przy granicach danych.
Drugi problem jest taki, że regresja wielomianowa nie ma pojęcia lokalności. Skok przy x = 5 może zmienić kształt dopasowania przy x = 50, ponieważ każda obserwacja dokłada się do tego samego globalnego równania.
Regresja sklejkami
Regresja sklejkami dzieli zakres predyktora na segmenty i dopasowuje w każdym z nich wielomian niskiego stopnia. Wielomiany są gładko łączone w węzłach, ale każdy z nich jest w pewnym sensie niezależny — jego kształt wynika głównie z danych w jego własnym regionie.
To daje lokalną elastyczność. Region z ostrym wygięciem dostaje bardziej zakrzywiony wielomian. Region z płaskim trendem — prawie płaski. I ponieważ każdy segment ma niski stopień (zwykle sześcienny), żadna część nie zachowuje się dziwnie na krańcach. Otrzymujesz gładsze, stabilniejsze dopasowanie, zwłaszcza blisko granic danych.
Porównanie obok siebie

Regresja wielomianowa kontra regresja sklejkami
Jeśli twoja relacja jest lekko nieliniowa i akceptujesz globalne dopasowanie, regresja wielomianowa może się sprawdzić. Jeśli masz bardziej złożony wzorzec lub zależy ci na prognozach blisko granic, sklejki są bezpieczniejszym wyborem.
Wybór liczby i położenia węzłów
Wybór węzłów to najważniejsza część regresji sklejkami. Zbyt mało węzłów prowadzi do niedopasowania, a zbyt wiele powoduje przeuczenie. A to, gdzie je umieścisz, decyduje, jakie wzorce model może uchwycić.
Istnieje kilka podejść i najczęściej łączysz dwa z nich.
- Wiedza domenowa: Jeśli coś wiesz o problemie, wykorzystaj to. Badanie kliniczne może umieścić węzły na znanych progach klinicznych. Model cenowy może umieścić węzły w punktach, gdzie oczekuje się zmiany zachowań konsumentów. Rozmieszczanie węzłów oparte na domenie jest najbardziej interpretowalne, bo segmenty odpowiadają rzeczywistym granicom.
- Równo rozstawione węzły: Wybierz liczbę węzłów i rozstaw je równomiernie wzdłuż zakresu predyktora. Działa to dobrze, gdy dane są mniej więcej równomiernie rozłożone wzdłuż osi predyktora. Nie działa, gdy masz gęste dane w niektórych regionach i rzadkie w innych — równe rozstawienie może umieścić węzły w obszarach prawie bez danych, co czyni dopasowanie niestabilnym.
- Węzły oparte na kwantylach: Zamiast umieszczać węzły w równych pozycjach na osi x, umieść je na kwantylach predyktora. Przy 4 węzłach i rozmieszczeniu kwantylowym, ulokujesz węzły na 20., 40., 60. i 80. percentylu. Gwarantuje to, że każdy segment zawiera mniej więcej tyle samo obserwacji, co czyni dopasowanie bardziej wiarygodnym w rzadkich regionach.
- Walidacja krzyżowa: Próbujesz różnych liczb węzłów, dopasowujesz sklejkę dla każdej i porównujesz wydajność na danych odłożonych. Wygrywa konfiguracja z najniższym błędem walidacyjnym. Usuwa to zgadywanie, ale zwiększa koszt obliczeniowy, a wynik nadal zależy od tego, jakiej strategii rozmieszczania (równej, kwantylowej) szukasz.
Kompromis jest ten sam, który widzisz w każdym problemie regresji: elastyczność kontra złożoność. Więcej węzłów to większa elastyczność, co pozwala modelowi śledzić drobniejsze wzorce, ale także gonić szum. Mniej węzłów to stabilniejszy, bardziej interpretowalny model, który może pominąć rzeczywiste wzorce.
Zacznij od 3–5 węzłów umieszczonych na kwantylach, a potem sprawdź reszty. Jeśli widzisz systematyczne wzorce, których sklejka nie wychwytuje, dodaj węzeł w tym regionie. Jeśli dopasowanie wygląda na zbyt pofalowane, usuń jeden. Walidacja krzyżowa jest warta zastosowania, gdy musisz obronić wybór lub gdy model trafi na produkcję.
Regresja sklejkami w uczeniu maszynowym i statystyce
Sklejki pojawiają się wszędzie tam, gdzie trzeba zamodelować gładki efekt nieliniowy bez narzucania konkretnej postaci funkcji. Oto kilka typowych obszarów:
- Trendy w szeregach czasowych: Częste zastosowanie to oddzielenie gładkiego trendu w szeregu czasowym od krótkoterminowych wahań. Sklejka dopasowana do czasu jako predyktora daje elastyczną linię trendu, która dostosowuje się do zmian kierunku bez nadreakcji na szum. Ekonomiści i analitycy używają tego cały czas, gdy chcą opisać bazową trajektorię zmiennej — pomyśl o PKB czy cenach akcji — bez zakładania liniowości lub wykładniczości.
- Ekonomia i ekonometra: Sklejki służą do modelowania relacji, w których efekt zmiennej zmienia się w jej zakresie. Wpływ dochodu na konsumpcję nie jest stały — gospodarstwa o niskich dochodach wydają inaczej niż te o wysokich. Sklejka to dostrzeże bez zakładania konkretnej postaci funkcji.
- Ochrona zdrowia i biostatystyka: Wiele wyników zdrowotnych ma nieliniowe zależności od predyktorów takich jak wiek, BMI, ciśnienie krwi czy poziomy biomarkerów. Ryzyko choroby często ma kształt litery U lub J — oba skraje są niebezpieczne, środek jest bezpieczny. Model liniowy by to przeoczył. Sklejki sześcienne i naturalne sklejki sześcienne to standard do modelowania tych efektów i są wbudowane w większość oprogramowania statystycznego używanego w badaniach klinicznych.
- Modelowanie środowiskowe i ekologiczne: Sklejki pojawiają się także przy modelowaniu tego, jak gatunki lub zmienne klimatyczne reagują na gradienty środowiskowe. Temperatury, wysokość n.p.m. i opady często wpływają nieliniowo na wyniki, takie jak liczebność gatunku czy plon. Sklejki pozwalają badaczom dopasować krzywą odpowiedzi bez wcześniejszego określania jej kształtu.
We wszystkich tych przypadkach sklejki dają elastyczność tam, gdzie jej potrzebujesz, bez zmuszania do zgadywania postaci funkcji relacji. To czyni je dobrym wyborem do modelowania eksploracyjnego i solidnym wyborem do modeli produkcyjnych, gdy liczy się interpretowalność.
Regresja sklejkami w Pythonie
Python ma trzy popularne sposoby dopasowania regresji sklejkami: scikit-learn do pipeline’ów w stylu ML, patsy do specyfikacji modelu wzorami i statsmodels do wnioskowania statystycznego. Poniżej każdy z nich.
Korzystanie z scikit-learn
scikit-learn daje SplineTransformer, który przekształca cechę numeryczną w zestaw funkcji bazowych B-sklekjek. Potem podajesz te cechy do dowolnego modelu regresji liniowej.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import SplineTransformer
from sklearn.pipeline import make_pipeline
# Data
np.random.seed(42)
x = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(x).ravel() + 0.3 * x.ravel() + np.random.normal(0, 0.3, 100)
# Spline features + linear regression pipeline
model = make_pipeline(
SplineTransformer(n_knots=5, degree=3),
LinearRegression()
)
model.fit(x, y)
y_pred = model.predict(x)
print("R^2 score:", model.score(x, y))

wynik R2 w scikit-learn
Moduł SplineTransformer tworzy bazę sklejkową z 5 węzłami i wielomianami sześciennymi. Następnie LinearRegression znajduje współczynniki dla każdej funkcji bazowej. W tym miejscu możesz podmienić dowolny regresor sklearn — ridge, lasso, cokolwiek dopasowuje model liniowy do przekształconych cech.
To podejście pasuje do workflow sklearn, ale nie dostajesz wyników statystycznych, takich jak błędy standardowe czy wartości p. Do tego przydadzą się patsy lub statsmodels.
Korzystanie z patsy
patsy to interfejs wzorów do budowy macierzy projektu. To najbliższy w Pythonie odpowiednik wzorów modeli z R i standardowy sposób konstruowania cech sklejkowych do użycia ze statsmodels.
import numpy as np
import pandas as pd
from patsy import dmatrix
import statsmodels.api as sm
np.random.seed(42)
x = np.linspace(0, 10, 100)
y = np.sin(x) + 0.3 * x + np.random.normal(0, 0.3, 100)
df = pd.DataFrame({"x": x, "y": y})
# B-spline basis using patsy
spline_basis = dmatrix("bs(x, df=6, degree=3)", data=df, return_type="dataframe")
# Fit with statsmodels OLS
model = sm.OLS(df["y"], spline_basis).fit()
print(model.summary())

podsumowanie modelu w patsy
Funkcja bs() wewnątrz wzoru mówi patsy, by zbudować bazę B-sklekjek z 6 stopniami swobody i stopniem 3 (sześciennym). patsy zwraca macierz projektu, która trafia bezpośrednio do sm.OLS(). Parametr df kontroluje liczbę funkcji bazowych sklejki — wyższe wartości dają większą elastyczność, podobnie jak dodanie większej liczby węzłów.
Jeśli chcesz sklejki naturalne, po prostu zamień bs() na ns():
spline_basis = dmatrix("ns(x, df=6)", data=df, return_type="dataframe")
Korzystanie ze statsmodels z wzorami
statsmodels ma również API wzorów integrujące się z patsy. To najczystsza wersja, gdy chcesz jednolinijkowej regresji sklejkami z pełnym wynikiem statystycznym.
import statsmodels.formula.api as smf
model = smf.ols("y ~ bs(x, df=7, degree=3)", data=df).fit()
print(model.summary())

podsumowanie modelu w statsmodels
Wyjście summary() daje współczynniki dla każdej funkcji bazowej sklejki, błędy standardowe, wartości p i zwyczajowe statystyki dopasowania. Same współczynniki nie są bezpośrednio interpretowalne, bo każdy odpowiada funkcji bazowej, a nie wielkości ze świata rzeczywistego. Interpretujesz dopasowanie, rysując predykcje w całym zakresie predyktora.
Dla większości workflow statystycznych najwygodniejsze jest API wzorów statsmodels. Używaj scikit-learn, gdy sklejki są częścią większego pipeline’u ML.
Regresja sklejkami w R
R ma najlepsze wbudowane wsparcie dla sklejek spośród popularnych języków. Pakiet splines jest częścią bazowego R, a jego dwie główne funkcje — bs() i ns() — działają bezpośrednio wewnątrz dowolnego wzoru regresji.
Funkcja bs() tworzy bazę B-sklekjek. Funkcja ns() tworzy bazę naturalnych sklejek sześciennych. Obie produkują macierz cech sklejkowych, którą system wzorów R automatycznie wstawia do modelu.
Użycie bs() dla B-sklekjek
# Data
set.seed(42)
x <- seq(0, 10, length.out = 100)
y <- sin(x) + 0.3 * x + rnorm(100, sd = 0.3)
df <- data.frame(x = x, y = y)
# Cubic B-spline with 6 degrees of freedom
library(splines)
model <- lm(y ~ bs(x, df = 6, degree = 3), data = df)
summary(model)

wynik bs() w R
Wzór y ~ bs(x, df = 6, degree = 3) mówi R, aby zastąpić x bazą B-sklekjek stopnia 3 i z 6 stopniami swobody. R zajmuje się resztą — buduje macierz bazy, dopasowuje model liniowy i tworzy standardowy obiekt lm z pełną diagnostyką.
Możesz przekazać pozycje węzłów bezpośrednio, jeśli chcesz pełnej kontroli:
model <- lm(y ~ bs(x, knots = c(2, 5, 8), degree = 3), data = df)
To umieszcza węzły przy x = 2, x = 5 i x = 8 zamiast pozwalać R wybrać je za ciebie.
Użycie ns() dla sklejek naturalnych
Dla naturalnych sklejek sześciennych (tych z liniowym zachowaniem poza granicami) użyj ns():
model_natural <- lm(y ~ ns(x, df = 6), data = df)
summary(model_natural)

wynik ns() w R
Składnia jest taka sama, ale zachowanie na granicach — inne. Sklejki naturalne zwykle są bezpieczniejszym wyborem, gdy zależy ci na prognozach lub interpretacji blisko brzegów danych.
Interpretacja wyników
Współczynniki w wyjściu summary() odpowiadają funkcjom bazowym sklejki, a nie interpretowalnym wielkościom. Aby zobaczyć, czego model się nauczył, przewiduj na siatce wartości x i narysuj wynik:
x_grid <- data.frame(x = seq(0, 10, length.out = 200))
preds <- predict(model, newdata = x_grid)
plot(df$x, df$y)
lines(x_grid$x, preds, col = "green", lwd = 2)

Interpretacja wyników w R
To standard w R: dopasowujesz sklejkę, przewidujesz na gęstej siatce i nakładasz krzywą na dane. R pozwala też używać członów sklejkowych obok innych predyktorów w tym samym wzorze:
model_multi <- lm(y ~ ns(x, df = 6) + other_var, data = df)
To dopasowuje nieliniowy efekt dla x i liniowy efekt dla other_var w tym samym modelu. Ta elastyczność sprawia, że sklejki są tak szeroko używane w workflow opartych na R.
Zalety regresji sklejkami
Oto kilka zalet sklejek w porównaniu z popularniejszymi modelami uczenia maszynowego:
- Modelują nieliniowe zależności bez znajomości postaci: Nie musisz deklarować konkretnego kształtu funkcji. Sklejki pozwalają danym nadać kształt krzywej, więc możesz modelować wygięcia, plateau i zmiany kierunku bez wcześniejszej wiedzy, gdzie wystąpią.
- Gładkie i interpretowalne dopasowania: Wyjście to ciągła krzywa, a nie czarna skrzynka. Możesz ją narysować, zobaczyć, jak odpowiedź zmienia się w zakresie predyktora, i wytłumaczyć to nietechnicznej publiczności.
- Bardziej stabilne niż wielomiany wysokiego stopnia: Każdy segment to wielomian niskiego stopnia, więc żadna część nie może „odjechać” na krańcach. Zachowanie na granicach jest dużo lepiej kontrolowane, zwłaszcza w naturalnych sklejkach sześciennych.
- Pasują do istniejących workflow regresyjnych: Sklejki działają w standardowej regresji liniowej. Możesz łączyć je z innymi predyktorami, regularyzacją, efektami losowymi i każdym innym narzędziem nad OLS.
Ograniczenia regresji sklejkami
Jak większość modeli, sklejki mają kilka kompromisów, o których trzeba wiedzieć:
- Wybór węzłów to trudna część: Wybór liczby i położenia węzłów wymaga pracy. Domyślne ustawienia czasem działają, ale w wielu przypadkach potrzebujesz walidacji krzyżowej lub wiedzy domenowej, by uzyskać dobre dopasowanie. Nie ma jednej reguły, która zawsze działa.
- Interpretacja trudnieje wraz z liczbą węzłów: Sklejka z trzema węzłami jest w miarę prosta do interpretacji. Z dwudziestoma — już nie. Nadal możesz rysować krzywą, ale wyjaśnienie, co model robi w rygorystyczny sposób, staje się dużo trudniejsze.
- Nadal mogą się przeuczyć: Sklejki są stabilniejsze niż wielomiany wysokiego stopnia, ale nie są odporne na przeuczenie. Zbyt wiele węzłów, złe rozmieszczenie, zbyt wiele wartości odstających lub mała próba mogą dać model, który dobrze dopasowuje dane treningowe, ale zawodzi na nowych.
- Współczynniki nie są bezpośrednio znaczące: Dopasowane współczynniki odpowiadają funkcjom bazowym, a nie wielkościom ze świata rzeczywistego. Nie możesz odczytać „jednostkowy wzrost x zmienia y o beta” jak w regresji liniowej. Musisz wizualnie interpretować dopasowanie.
Częste błędy w regresji sklejkami
Oto kilka błędów, które popełniają początkujący w regresji sklejkami:
- Używanie zbyt wielu węzłów: Początkujący często dodają węzły, aż dopasowanie wygląda dobrze wizualnie na danych treningowych. To klasyczna pułapka przeuczenia. Jeśli sklejka faluje między każdą obserwacją, masz za dużo węzłów. Zastosuj walidację krzyżową albo zacznij od mniejszej liczby i dodawaj tylko wtedy, gdy reszty pokazują wyraźny wzorzec.
- Używanie zbyt małej liczby węzłów i zakładanie liniowości danych: Przeciwny błąd. Jeśli dopasujesz sklejkę z jednym lub dwoma węzłami, a reszty nadal pokazują krzywiznę, model jest niedopasowany. Sklejka po prostu nie ma dość segmentów, by śledzić prawdziwy wzorzec. Dodaj węzły w regionach, gdzie reszty odbiegają.
- Niezrozumienie zachowania na granicach: Zwykłe sklejki sześcienne mogą zachowywać się kapryśnie blisko brzegów danych. Jeśli prognozujesz blisko granic (lub ekstrapolujesz poza nie), użyj naturalnych sklejek sześciennych. Wymuszają liniowe zachowanie poza węzłami brzegowymi i unikają odchyleń, które mogą dać zwykłe sklejki sześcienne.
- Bezpośrednie porównywanie sklejek z nieograniczonymi modelami nieliniowymi: Sklejki nie próbują być sieciami neuronowymi ani lasami losowymi. Jeśli porównasz sklejkę z w pełni nieliniowym modelem czarnej skrzynki pod względem surowej dokładności predykcyjnej, czarna skrzynka często wygra. Nie o to chodzi. Sklejki wygrywają interpretowalnością i możliwością wpasowania w tradycyjne wnioskowanie statystyczne.
Regresja sklejkami a inne techniki modelowania nieliniowego
Sklejki nie są jedynym sposobem modelowania nieliniowości, ale są użyteczne, jeśli zależy ci na interpretowalności. Oto jak wypadają na tle najpopularniejszych alternatyw.
Regresja wielomianowa
Regresja wielomianowa używa jednego globalnego równania. Jest prostsza w specyfikacji, ale mniej stabilna, zwłaszcza na granicach. Sklejki wygrywają z wielomianami pod względem elastyczności i stabilności, gdy relacja ma więcej niż jedno wygięcie. Wielomiany są łatwiejsze do interpretacji tylko przy bardzo niskich stopniach (2 lub 3). Powyżej tego sklejki stają się zarówno bardziej wiarygodne, jak i bardziej interpretowalne.
Uogólnione modele addytywne (GAM)
GAM-y to w zasadzie sklejki w skali. GAM pozwala dopasować sklejkę dla każdego predyktora niezależnie i dodać je addytywnie. Możesz myśleć o regresji sklejkami jako o GAM-ie dla jednej zmiennej, a o GAM-ie jako o sumie sklejek w wielu zmiennych.
GAM-y radzą sobie z wieloma nieliniowymi predyktorami czyściej niż ręczne dopasowywanie sklejek dla każdego z osobna. Zawierają też kary wygładzające, które dobierają właściwą dozę elastyczności, co zdejmie część pracy z wyborem węzłów. Jeśli pracujesz z wieloma predyktorami i kilka z nich wymaga nieliniowego potraktowania, GAM-y zwykle są lepszą opcją.
Drzewa decyzyjne
Drzewa podchodzą do problemu zupełnie inaczej. Zamiast dopasowywać gładką krzywą, dzielą przestrzeń predyktorów na prostokątne regiony i przewidują stałą wartość w każdym regionie. Wynikiem jest funkcja schodkowa.
Drzewa są w pewnych aspektach bardziej elastyczne niż sklejki — potrafią modelować interakcje i nagłe zmiany. Ale dopasowana funkcja nie jest gładka ani ciągła. Nie uogólnia też tak dobrze w obszarach z rzadkimi danymi. Sklejki są lepsze, gdy zależy ci na gładkości i stabilnej ekstrapolacji. Drzewa są lepsze, gdy zależy ci na modelowaniu ostrych granic lub interakcji w wielu zmiennych.
Dlaczego regresja sklejkami ma znaczenie
Sklejki są wszędzie w statystyce stosowanej. Pojawiają się w badaniach klinicznych, analizie ekonomicznej, naukach o środowisku, modelowaniu szeregów czasowych i w każdej dziedzinie, gdzie trzeba zamodelować gładki efekt nieliniowy bez sięgania po model czarnej skrzynki.
Powodem jest równowaga, którą oferują — dość elastyczności, by poradzić sobie z „brudnymi” danymi, ale dość struktury, by pozostać interpretowalnymi i stabilnymi.
Są też fundamentem dla bardziej zaawansowanych metod. Uogólnione modele addytywne bazują bezpośrednio na sklejkach, sklejki wygładzające rozwijają pomysł o wbudowaną regularyzację, a wiele nowoczesnych technik nieliniowej regresji używa baz sklejkowych. Jeśli chcesz rozumieć te metody, musisz najpierw zrozumieć sklejki.
Sklejki mają znaczenie, bo są praktyczne i bo są budulcem dla wielu rzeczy, które przychodzą potem. Nie są najpotężniejszym modelem, ale są jednym z najbardziej niezawodnych — a to często jest najważniejsze.
Wnioski
Regresja sklejkami modeluje nieliniowe zależności, łącząc odcinkowe wielomiany w punktach zwanych węzłami. To sedno sprawy, a reszta to wariacje na ten temat.
Dwa pojęcia, które musisz sobie przyswoić, to węzły i gładkość. Cała reszta (typy sklejek, reprezentacje bazowe, implementacje w R i Pythonie) to tylko różne sposoby pracy z tymi dwiema koncepcjami.
Wypróbuj kilka typów sklejek na własnych danych. Porównaj sześcienne, naturalne sześcienne i B-sklejki. Przesuń węzły i zobacz, co się dzieje. Po prostu eksperymentuj — wizualny charakter dopasowania sprawia, że łatwo zobaczyć, co robi każdy wybór.
Jeśli chcesz głębiej wejść w matematykę sklejek i wielu innych algorytmów, zapisz się na naszą ścieżkę Machine Learning Scientist in Python. Ma wszystko, czego potrzebujesz, by być gotowym do pracy w 2026 roku.
FAQ dotyczące regresji sklejkami
Czym w prostych słowach jest regresja sklejkami?
Regresja sklejkami to sposób modelowania zakrzywionych zależności w danych poprzez podział zakresu predyktora na segmenty i dopasowanie w każdym z nich małego wielomianu. Segmenty łączą się płynnie w punktach zwanych węzłami, więc końcowy wynik to jedna ciągła krzywa. Jest bardziej elastyczna niż regresja liniowa i stabilniejsza niż regresja wielomianowa wysokiego stopnia.
Kiedy używać regresji sklejkami zamiast liniowej?
Używaj regresji sklejkami, gdy relacja między predyktorem a wynikiem nie jest linią prostą. Jeśli model liniowy zostawia wzorce w resztach — na przykład błędy są dodatnie pośrodku danych i ujemne na krańcach — to znak, że relacja jest nieliniowa.
Czym są węzły w regresji sklejkami?
Węzły to punkty wzdłuż osi predyktora, w których kończy się jeden segment wielomianu, a zaczyna następny. Sterują elastycznością sklejki. Więcej węzłów oznacza, że krzywa może wyginać się w większej liczbie miejsc. Wybór właściwej liczby i rozmieszczenia węzłów to centralna decyzja w regresji sklejkami. Zbyt mało oznacza niedopasowanie, a zbyt wiele — przeuczenie.
Jaka jest różnica między sklejkami sześciennymi a naturalnymi sklejkami sześciennymi?
Obie dopasowują wielomiany sześcienne między węzłami, ale różnią się zachowaniem na granicach danych. Zwykłe sklejki sześcienne mogą zachowywać się nieoczekiwanie przy krawędziach, bo skrajne odcinki to nadal pełne wielomiany sześcienne. Naturalne sklejki sześcienne wymuszają liniową krzywą poza najbardziej zewnętrznymi węzłami, co znacznie stabilizuje prognozy blisko lub poza granicami.
Jak wybrać liczbę węzłów dla modelu sklejkami?
Zacznij od 3–5 węzłów umieszczonych na kwantylach predyktora, aby każdy segment miał podobną liczbę obserwacji. Jeśli reszty pokazują wzorce, których sklejka nie wychwytuje, dodaj węzeł w tym regionie. Bardziej rygorystycznie — użyj walidacji krzyżowej, by porównać różne liczby węzłów i wybrać konfigurację z najniższym błędem walidacyjnym.