← Modül 4

Ridge & Lasso: Aşırı Uyumu Kontrol Etme

Düzenlileştirme teknikleri ile modelinizin aşırı uyum (overfitting) yapmasını engelleyin. Ridge (L2) ve Lasso (L1) farklarını interaktif olarak keşfedin.

⚡ Hızlı Özet: Ridge vs Lasso

OLS (Normal)
Hiç düzenlileştirme yok
Ridge (L2)
Katsayıları küçültür
Lasso (L1)
Değişken seçimi yapar

OLS (Normal Regresyon)

Sadece hata karelerini minimize eder. Aşırı uyuma yatkındır.

min Σ(y - ŷ)²

Ridge (L2 Düzenlileştirme)

Katsayıların karelerini cezalandırır. Tüm değişkenleri tutar.

min Σ(y - ŷ)² + αΣβ²

Lasso (L1 Düzenlileştirme)

Katsayıların mutlak değerlerini cezalandırır. Değişken seçimi yapar.

min Σ(y - ŷ)² + αΣ|β|

📐 MATEMATİKSEL TEMEL

OLS (En Küçük Kareler)

min Σ(yᵢ - ŷᵢ)²

Sadece hataları minimize eder

Ridge (L2)

min Σ(yᵢ - ŷᵢ)² + αΣβⱼ²

Katsayı karelerini cezalandırır

Lasso (L1)

min Σ(yᵢ - ŷᵢ)² + αΣ|βⱼ|

Katsayı mutlak değerlerini cezalandırır

α (Alpha) Parametresi

α = 0: OLS ile aynı (düzenlileştirme yok)
α → ∞: Tüm katsayılar sıfıra gider
Optimal α: Cross-validation ile bulunur

🎮 İNTERAKTİF RIDGE & LASSO DEMOSU

Alpha değerini değiştirerek Ridge ve Lasso'nun katsayıları nasıl etkilediğini görün!

0 (OLS) 5 10 (Güçlü)

📊 Katsayı Değişimleri

🎯 Ridge (L2) Özellikleri

  • Tüm değişkenleri modelde tutar
  • Katsayıları sıfıra yaklaştırır ama tam sıfır yapmaz
  • Çoklu doğrusallık (multicollinearity) problemlerinde iyidir
  • Tüm değişkenlerin önemli olduğu durumlarda kullanılır

💡 Lasso (L1) Özellikleri

  • Değişken seçimi yapar (bazı katsayıları tam sıfır yapar)
  • Özellikle çok sayıda değişken olduğunda kullanışlıdır
  • Daha yorumlanabilir modeller oluşturur
  • Feature selection (özellik seçimi) için idealdir

🏠 GERÇEK HAYAT ÖRNEKLERİ

📈 Ev Fiyat Tahmini

Değişkenler: 50+ özellik (metrekare, oda sayısı, konum, vs.)
Problem: Çok fazla değişken, bazıları gereksiz
Çözüm: Lasso kullan → önemli 15-20 değişken seçilsin

🛒 Müşteri Segmentasyonu

Değişkenler: 20 demografik özellik
Problem: Tüm değişkenler önemli ama çoklu doğrusallık var
Çözüm: Ridge kullan → tüm değişkenleri koru ama katsayıları stabilize et

🐍 PYTHON'DA RIDGE & LASSO

Temel Kullanım

from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import cross_val_score
import numpy as np

# Veri hazırlığı
X = ...  # Özellikler
y = ...  # Hedef değişken

# Ridge Regresyon
ridge = Ridge(alpha=1.0)
ridge_scores = cross_val_score(ridge, X, y, cv=5, scoring='r2')
print(f"Ridge CV R²: {np.mean(ridge_scores):.3f}")

# Lasso Regresyon
lasso = Lasso(alpha=0.1)
lasso_scores = cross_val_score(lasso, X, y, cv=5, scoring='r2')
print(f"Lasso CV R²: {np.mean(lasso_scores):.3f}")

# Katsayıları inceleme
ridge.fit(X, y)
lasso.fit(X, y)

print("Ridge katsayıları:", ridge.coef_)
print("Lasso katsayıları:", lasso.coef_)
print("Lasso sıfır katsayı sayısı:", np.sum(lasso.coef_ == 0))

Alpha Optimizasyonu

from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

# Alpha değerleri grid'i
alphas = [0.001, 0.01, 0.1, 1, 10, 100, 1000]

# Pipeline ile standardizasyon + model
ridge_pipe = Pipeline([
    ('scaler', StandardScaler()),
    ('ridge', RidgeCV(alphas=alphas, cv=5))
])

lasso_pipe = Pipeline([
    ('scaler', StandardScaler()),
    ('lasso', LassoCV(alphas=alphas, cv=5, max_iter=10000))
])

# Eğitim
ridge_pipe.fit(X_train, y_train)
lasso_pipe.fit(X_train, y_train)

# En iyi alpha değerleri
print(f"En iyi Ridge alpha: {ridge_pipe.named_steps['ridge'].alpha_}")
print(f"En iyi Lasso alpha: {lasso_pipe.named_steps['lasso'].alpha_}")

# Katsayı analizi
ridge_coef = ridge_pipe.named_steps['ridge'].coef_
lasso_coef = lasso_pipe.named_steps['lasso'].coef_

print(f"Lasso sıfır olmayan katsayılar: {np.sum(lasso_coef != 0)}")
print(f"Ridge sıfır olmayan katsayılar: {np.sum(ridge_coef != 0)}")

# Önemli değişkenleri bulma (Lasso için)
important_features = np.where(lasso_coef != 0)[0]
print("Önemli değişken indeksleri:", important_features)

🎯 HANGİSİNİ SEÇMELİ?

RIDGE (L2) Kullanın Eğer:

Tüm değişkenler önemli ve hepsini korumak istiyorsanız
Çoklu doğrusallık (multicollinearity) problemi varsa
Değişken sayısı çok fazla değilse
Katsayıların sıfıra gitmesini değil, küçülmesini istiyorsanız

LASSO (L1) Kullanın Eğer:

Değişken seçimi yapmak istiyorsanız
Çok fazla değişken varsa ve sadece önemlilerini seçmek istiyorsanız
Daha yorumlanabilir, sade bir model istiyorsanız
Bazı değişkenlerin tamamen elenmesini istiyorsanız

İpucu: Her ikisini de deneyin ve cross-validation skorlarına göre karar verin. Bazen ElasticNet (L1 + L2 kombinasyonu) en iyi sonucu verebilir.

✅ ÖĞRENDİKLERİMİZ

Ridge katsayıları küçültür, Lasso değişken seçimi yapar
Alpha parametresi düzenlileştirme gücünü kontrol eder
Optimal alpha cross-validation ile bulunur
Ridge çoklu doğrusallıkta, Lasso feature selection'da iyidir
Veri standardizasyonu düzenlileştirme için önemlidir
Her iki yöntem de overfitting'i azaltır