Python'da kement regresyon (adım adım)
Kement 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, kement regresyonu aşağıdakileri en aza indirmeyi amaçlar:
RSS + λΣ| βj |
burada j 1’den p öngörücü değişkenlere gider ve λ ≥ 0’dır.
Denklemdeki bu ikinci terim çekilme cezası olarak bilinir. Kement regresyonunda, λ için mümkün olan en düşük MSE (ortalama kare hatası) testini üreten bir değer seçeriz.
Bu eğitimde Python’da kement 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
Öncelikle Python’da kement regresyonu gerçekleştirmek için gerekli paketleri içe aktaracağız:
import pandas as pd
from numpy import arange
from sklearn. linear_model import LassoCV
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: Kement Regresyon Modelini Yerleştirin
Daha sonra, kement regresyon modeline uyum sağlamak için sklearn’in LassoCV() 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 LassoCV() 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 = LassoCV(alphas= arange (0, 1, 0.01), cv=cv, n_jobs= -1 ) #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 kement 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 kement regresyon modelinin nasıl kullanılacağını gösterir:
#define new observation
new = [24, 2.5, 3.5, 18.5]
#predict hp value using lasso regression model
model. predict ([new])
array([105.63442071])
Model, girilen değerlere göre bu otomobilin 105.63442071 hp değerine sahip olacağını öngörüyor.
Bu örnekte kullanılan Python kodunun tamamını burada bulabilirsiniz.