Python'da ridge regresyon (adım adım)
Ridge regresyonu, verilerde çoklu bağlantı mevcut olduğunda regresyon modeline uyum sağlamak için kullanabileceğimiz bir yöntemdir.
Özetle, en küçük kareler regresyonu, kalan kareler toplamını (RSS) en aza indiren katsayı tahminlerini bulmaya çalışır:
RSS = Σ(y ben – ŷ ben )2
Altın:
- Σ : Toplam anlamına gelen bir Yunan sembolü
- y i : i’inci gözlem için gerçek yanıt değeri
- ŷ i : Çoklu doğrusal regresyon modeline dayalı olarak tahmin edilen yanıt değeri
Tersine, sırt regresyonu aşağıdakileri en aza indirmeyi amaçlar:
RSS + λΣβ j 2
burada j 1’den p öngörücü değişkenlere gider ve λ ≥ 0’dır.
Denklemdeki bu ikinci terim çekilme cezası olarak bilinir. Sırt regresyonunda, λ için mümkün olan en düşük MSE testini (ortalama kare hatası) üreten bir değer seçeriz.
Bu eğitimde Python’da ridge regresyonunun nasıl gerçekleştirileceğine ilişkin adım adım bir örnek sunulmaktadır.
Adım 1: Gerekli paketleri içe aktarın
İlk olarak Python’da ridge regresyonunu gerçekleştirmek için gerekli paketleri içe aktaracağız:
import pandas as pd
from numpy import arange
from sklearn. linear_model import Ridge
from sklearn. linear_model import RidgeCV
from sklearn. model_selection import RepeatedKFold
2. Adım: Verileri yükleyin
Bu örnek için mtcars adı verilen ve 33 farklı araba hakkında bilgi içeren bir veri kümesi kullanacağız. Yanıt değişkeni olarak hp’yi ve yordayıcılar olarak aşağıdaki değişkenleri kullanacağız:
- mpg
- ağırlık
- bok
- qsec
Aşağıdaki kod bu veri kümesinin nasıl yüklenip görüntüleneceğini gösterir:
#define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"
#read in data
data_full = pd. read_csv (url)
#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]
#view first six rows of data
data[0:6]
mpg wt drat qsec hp
0 21.0 2.620 3.90 16.46 110
1 21.0 2.875 3.90 17.02 110
2 22.8 2.320 3.85 18.61 93
3 21.4 3.215 3.08 19.44 110
4 18.7 3,440 3.15 17.02 175
5 18.1 3.460 2.76 20.22 105
Adım 3: Ridge Regresyon Modelini Yerleştirin
Daha sonra, ridge regresyon modeline uyum sağlamak için sklearn’in RidgeCV() fonksiyonunu kullanacağız ve ceza terimi için kullanılacak en uygun alfa değerini bulmak amacıyla k-katlı çapraz doğrulama gerçekleştirmek için RepeatedKFold() fonksiyonunu kullanacağız.
Not: Python’da “lambda” yerine “alfa” terimi kullanılır.
Bu örnek için k = 10 kat seçeceğiz ve çapraz doğrulama işlemini 3 kez tekrarlayacağız.
Ayrıca RidgeCV() işlevinin varsayılan olarak yalnızca 0,1, 1 ve 10 alfa değerlerini test ettiğini unutmayın. Ancak kendi alfa aralığımızı 0,01’lik artışlarla 0’dan 1’e kadar ayarlayabiliriz:
#define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]
#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )
#define model
model = RidgeCV(alphas= arange (0, 1, 0.01), cv=cv, scoring=' neg_mean_absolute_error ')
#fit model
model. fit (x,y)
#display lambda that produced the lowest test MSE
print( model.alpha_ )
0.99
Testin MSE’sini en aza indiren lambda değeri 0,99 olarak çıkıyor.
Adım 4: Tahminlerde bulunmak için modeli kullanın
Son olarak, yeni gözlemler hakkında tahminlerde bulunmak için son sırt regresyon modelini kullanabiliriz. Örneğin, aşağıdaki kod, aşağıdaki özelliklere sahip yeni bir arabanın nasıl tanımlanacağını gösterir:
- mpg: 24
- ağırlık: 2,5
- fiyat: 3,5
- qsn: 18,5
Aşağıdaki kod, bu yeni gözlemin hp değerini tahmin etmek için uygun sırt regresyon modelinin nasıl kullanılacağını gösterir:
#define new observation
new = [24, 2.5, 3.5, 18.5]
#predict hp value using ridge regression model
model. predict ([new])
array([104.16398018])
Model, girilen değerlere göre bu arabanın 104.16398018 hp değerine sahip olacağını öngörüyor.
Bu örnekte kullanılan Python kodunun tamamını burada bulabilirsiniz.