Ana içeriğe atla

Python ile Lasso ve Ridge Regresyonu Eğitimi

Regresyonda lasso ve ridge tekniklerini öğrenin. Yöntemleri ayrıntılı olarak karşılaştırın ve analiz edin.
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Doğrusal Modellere Giriş

Bu uygulamalı alıştırma ile Python’da Lasso ve Ridge Regresyonu pratiği yapın.

Doğrusal regresyon, en temel ve en yaygın kullanılan kestirim algoritması olarak kabul edilen bir tür doğrusal modeldir. Bunu, basit ama etkili mimarisinden ayrı düşünemeyiz. Bir doğrusal model, girdi değişken(ler)i 𝑥 ile çıktı değişkeni y arasında doğrusal bir ilişki varsayar. Doğrusal bir modelin denklemi şöyle görünür:

Bu 1.1 numaralı denklemde, n adet özelliğe sahip bir doğrusal modeli gösteriyoruz. w, her özelliğe atanan katsayılar (veya ağırlıklar) olarak kabul edilir; bunlar, sonuca y olan etkilerinin bir göstergesidir. Örneğin, sıcaklığın dondurma satışlarının kamu tatili olmasından daha büyük bir belirleyicisi olduğunu varsayalım. Doğrusal modelimizde sıcaklığa atanan ağırlık, kamu tatili değişkeninden daha büyük olacaktır.

Doğrusal bir modelin hedefi, 1.2 numaralı denklemdeki maliyet fonksiyonu aracılığıyla ağırlığı (b) optimize etmektir. Maliyet fonksiyonu, tahminler ile gerçek değerler arasındaki hatayı tek bir gerçek sayıyla temsil edecek şekilde hesaplar. Maliyet fonksiyonu, veri kümesindeki n örneğin ortalama hatasıdır ve aşağıda şu şekilde gösterilir:

Doğrusal regresyon modelinin maliyet fonksiyonu

Yukarıdaki denklemde yi gerçek değerdir ve bu da doğrusal denklemimizden tahmin edilen değerdir; burada M satır sayısını, P ise özellik sayısını ifade eder.

Python Öğrenmeye Ücretsiz Başlayın

Python ile statsmodels kullanarak Regresyona Giriş

BasicSkill Level
4 sa
63.6K learners
Python'da statsmodels ile regresyon analizi uygulayarak, analiz ederek ve yorumlayarak konut fiyatlarını ve reklam tıklama oranını tahmin edin.
See DetailsRight Arrow
Start Course

Düzenlileştirme

Modelleri eğitirken karşılaşılabilecek iki temel sorun vardır: aşırı öğrenme (overfitting) ve yetersiz öğrenme (underfitting).

  • Aşırı öğrenme, modelin eğitim setinde iyi performans gösterip görülmemiş (test) veride o kadar iyi performans gösteremediği durumdur.
  • Yetersiz öğrenme ise modelin ne eğitim setinde ne de test setinde iyi performans sergilediği durumdur.

Özellikle düzenlileştirme, verinin aşırı öğrenilmesini önlemek için uygulanır; bu, özellikle eğitim ve test seti performansları arasında büyük bir varyans olduğunda önemlidir. Düzenlileştirme ile eğitimde kullanılan özellik sayısı sabit tutulur, ancak 1.1 numaralı denklemde görülen katsayıların (w) büyüklüğü azaltılır.

Aşağıdaki konut fiyatlarını tahmin etmeye yönelik katsayı görselini ele alın. Oldukça fazla sayıdaki yordayıcı arasında RM ve RAD en büyük katsayılara sahiptir. Bunun sonucu olarak, konut fiyatları bu iki özellik tarafından çok daha güçlü biçimde yönlendirilecek ve genellenebilir örüntüler öğrenilmediği için aşırı öğrenmeye yol açacaktır.

Doğrusal modellerde model karmaşıklığını azaltmanın ve aşırı öğrenmeyi önlemenin farklı yolları vardır. Bunlar arasında ridge ve lasso regresyon modelleri bulunur.

Lasso Regresyona Giriş

Bu, küçültme (Shrinkage) yöntemi kullanan ve cezalandırılmış regresyon yöntemi olarak da anılan bir özellik seçimi düzenlileştirme tekniğidir. Lasso, hem düzenlileştirme hem de model seçimi için kullanılan Least Absolute Shrinkage and Selection Operator ifadesinin kısaltmasıdır. Bir model L1 düzenlileştirme tekniğini kullanıyorsa lasso regresyonu adını alır.

Düzenlileştirme için Lasso Regresyonu

Bu küçültme tekniğinde, yukarıdaki 1.1 numaralı denklemden doğrusal modelde belirlenen katsayılar, alfa α (bazen lambda) adı verilen bir cezalandırma faktörü tanıtılarak ortalama gibi merkezi bir noktaya doğru küçültülür.

Alfa (α), denklemde uygulanacak küçültme (veya kısıtlama) miktarını belirten ceza terimidir. Alfa sıfıra ayarlandığında bunun 1.2 numaralı denklemdeki doğrusal regresyon modeline denk olduğunu görürsünüz; daha büyük bir değer ise optimizasyon fonksiyonunu daha fazla cezalandırır. Dolayısıyla lasso regresyonu, katsayıları küçültür ve model karmaşıklığını ile çoklu eşdoğrusallığı azaltmaya yardımcı olur.

Alfa (α) sıfır ile sonsuz arasında herhangi bir gerçek değer olabilir; değer ne kadar büyükse cezalandırma o kadar agresiftir.

Model Seçimi için Lasso Regresyonu

Katsayılar sıfıra doğru küçültüldüğünden, cezalandırma uygulandığında veri kümesindeki daha az önemli özellikler elenir. Belirlenen alfa değerine bağlı olarak bu katsayıların küçülmesi, girdi değişkenlerinin etkili biçimde kaldırılmasıyla bir tür otomatik özellik seçimine yol açar.

Ridge Regresyonu

Lasso regresyona benzer şekilde, ridge regresyonu da bir ceza faktörü tanıtarak katsayılara benzer bir kısıtlama uygular. Ancak lasso regresyonu katsayıların büyüklüğünü dikkate alırken, ridge regresyonu karesini alır.

Ridge regresyonu L2 Düzenlileştirme olarak da anılır.

Lasso Model Seçimi için Neden Kullanılabilir de Ridge Neden Kullanılamaz

Hem lasso (sol) hem de ridge (sağ) modellerinin geometrisini düşündüğümüzde, eliptik konturlar (kırmızı daireler) her biri için maliyet fonksiyonlarını gösterir. Ceza faktörüyle tanıtılan kısıtların gevşetilmesi, kısıtlı bölgenin (elmas, daire) büyümesine yol açar. Bunu sürdürdüğümüzde elipsin merkezine ulaşırız; burada hem lasso hem de ridge modellerinin sonuçları doğrusal regresyon modeline benzer hale gelir.

Ancak her iki yöntemde de katsayılar, eliptik konturların kısıt bölgesine ilk değdiği noktayı bularak belirlenir. Lasso regresyonunda kısıtlı bölge grafikte elmas biçimini aldığı için, eliptik bölgeler bu köşelerle her kesiştiğinde en az bir katsayı sıfıra iner. Ridge regresyonunda ise bölge dairesel olduğundan, değerler sıfıra çok yaklaştırılabilir ama asla tam olarak sıfır olamaz.

Python Uygulaması

Bu uygulamada Sklearn’de yer alan Boston konut veri setini kullanacağız. Görmeyi amaçladıklarımız:

  1. Python’da ridge ve lasso regresyonunun nasıl yapılacağı
  2. Sonuçların doğrusal regresyon modeliyle karşılaştırılması

Veri İçeri Alma ve Keşif (EDA)

#libraries
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge, RidgeCV, Lasso
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_boston

#data
boston = load_boston()
boston_df=pd.DataFrame(boston.data,columns=boston.feature_names)
#target variable
boston_df['Price']=boston.target
#preview
boston_df.head()

#Exploration
plt.figure(figsize = (10, 10))
sns.heatmap(boston_df.corr(), annot = True)
#There are cases of multicolinearity, we will drop a few columns
boston_df.drop(columns = ["INDUS", "NOX"], inplace = True)

#pairplot
sns.pairplot(boston_df)

#we will log the LSTAT Column
boston_df.LSTAT = np.log(boston_df.LSTAT)

LSTAT sütununu, fiyat sütunuyla doğrusal bir ilişkisi olmadığı için logaritmasını aldığımıza dikkat edin. Doğrusal modeller x ve y değişkenleri arasında doğrusal bir ilişki varsayar. 

Veri Bölme ve Ölçekleme

#preview
features = boston_df.columns[0:11]
target = boston_df.columns[-1]

#X and y values
X = boston_df[features].values
y = boston_df[target].values

#splot
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=17)

print("The dimension of X_train is {}".format(X_train.shape))
print("The dimension of X_test is {}".format(X_test.shape))
#Scale features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

Çıktı:

Doğrusal ve Ridge Regresyon Modelleri

Bir doğrusal ve bir ridge regresyon modeli kurup katsayıları bir grafikte karşılaştıracağız. Eğitim ve test seti skorları da modelin ne kadar iyi performans gösterdiğini değerlendirmemize yardımcı olacak.

#Model
lr = LinearRegression()

#Fit model
lr.fit(X_train, y_train)

#predict
#prediction = lr.predict(X_test)

#actual
actual = y_test

train_score_lr = lr.score(X_train, y_train)
test_score_lr = lr.score(X_test, y_test)

print("The train score for lr model is {}".format(train_score_lr))
print("The test score for lr model is {}".format(test_score_lr))


#Ridge Regression Model
ridgeReg = Ridge(alpha=10)

ridgeReg.fit(X_train,y_train)

#train and test scorefor ridge regression
train_score_ridge = ridgeReg.score(X_train, y_train)
test_score_ridge = ridgeReg.score(X_test, y_test)

print("\nRidge Model............................................\n")
print("The train score for ridge model is {}".format(train_score_ridge))
print("The test score for ridge model is {}".format(test_score_ridge))

Alfa değeri 10 kullanıldığında, modelin eğitim ve test verisindeki değerlendirmesi ridge modelinin doğrusal regresyon modelinden daha iyi performans gösterdiğini göstermektedir.

Ayrıca hem doğrusal hem de ridge modellerine ait katsayıları da görselleştirebiliriz.

plt.figure(figsize = (10, 10))
plt.plot(features,ridgeReg.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Ridge; $\alpha = 10$',zorder=7)
#plt.plot(rr100.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Ridge; $\alpha = 100$')
plt.plot(features,lr.coef_,alpha=0.4,linestyle='none',marker='o',markersize=7,color='green',label='Linear Regression')
plt.xticks(rotation = 90)
plt.legend()
plt.show()

Lasso Regresyonu

#Lasso regression model
print("\nLasso Model............................................\n")
lasso = Lasso(alpha = 10)
lasso.fit(X_train,y_train)
train_score_ls =lasso.score(X_train,y_train)
test_score_ls =lasso.score(X_test,y_test)

print("The train score for ls model is {}".format(train_score_ls))
print("The test score for ls model is {}".format(test_score_ls))

Katsayıları da görselleştirebiliriz.

pd.Series(lasso.coef_, features).sort_values(ascending = True).plot(kind = "bar")

Önceden, kısıt bölgesinin elmas biçimi nedeniyle lasso modelinde katsayıların sıfıra inebileceğini belirtmiştik. Bu durumda, alfa değerinin 10 olarak kullanılması modelin aşırı cezalandırılmasına ve tüm değerlerin sıfıra küçültülmesine yol açmaktadır. Bunu, yukarıdaki şekilde gösterildiği gibi modelin katsayılarını görselleştirerek net biçimde görebiliriz.

Sklearn’de Çapraz Doğrulama ile En Uygun Alfa Değerlerini Seçme

En uygun kısıtlama değerini bulmak için farklı alfa değerlerini denememiz gerekebilir. Bu durumda sklearn paketindeki çapraz doğrulama modelini kullanabiliriz. Bu, farklı alfa değerleri kombinasyonlarını dener ve ardından en iyi modeli seçer.

#Using the linear CV model
from sklearn.linear_model import LassoCV

#Lasso Cross validation
lasso_cv = LassoCV(alphas = [0.0001, 0.001,0.01, 0.1, 1, 10], random_state=0).fit(X_train, y_train)


#score
print(lasso_cv.score(X_train, y_train))
print(lasso_cv.score(X_test, y_test))

Çıktı:

Model, LassoCV fonksiyonunda belirttiğim farklı alfa değerleri üzerinde eğitilecektir. Alfa değerlerini elle değiştirme zahmetini ortadan kaldırarak modelin daha iyi performans gösterdiğini gözlemleyebiliriz.

Lasso modelinden elde edilen katsayıları diğer modellerle (doğrusal ve ridge) karşılaştırabiliriz.

#plot size
plt.figure(figsize = (10, 10))
#add plot for ridge regression
plt.plot(features,ridgeReg.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Ridge; $\alpha = 10$',zorder=7)

#add plot for lasso regression
plt.plot(lasso_cv.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'lasso; $\alpha = grid$')

#add plot for linear model
plt.plot(features,lr.coef_,alpha=0.4,linestyle='none',marker='o',markersize=7,color='green',label='Linear Regression')

#rotate axis
plt.xticks(rotation = 90)
plt.legend()
plt.title("Ridge, Lasso ve Doğrusal regresyon modelinin karşılaştırma grafiği")
plt.show()

Not: Benzer bir yaklaşım ridge regresyon modeli için de uygulanabilir ve daha iyi sonuçlara yol açabilir. Sklearn paketinde RidgeCV fonksiyonu benzer şekilde çalışır.

#Using the linear CV model
from sklearn.linear_model import RidgeCV

#Lasso Cross validation
ridge_cv = RidgeCV(alphas = [0.0001, 0.001,0.01, 0.1, 1, 10]).fit(X_train, y_train)

#score
print("The train score for ridge model is {}".format(ridge_cv.score(X_train, y_train)))
print("The train score for ridge model is {}".format(ridge_cv.score(X_test, y_test))) 


Diğer regresyon türleri hakkında bilgi edinmek için Python’da lojistik regresyon ve Python’da doğrusal regresyon eğitimlerimize göz atın. 

Sonuç 

Ridge ve lasso regresyon modellerinin bir uygulamasını ve bu tekniklerin arkasındaki kuramsal ve matematiksel kavramları gördük. Bu eğitimden bazı temel çıkarımlar şunlardır:

  1. Hem ridge hem de lasso regresyon için maliyet fonksiyonu benzerdir. Ancak ridge regresyon, katsayıların karesini alırken lasso büyüklüğünü alır.
  2. Lasso regresyonu, kısıtlı bölgenin geometrisi katsayı değerlerinin sıfıra inmesine izin verdiği için otomatik özellik seçimi amacıyla kullanılabilir.
  3. Ridge veya lasso modelinde alfa değerinin sıfır olması, regresyon modeliyle benzer sonuçlar verir.
  4. Alfa değeri ne kadar büyükse cezalandırma o kadar agresif olur.

Python uygulaması için daha sağlam ve eksiksiz bir defteri burada bulabilir veya Python’da Regresyona Giriş kursumuzla regresyonlara derinlemesine dalabilirsiniz. 

Konular
Python
Makine Öğrenimi
Büyük Veri
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör