Kurs
Eğrilen verilere düz bir çizgi uydurmak hiçbir zaman iyi bir fikir değildir.
Doğrusal regresyon, yordayıcılarınız ile hedef arasındaki ilişkinin düz bir çizgi olduğunu varsayar. Ne yazık ki, gerçek dünyadaki ilişkilerin çoğu böyle değildir. Gelir ile harcama ya da zaman ile büyüme arasındaki ilişkiyi düşünün — bükülürler, düzleşirler, yeniden bükülürler ve tek bir eğimle temsil edilemeyecek şekillerde yön değiştirirler.
Spline regresyonu bunu, ilişkiyi gerektiği yerlerde bükmeye izin vererek, ancak sınırsız, çılgın bir eğri uydurmadan ele alır. Fikir, yordayıcı aralığı boyunca birden fazla düzgün polinom parçası uydurmak ve bunları belirli noktalarda birleştirmektir.
Bu yazıda, spline regresyonunun temel kavramlarını, düğümlerin (knots) esnekliği nasıl kontrol ettiğini, başlıca spline türlerini ve uygulamada nasıl kullanılacaklarını öğreneceksiniz.
Splinelere geçmeden önce, size gerekli her şeyi öğretecek şu eğitimimizi okuyun: basit doğrusal regresyon.
Spline Regresyonu Nedir?
Spline regresyonu, doğrusal olmayan ilişkileri düğüm (knot) adı verilen belirli noktalarda birleştirilen parça parça polinom fonksiyonlarla modelleyen bir regresyon tekniğidir.
Yani, tüm ilişkiyi tanımlamak için tek bir denklem kurmak yerine, spline regresyonu yordayıcı aralığını daha küçük parçalara böler ve her parça üzerinde ayrı bir polinom uydurur. Bu parçalar düğümlerde buluşur ve kısıtlar geçişlerin pürüzsüz olmasını sağlar.
Ortaya çıkan sonuç iki uç arasında bir yerdedir. Verilerinize yalnızca tek bir düz çizgi çizebilen doğrusal regresyondan daha esnektir. Ve neredeyse her şeyi uydurabilen ama neyi uydurdukları hakkında çok az şey söyleyen, tam serbestlikteki doğrusal olmayan modeller (derin sinir ağları veya çekirdek yöntemleri gibi) kadar da başıboş değildir.
Bu nedenle splineler uygulamalı istatistikte çok sık karşımıza çıkar.
Neden Spline Regresyona İhtiyaç Var
Gerçek veriler neredeyse hiç düz bir çizgiyi takip etmez.
Doğrusal regresyon, ilişkileri modellemenin varsayılan başlangıç noktasıdır, ancak güçlü bir varsayımı vardır: bir yordayıcının sonuç üzerindeki etkisi aralık boyunca sabit kalır. Gerçek ilişki eğrildiğinde veya yön değiştirdiğinde, düz bir çizgi bunu eksik uydurur. Uçlarda hatalar alırsınız ve deseni takip edemeyen bir model elde edersiniz.
Çözüm daha esnek bir model kullanmaktır. Yüksek dereceli polinom regresyonu bir seçenektir — eğri verinize yeterince uyana kadar x^2, x^3, x^4 terimleri eklersiniz. Ancak polinomlar, az veri noktası bulunan uçlarda yukarı-aşağı salınarak kararsız hale gelir. Bu davranış Runge olgusu olarak adlandırılır ve yüksek dereceli polinomları tahmin için riskli kılar.
Spline regresyonu bu iki uç arasında yer alır.
Verinin büküldüğü yerlerde yerel esneklik elde edersiniz; tek bir yüksek dereceli polinomun küresel kararsızlığı olmadan. Her parça düşük dereceli bir polinomdur (genellikle kübik), bu nedenle hiçbir bölüm beklenmedik şekilde davranamaz. Ve parçalar düğümlerde pürüzsüzce birleştirildiği için genel eğri hâlâ tek bir sürekli fonksiyon gibi görünür.
Kısacası, bir spline karmaşık desenleri takip edecek kadar esneklik ve uçlarda dengeli kalacak kadar yapı sunar.
Spline Regresyonu Nasıl Çalışır
Spline regresyonu her zaman basit bir üç adımlı iş akışını izler.
- Yordayıcı aralığını bölgelere ayırın: Yordayıcı ekseni boyunca bir dizi düğüm seçersiniz. Bu düğümler aralığı aralıklara böler. Üç düğüm koyarsanız dört bölge elde edersiniz. Düğümler, segmentler arasındaki sınırlardır.
- Her bölgede bir polinom uydurun: Her aralık içinde model düşük dereceli bir polinom uydurur. Her bölge kendi polinom katsayılarını alır; böylece eğri, yordayıcı aralığının farklı kısımlarında farklı şekillerde bükülebilir. İlişkinin neredeyse düz olduğu bir bölge, neredeyse düz bir polinom alır. İlişkinin keskin şekilde eğrildiği bir bölge, daha kıvrımlı bir polinom alır.
- Bölgeleri bağlayın: Model, her düğümde süreklilik kısıtları uygular. Eğrinin sıçrama yapmaması için her iki taraftaki polinom değerleri düğümde eşleşmelidir. Kübik splinelerde birinci ve ikinci türevlerin de eşleşmesi gerekir; bu da keskin köşe ve ani eğrilik değişimi olmadığı anlamına gelir.
Bu kısıtlar, splinelere tek bir, pürüzsüz eğri görünümü kazandırır; yerel olarak bükülürler ama tüm yordayıcı aralığı boyunca kesintisiz akarlar. Görsel olarak, bir polinomun nerede bittiğini ve diğerinin nerede başladığını fark edemezsiniz.
Düğümler, polinom derecesi ve süreklilik kısıtları birlikte splini tanımlar. Bunlardan herhangi birini değiştirirseniz, farklı özellikleri olan farklı bir spline elde edersiniz — sonraki bölümler tam olarak bunu ele alıyor.
Spline Regresyonunda Düğümler (Knots) Nedir?
Düğümler, yordayıcı ekseni boyunca bir polinom parçanın bittiği ve bir sonrakinin başladığı noktalardır.
Bunları splinin eklemleri gibi düşünebilirsiniz. x = 5 için bir düğüm koyarsanız, model 5’in altındaki değerler için bir polinom, üstündeki değerler için farklı bir polinom uydurur. İki polinom düğümde buluşur ve süreklilik kısıtları pürüzsüz bir şekilde bağlandıklarından emin olur. Daha fazla düğüm eklerseniz daha fazla segment elde edersiniz; bu da eğrinin daha fazla yerde bükülebileceği anlamına gelir.
Bu yüzden düğümler, modelin ne kadar esnek olacağını kontrol eden ana kaldıraçtır.
Düğümlerin sayısı, splini oluşturan ayrı polinom parçalarının sayısını belirler. Düğümlerin konumu ise eğrinin nerede şekil değiştirmesine izin verileceğini belirler. İki düğümlü bir spline yalnızca birkaç yerde bükülebilir. Yirmi düğümlü bir spline ise neredeyse her veri noktasını takip edebilir.
Bu nedenle, doğru düğüm sayısını ve yerleşimini seçmek, spline regresyonundaki en önemli karardır.
Çok az düğüm
Çok az düğüm koyarsanız, spline verilerdeki gerçek deseni takip edecek kadar segmente sahip olmaz. Eğri çok katı kalır. Genel olarak esnek olsa da yerel değişimleri yakalayamayan düşük dereceli bir polinom gibi davranır.
Yükselen bir trend, bir plato ve bir düşüş olmak üzere üç belirgin faz içeren verilere tek düğümlü bir spline uydurduğunuzu hayal edin. Yalnızca bir düğümle, splinenin çalışabileceği yalnızca iki segmenti vardır. Yükselişi ve diğer fazlardan birini yakalayabilir, ama üçünü birden değil. Spline verinin şeklini yakalayamadığı yerlerde hatalarla, doğrusal regresyondakiyle aynı sorunla karşılaşırsınız.

Çok az düğüm örneği
Çok az düğüm, eksik uydurmaya yol açar. Model, faydalı olacak kadar esnek değildir.
Çok fazla düğüm
Zıt uçtaki sorun da en az bunun kadar kötüdür. Çok fazla düğüm koyarsanız, spline o kadar çok segment kazanır ki, gerçek deseni değil, verideki gürültüyü uydurmaya başlar. Eğri, her gözlem arasında kıvrılıp bükülerek altta yatan trend yerine rastgele dalgalanmayı kovalar.
Elli noktalı bir veri kümesinde yirmi düğümlü bir spline, bir modelden çok noktaları birleştirme çizimine benzer. Eğitim verisini neredeyse mükemmel uydurur, ancak yeni verideki tahminler güvenilmez olur. Girdideki küçük değişiklikler, çıktıda büyük ve öngörülemez değişikliklere yol açar.

Çok fazla düğüm örneği
Çok fazla düğüm, aşırı uydurmaya yol açar. Model genellemek için fazla esnektir.
Verideki gerçek bükülmeleri yakalayacak kadar çok, ama modelin gürültüyü ezberlemeye başlayacağı kadar fazla olmayan düğümler istersiniz. İzleyen bölümlerde bu kararı pratikte nasıl vereceğiniz anlatılacaktır.
Spline Türleri
Splineler birkaç farklı türe gelir ve seçim çoğunlukla her parçada hangi polinomu kullandığınıza ve eğriye hangi kısıtları koyduğunuza bağlıdır.
Doğrusal splineler
Doğrusal splineler en basit versiyondur. Her segment bir doğru parçasıdır ve segmentler düğümlerde bağlanır.

Doğrusal splineler örneği
Buradaki süreklilik kısıtı gevşektir; düğümde her iki taraftaki değerler eşleşmelidir ancak eğimler değişebilir. Sonuç, her düğümde köşeleri olan, birbirine bağlı doğru parçalarından oluşan bir seri gibi görünür. Basit bükülmeleri ele alacak kadar esnektir, ancak eğri bazen pürüzsüz değildir.
Doğrusal splineler, yalnızca genel eğilimleri yakalamak istediğinizde ve görsel keskinliği dert etmiyorsanız iyi çalışır. Aynı zamanda yorumlaması en kolay olanlardır; çünkü her segment kendi eğimine sahip bir doğrudur.
Kübik splineler
Kübik splineler, çoğu uygulamada varsayılan tercihtir. Her segment kübik bir polinomdur (derece 3) ve süreklilik kısıtları doğrusal splinelere kıyasla daha katıdır.

Kübik splineler örneği
Her düğümde üç koşul sağlanmalıdır: değerler eşleşir, birinci türevler eşleşir ve ikinci türevler eşleşir. Bu da sıçrama, köşe ve ani eğrilik değişimi olmadığı anlamına gelir. Eğri, geçişlerin nerede olduğunu belli etmeden düğümlerden akıp gider.
Kübik, pürüzsüz eğrilik değişimlerine izin veren en düşük polinom derecesidir. Bu yüzden bu kadar popülerdir. Daha yüksek dereceler nadiren faydalı esneklik katar ve modeli kontrol etmeyi zorlaştırır.
Doğal kübik splineler
Doğal kübik splineler, verinin sınırlarında ek kısıtlar getiren bir varyasyondur.

Doğal kübik splineler örneği
Düzenli kübik splinelerin sorunu, özellikle az veri noktasının bulunduğu kenarlarda tuhaf davranabilmeleridir. En soldaki ve en sağdaki segmentler hâlâ kübik polinomlardır ve kübik polinomlar dışa doğru tahminde hızla yukarı veya aşağı salınabilir.
Doğal kübik splineler, sınır düğümlerinde ikinci türevi sıfıra zorlayarak bu durumu aşar. Pratikte bu, eğrinin en dış düğümlerin ötesinde doğrusal hale gelmesi demektir. Dışa doğru tahmin davranışı çok daha stabildir; bu da verinin kenarlarına yakın tahminlerin önemli olduğu durumlarda doğal kübik splineleri daha iyi bir seçenek yapar.
B-splineler
B-splineler (basis splines) splineleri inşa etmenin farklı bir yoludur. Her bir polinom segmenti doğrudan tanımlamak yerine, B-splineler splini temel fonksiyonların ağırlıklı toplamı olarak kurar.

B-splineler örneği
Her temel fonksiyon, yalnızca sınırlı bir bölgede sıfırdan farklı olan küçük bir splinedir. Tam spline, bu temel fonksiyonların her birinin regresyonun tahmin ettiği bir katsayıyla çarpılıp toplanmasıyla elde edilir.
B-splineler sayısal olarak stabildir ve genişletmesi kolaydır. Python ve R’deki modern spline uygulamalarının çoğu, kullanıcı arayüzü sıradan bir spline gibi görünse bile, B-spline temsilleri kullanır. R’de bs() çağırdıysanız veya scikit-learn’de SplineTransformer kullandıysanız, B-splineleri kullanmışsınızdır.
Spline Regresyonu vs Polinom Regresyonu
Hem polinom regresyonu hem de spline regresyonu doğrusal olmayan ilişkileri ele alır, ancak çok farklı yaklaşımlar benimserler. Fark, eğrinin nasıl kurulduğuna dayanır.
Polinom regresyonu
Polinom regresyonu tüm yordayıcı aralığı boyunca tek bir küresel polinom uydurur. Bir derece seçersiniz (2, 3, 5, 10) ve model, tüm verilerdeki hatayı en aza indiren tek bir katsayı kümesi bulur. Eğrinin tek bir denklemi vardır ve bu denklem ilişkiyi her yerde tanımlar.
Kulağa temiz geliyor, ancak bir sorun var. Tek bir polinom, tüm aralık boyunca uyumu dengelemek zorundadır; bu nedenle bir bölgede olan, diğer tüm bölgeleri etkiler. Verinin ortasındaki keskin bir bükülmeyi yakalamak için dereceyi artırırsanız, eğrinin uçlarda sallanmaya başladığını görürsünüz. Bu, önce değindiğim Runge olgusudur — yüksek dereceli polinomlar verinin sınırlarına yakın yerlerde kararsız hale gelir.
Diğer sorun, polinom regresyonunun yerellik kavramına sahip olmamasıdır. x = 5 noktasındaki bir sivrilme, x = 50 noktasındaki uyumun şeklini değiştirebilir; çünkü her gözlem aynı küresel denkleme katkıda bulunur.
Spline regresyonu
Spline regresyonu, yordayıcı aralığını segmentlere ayırır ve her segmentte düşük dereceli bir polinom uydurur. Polinomlar düğümlerde pürüzsüzce bağlanır, ancak her biri, şekli ağırlıklı olarak kendi bölgesindeki veriler tarafından belirlenecek şekilde bağımsızdır.
Bu, size yerel esneklik sağlar. Keskin bükülme olan bir bölge daha kıvrımlı bir polinom alır. Düz eğilim olan bir bölge neredeyse düz bir polinom alır. Ve her segment düşük dereceli olduğu (genellikle kübik) için, hiçbir bölüm uçlarda tuhaf davranamaz. Özellikle verinin sınırlarına yakın yerlerde daha pürüzsüz, daha dengeli bir uyum elde edersiniz.
Yan yana karşılaştırma

Polinom ve spline regresyonu
İlişkiniz hafif doğrusal değilse ve küresel bir uyumla yetiniyorsanız, polinom regresyonu iş görebilir. Daha karmaşık bir deseniniz varsa veya sınırların yakınındaki tahminlere önem veriyorsanız, splineler daha güvenli tercihtir.
Düğüm Sayısı ve Konumunun Seçilmesi
Düğüm seçimi, spline regresyonunda en çok önem taşıyan kısımdır. Çok az düğüm eksik uydurmaya, çok fazla düğüm ise aşırı uydurmaya neden olur. Ve onları nereye yerleştirdiğiniz, modelin hangi desenleri yakalayabileceğini değiştirir.
Birkaç yaklaşım vardır ve çoğu zaman bunların birkaçı bir arada kullanılır.
- Alan bilgisi: Problem hakkında bir şey biliyorsanız, bunu kullanın. Bir klinik çalışma, bilinen klinik eşiklerde düğümler yerleştirebilir. Bir fiyatlandırma modeli, tüketici davranışının değişmesinin beklendiği noktalara düğümler koyabilir. Alan bilgisiyle yönlendirilen düğüm yerleşimi, segmentler gerçek sınırlara karşılık geldiği için en yorumlanabilir yaklaşımdır.
- Eşit aralıklı düğümler: Bir düğüm sayısı seçin ve bunları yordayıcı aralığı boyunca eşit şekilde yerleştirin. Bu, veriniz yordayıcı ekseni boyunca kabaca eşit dağılmışsa iyi çalışır. Bazı bölgelerde yoğun, bazılarında seyrek veri varsa işlemez — eşit aralıklı düğümler, neredeyse hiç veri olmayan bölgelere düşebilir ve bu da uyumu dengesiz yapar.
- Kantile dayalı düğümler: Düğümleri x ekseni üzerindeki eşit konumlara değil, yordayıcının kantillerine yerleştirin. 4 düğüm ve kantil yerleşimle, düğümleri %20, %40, %60 ve %80 yüzdeliklere koyarsınız. Bu, her segmentin yaklaşık olarak aynı sayıda gözlem içermesini garanti eder ve seyrek bölgelerde uyumu daha güvenilir kılar.
- Çapraz doğrulama: Farklı düğüm sayıları dener, her biri için splini uydurur ve ayrılmış verideki performansı karşılaştırırsınız. En düşük doğrulama hatasına sahip yapılandırma kazanır. Bu yaklaşım tahmini ortadan kaldırır ancak hesaplama maliyeti ekler ve sonuç, yine hangi yerleşim stratejisi (eşit, kantil) üzerinde arama yaptığınıza bağlıdır.
Ödünleşim, her regresyon probleminde gördüğünüzle aynıdır: esneklik ile karmaşıklık arasında. Daha fazla düğüm, daha fazla esneklik demektir; bu, modelin daha ince desenleri takip etmesine izin verir ama aynı zamanda gürültünün peşinden gitmesine de imkan tanır. Daha az düğüm, daha istikrarlı ve daha yorumlanabilir bir model demektir; ancak gerçek desenleri kaçırabilir.
Kantillerde yerleştirilmiş 3-5 düğümle başlayın, sonra artıklarınızı kontrol edin. Spline’ın yakalayamadığı sistematik desenler görürseniz, o bölgeye bir düğüm ekleyin. Uyum kıvrımlı görünüyorsa birini kaldırın. Seçimi savunmanız gerektiğinde veya model üretime girecekse çapraz doğrulama kullanmaya değerdir.
Makine Öğrenimi ve İstatistikte Spline Regresyonu
Spline regresyonu, birileri belirli bir fonksiyonel forma bağlı kalmadan pürüzsüz bir doğrusal olmayan etkiyi modellemek istediğinde karşımıza çıkar. İşte yaygın bazı alanlar:
- Zaman serisi trendleri: Yaygın bir kullanım, zaman serisindeki pürüzsüz trendi kısa vadeli dalgalanmalardan ayırmaktır. Yordayıcı olarak zamana spline uydurmak, gürültüye aşırı tepki vermeden yön değişimlerine uyum sağlayan esnek bir trend çizgisi verir. Ekonomistler ve analistler, değişkenin temel gidişatını — GSYH veya hisse fiyatları gibi — doğrusal ya da üstel bir varsayıma bağlanmadan betimlemek istediklerinde bunu sıklıkla kullanırlar.
- Ekonomi ve ekonometri: Bir değişkenin etkisinin aralığı boyunca değiştiği ilişkileri modellemek için splineler kullanılır. Gelirin tüketim üzerindeki etkisi sabit değildir; düşük gelirli haneler yüksek gelirli olanlardan farklı harcar. Bir spline, belirli bir fonksiyonel form varsaymadan bunu görür.
- Sağlık ve biyostatistik: Pek çok sağlık sonucunun yaş, BKİ, kan basıncı veya biyobelirteç düzeyleri gibi yordayıcılarla doğrusal olmayan ilişkileri vardır. Hastalık riski sıklıkla U veya J şeklini izler — her iki uç tehlikelidir, orta güvenlidir. Doğrusal bir model bunu kaçırır. Kübik ve doğal kübik splineler bu etkileri modellemenin standart aracıdır ve klinik araştırmalarda kullanılan istatistik yazılımlarının çoğuna yerleşiktir.
- Çevresel ve ekolojik modelleme: Türlerin veya iklim değişkenlerinin çevresel gradyanlara nasıl tepki verdiğini modellemede de splineler karşımıza çıkar. Sıcaklık, rakım ve yağış gibi değişkenler; tür bolluğu veya ürün verimi gibi sonuçlar üzerinde sıklıkla doğrusal olmayan etkilere sahiptir. Splineler, yanıt eğrisini önceden şeklini belirtmeden uydurmayı sağlar.
Tüm bu durumlarda splineler, gerekli yerlerde esneklik sunar; ilişkiye ait fonksiyonel formu tahmin etmeye zorlamaz. Bu da onları hem keşif amaçlı modelleme için uygun, hem de yorumlanabilirliğin önemli olduğu üretim modelleri için sağlam bir seçenek yapar.
Python’da Spline Regresyonu
Python’da spline regresyonu uydurmanın üç yaygın yolu vardır: ML tarzı bir pipeline için scikit-learn, formül tabanlı model belirtimi için patsy ve istatistiksel çıkarım için statsmodels. Şimdi her birini ele alacağım.
scikit-learn kullanma
scikit-learn size, sayısal bir özelliği B-spline temel fonksiyonlarına dönüştüren SplineTransformer bileşenini sunar. Daha sonra bu özellikleri herhangi bir doğrusal regresyon modeline beslersiniz.
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))

scikit-learn R2 skoru
SplineTransformer 5 düğüm ve kübik polinomlarla spline temelini oluşturur. Ardından, LinearRegression her temel fonksiyon için katsayıları bulur. Burada herhangi bir sklearn regresörünü kullanabilirsiniz — ridge, lasso, dönüştürülmüş özellikler üzerinde doğrusal model uyduran her şey.
Bu yaklaşım sklearn iş akışlarına uyar, ancak standart hata veya p-değeri gibi istatistiksel çıktılar vermez. Bunun için patsy veya statsmodels isteyeceksiniz.
patsy kullanma
patsy, tasarım matrisleri oluşturmak için formül tabanlı bir arayüzdür. Python’da R’nin model formüllerine en yakın şeydir ve statsmodels ile kullanılacak spline özelliklerini oluşturmanın standart yoludur.
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())

patsy model özeti
bs() fonksiyonu, formül içinde patsy’ye 6 serbestlik derecesi ve derece 3 (kübik) ile bir B-spline temeli kurmasını söyler. patsy, doğrudan sm.OLS() içine giden tasarım matrisini döndürür. df parametresi, spline temel fonksiyonlarının sayısını kontrol eder — daha yüksek değerler, daha fazla düğüm eklemeye benzer şekilde daha fazla esneklik sağlar.
Doğal spline istiyorsanız, bs() yerine ns() kullanın:
spline_basis = dmatrix("ns(x, df=6)", data=df, return_type="dataframe")
Formüllerle statsmodels kullanma
statsmodels, patsy ile entegre bir formül API’sine de sahiptir. Tam istatistiksel çıktı ile tek satırlık spline regresyonu istediğinizde en temiz sürüm budur.
import statsmodels.formula.api as smf
model = smf.ols("y ~ bs(x, df=7, degree=3)", data=df).fit()
print(model.summary())

statsmodels model özeti
summary() çıktısı, her spline temel fonksiyonu için katsayıları, standart hataları, p-değerlerini ve alışıldık uyum istatistiklerini verir. Katsayıların kendisi doğrudan yorumlanabilir değildir; çünkü her biri gerçek dünya niceliğine değil, bir temel fonksiyona karşılık gelir. Uyumu, yordayıcı aralığı boyunca tahminleri çizerek yorumlarsınız.
Çoğu istatistiksel iş akışı için statsmodels formül API’si en kullanışlı seçimdir. Splineler bir ML pipeline’ının parçası olduğunda scikit-learn kullanın.
R’da Spline Regresyonu
R, büyük diller arasında splineler için en iyi yerleşik desteğe sahiptir. splines paketi temel R ile birlikte gelir ve iki ana fonksiyonu — bs() ve ns() — herhangi bir regresyon formülü içinde doğrudan çalışır.
bs() fonksiyonu B-spline temeli oluşturur. ns() fonksiyonu doğal kübik spline temeli oluşturur. Her ikisi de R’nin formül sistemi tarafından otomatik olarak modele eklenen spline özelliklerinden oluşan bir matris üretir.
B-splineler için bs() kullanma
# 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)

R'de bs() çıktısı
y ~ bs(x, df = 6, degree = 3) formülü, R’ye x değişkenini derece 3 ve 6 serbestlik dereceli bir B-spline temeliyle değiştirmesini söyler. Geri kalanını R halleder — temel matrisini oluşturur, doğrusal modeli uydurur ve tüm alışıldık tanıların bulunduğu standart bir lm nesnesi üretir.
Tam kontrol istiyorsanız düğüm konumlarını doğrudan geçebilirsiniz:
model <- lm(y ~ bs(x, knots = c(2, 5, 8), degree = 3), data = df)
Bu, x = 2, x = 5 ve x = 8 noktalarına düğümler yerleştirir; R’nin sizin için seçmesine izin vermek yerine.
Doğal splineler için ns() kullanma
Doğal kübik splineler (sınırların ötesinde doğrusal davranış sergileyen tür) için ns() kullanın:
model_natural <- lm(y ~ ns(x, df = 6), data = df)
summary(model_natural)

R'de ns() çıktısı
Sözdizimi aynıdır, ancak sınır davranışı farklıdır. Doğal splineler, verinin kenarlarına yakın tahminlere veya yorumlamaya önem verdiğinizde genellikle daha güvenli tercihtir.
Çıktının yorumlanması
summary() çıktısındaki katsayılar, yorumlanabilir niceliklere değil, spline temel fonksiyonlarına karşılık gelir. Modelin gerçekte ne öğrendiğini görmek için, bir x ızgarası boyunca tahmin edin ve sonucu çizin:
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)

R'de çıktının yorumlanması
R’de standart desen budur: splini uydurur, pürüzsüz bir ızgarada tahmin eder ve eğriyi verinin üzerine bindirirsiniz. R ayrıca aynı formülde spline terimlerini diğer yordayıcılarla birlikte kullanmanıza izin verir:
model_multi <- lm(y ~ ns(x, df = 6) + other_var, data = df)
Bu, aynı modelde x için doğrusal olmayan bir etki ve other_var için doğrusal bir etki uydurur. Bu esneklik, splinelerin R tabanlı istatistiksel iş akışlarında bu kadar yaygın kullanılmasının nedenidir.
Spline Regresyonunun Avantajları
İşte splinelerin daha popüler makine öğrenimi modelleriyle karşılaştırıldığında birkaç avantajı:
- Formu bilmeden doğrusal olmayan ilişkileri modelleme: Belirli bir fonksiyonel şekle bağlı kalmak zorunda değilsiniz. Splineler, eğrinin şeklini verinin belirlemesine izin verir; böylece bükülmeleri, platoları ve yön değişimlerini önceden nerede olacaklarını bilmeden modelleyebilirsiniz.
- Pürüzsüz ve yorumlanabilir uyumlar: Çıktı, kara kutu bir tahmin değil, sürekli bir eğridir. Splini çizebilir, yanıtın yordayıcı aralığı boyunca nasıl değiştiğini görebilir ve teknik olmayan bir kitleye açıklayabilirsiniz.
- Yüksek dereceli polinomlardan daha dengeli: Her segment düşük dereceli bir polinomdur; bu nedenle hiçbir parça uçlarda aşırı davranamaz. Sınır davranışı çok daha kontrollüdür; özellikle doğal kübik splinelerde.
- Mevcut regresyon iş akışlarına uyum sağlar: Splineler, standart doğrusal regresyon içinde çalışır. Onları diğer yordayıcılarla, düzenlileştirmeyle, karma etkilerle ve OLS üzerine kurulan diğer araçlarla birleştirebilirsiniz.
Spline Regresyonunun Sınırlamaları
Çoğu model gibi, splineler de bilmeniz gereken birkaç ödünleşimle gelir:
- Zor olan kısım düğüm seçimidir: Düğüm sayısını ve konumunu seçmek emek ister. Varsayılanlar bazen iyidir, ancak pek çok durumda iyi bir uyum için çapraz doğrulamaya veya alan bilgisine ihtiyaç duyarsınız. Her zaman işe yarayan tek bir kural yoktur.
- Daha fazla düğümle yorumlama zorlaşır: Üç düğümlü bir spline yorumlamak basittir. Yirmi düğümlü bir spline için öyle değildir. Eğriyi hâlâ çizebilirsiniz, ancak modelin ne yaptığını sıkı bir şekilde açıklamak çok daha zorlaşır.
- Aşırı uydurma hâlâ mümkündür: Splineler, yüksek dereceli polinomlardan daha dengelidir; ancak aşırı uydurmaya bağışık değildir. Çok fazla düğüm, kötü düğüm yerleşimi, çok sayıda aykırı değer veya küçük örneklem büyüklüğü; eğitim verisini iyi uyduran, ancak yeni veride başarısız olan bir model üretebilir.
- Katsayılar doğrudan anlamlı değildir: Uydurulan katsayılar, gerçek dünya niceliklerine değil, temel fonksiyonlara karşılık gelir. Doğrusal regresyondaki gibi “x’te bir birim artış y’yi beta kadar değiştirir” diyemezsiniz. Uyumu görsel olarak yorumlamanız gerekir.
Spline Regresyonda Yaygın Hatalar
Şimdi, spline regresyonunda yeni başlayanların yaptığı birkaç hatayı ele alayım:
- Çok fazla düğüm kullanmak: Yeni başlayanlar, uyum eğitim verisinde görsel olarak iyi görünene kadar düğüm eklerler. Bu, klasik bir aşırı uydurma tuzağıdır. Spline her gözlem arasında kıvrılıp bükülüyorsa, çok fazla düğümünüz var demektir. Çapraz doğrulama yapın veya daha az düğümle başlayın ve yalnızca artıklar net bir desen gösterdiğinde ekleyin.
- Çok az düğüm kullanmak ve verinin doğrusal olduğunu varsaymak: Zıt hata. Bir veya iki düğümlü bir spline uydurur ve artıklar hâlâ eğrilik gösterirse, model eksik uyduruyordur. Spline, gerçek deseni takip edecek kadar segmente sahip değildir. Artıkların bozuk olduğu bölgelere daha fazla düğüm ekleyin.
- Sınır davranışını yanlış anlamak: Düzenli kübik splineler, verinin kenarlarında tutarsız davranabilir. Sınırların yakınında (veya ötesinde) tahmin yapıyorsanız, doğal kübik splineler kullanın. Sınır düğümlerinin ötesinde doğrusal davranışı zorlarlar ve düzenli kübik splinelerin üretebileceği salınımlardan kaçınırlar.
- Splineleri doğrudan kısıtsız doğrusal olmayan modellerle karşılaştırmak: Splineler, sinir ağları veya rastgele ormanlar olmaya çalışmazlar. Bir splini, ham kestirim doğruluğunda kısıtsız bir kara kutu modelle kıyaslarsanız, kara kutu model sıklıkla ham performansta kazanır. Mesele bu değildir. Splineler, yorumlanabilirlikte ve geleneksel istatistiksel çıkarıma entegre olabilme becerisinde kazanır.
Spline Regresyonu vs Diğer Doğrusal Olmayan Modelleme Teknikleri
Splineler, doğrusal olmayan ilişkileri modellemenin tek yolu değildir; ancak yorumlanabilirliğe önem veriyorsanız faydalıdır. İşte en yaygın alternatiflerle karşılaştırması.
Polinom regresyonu
Polinom regresyonu tek bir küresel denklem kullanır. Belirtmesi daha basittir ancak özellikle sınır noktalarında daha az stabildir. İlişkinin birden fazla bükülmesi olduğunda, splineler polinomları esneklik ve stabilitede geride bırakır. Polinomlar yalnızca çok düşük derecelerde (2 veya 3) yorumlaması daha kolaydır. Bunun ötesinde, splineler hem daha güvenilir hem de daha yorumlanabilirdir.
Genelleştirilmiş Toplanabilir Modeller (GAM)
GAM’ler esasen büyük ölçekte yapılan splinelerdir. Bir GAM, her yordayıcı için bir splini bağımsız olarak uydurmanıza ve bunları toplamsal olarak birleştirmenize olanak tanır. Spline regresyonunu tek değişkenli bir GAM, GAM’i ise birden fazla değişken üzerinde splinelerin toplamı olarak düşünebilirsiniz.
GAM’ler, birden fazla doğrusal olmayan yordayıcıyı, her biri için tek tek spline uydurmaktan daha temiz ele alır. Ayrıca doğru esneklik miktarını seçen yumuşatma cezaları içerirler; bu da düğüm seçimi işinin bir kısmını ortadan kaldırır. Birden fazla yordayıcıyla çalışıyor ve bunlardan birkaçının doğrusal olmayan işlenmesi gerekiyorsa, GAM’ler genellikle daha iyi seçenektir.
Karar ağaçları
Karar ağaçları tamamen farklı bir yaklaşım benimser. Pürüzsüz bir eğri uydurmak yerine, yordayıcı uzayını dikdörtgen bölgelere böler ve her bölgede sabit bir değer tahmin eder. Sonuç, bir basamak (step) fonksiyonudur.
Ağaçlar bazı açılardan splinelerden daha esnektir — etkileşimleri ve ani değişimleri modelleyebilirler. Ancak uydurulan fonksiyon pürüzsüz veya sürekli değildir. Ayrıca seyrek verili bölgelerde o kadar iyi genellemez. Pürüzsüzlüğe ve dengeli dışa doğru tahmine önem veriyorsanız splineler daha iyidir. Çok sayıda değişken arasında keskin sınırları veya etkileşimleri modellemek istiyorsanız ağaçlar daha iyidir.
Neden Spline Regresyonu Önemlidir
Splineler uygulamalı istatistikte her yerdedir. Klinik araştırmalarda, ekonomik analizde, çevre biliminde, zaman serisi modellemede ve kara kutu bir model kullanmadan pürüzsüz bir doğrusal olmayan etkiyi modellemek isteyen herkesin bulunduğu alanlarda karşımıza çıkarlar.
Bunun nedeni sundukları dengedir — dağınık verilerle başa çıkacak kadar esneklik ve yorumlanabilir ve stabil kalacak kadar yapı.
Ayrıca daha gelişmiş yöntemler için temel oluştururlar. Genelleştirilmiş Toplanabilir Modeller doğrudan splineler üzerine kuruludur, yumuşatma splineleri fikri yerleşik düzenlileştirme ile genişletir ve modern doğrusal olmayan regresyon tekniklerinin birçoğu spline temelleri kullanır. Bunlardan herhangi birini anlamak istiyorsanız önce splineleri anlamalısınız.
Yani splineler, hem pratik oldukları hem de sonraki birçok şey için yapı taşı oldukları için önemlidir. En güçlü model değillerdir, ancak en güvenilir olanlar arasındadırlar — ve çoğu zaman önemli olan da budur.
Sonuç
Spline regresyonu, düğüm adı verilen noktalarda parça parça polinomları birleştirerek doğrusal olmayan ilişkileri modeller. Fikir budur; gerisi bunun varyasyonlarıdır.
Düğümler ve pürüzsüzlük, kafanızda oturtmanız gereken iki fikirdir. Geri kalan her şey (spline türleri, temel temsiller, R ve Python’da uygulama) bu iki kavramla çalışmanın farklı yollarıdır.
Kendi veriniz üzerinde birkaç spline türünü deneyin. Kübik, doğal kübik ve B-splineleri karşılaştırın. Düğümleri kaydırın ve ne olduğunu görün. Deneyin; çünkü uyumun görsel doğası, her seçimin ne yaptığını görmeyi kolaylaştırır.
Splinelerin ve daha birçok algoritmanın arkasındaki matematiğe daha derinlemesine dalmak istiyorsanız, şu programımıza kaydolun: Python ile Makine Öğrenimi Bilimcisi. 2026’da işe hazır olmak için ihtiyacınız olan her şeyi içerir.
Spline Regresyonu SSS
Spline regresyonu basitçe nedir?
Spline regresyonu, yordayıcı aralığını segmentlere ayırıp her segmente küçük bir polinom uydurarak verideki eğrisel ilişkileri modelleme yoludur. Segmentler, düğüm adı verilen noktalarda pürüzsüzce bağlanır; böylece ortaya tek bir sürekli eğri çıkar. Doğrusal regresyondan daha esnektir ve yüksek dereceli polinom regresyonundan daha stabildir.
Doğrusal regresyon yerine spline regresyonunu ne zaman kullanmalıyım?
Yordayıcı ile sonuç arasındaki ilişki düz bir çizgi olmadığında spline regresyonunu kullanın. Doğrusal bir model artıklarında desenler bırakıyorsa — örneğin, hatalar verinin ortasında pozitif, uçlarda negatifse — bu, ilişkinin doğrusal olmadığına işarettir.
Spline regresyonunda düğümler nedir?
Düğümler, bir polinom segmentinin bittiği ve bir sonrakinin başladığı yordayıcı ekseni üzerindeki noktalardır. Splinenin ne kadar esnek olabileceğini kontrol ederler. Daha fazla düğüm, eğrinin daha fazla yerde bükülebilmesi demektir. Doğru düğüm sayısı ve yerleşimini seçmek, spline regresyonundaki temel karardır. Çok az olursa eksik uydurma, çok fazla olursa aşırı uydurma olur.
Kübik splineler ile doğal kübik splineler arasındaki fark nedir?
Her ikisi de düğümler arasında kübik polinomlar uydurur; ancak verinin sınırlarındaki davranışları farklıdır. Düzenli kübik splineler, uçlarda hâlâ tam bir kübik polinom oldukları için beklenmedik davranabilir. Doğal kübik splineler, en dış düğümlerin ötesinde eğriyi doğrusal olmaya zorlar; bu da sınırlara yakın veya sınırların ötesindeki tahminleri çok daha stabil kılar.
Bir spline modelinde düğüm sayısını nasıl seçerim?
Her segmentte benzer sayıda gözlem olacak şekilde düğümleri yordayıcının kantillerine yerleştirerek 3-5 düğümle başlayın. Spline’ın yakalayamadığı desenleri gösteren artıklar görürseniz, o bölgeye bir düğüm ekleyin. Daha titiz bir yaklaşım için, farklı düğüm sayılarının çapraz doğrulamasını yapın ve en düşük doğrulama hatasına sahip yapılandırmayı seçin.
