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.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir