CodeBlanks Logo Icon CodeBlanks

alpha

alpha parametresi, regularizasyon gücünü belirler.

alpha seçimi

alpha, sapma ile varyans arasındaki dengeyi kurar: çok küçükse aşırı öğrenme, çok büyükse tüm katsayılar sıfıra yaklaşır ve eksik öğrenme olur. En iyi değer logaritmik bir ızgarada CV ile bulunur. scikit-learn bunun için hazır sınıflar sunar:

from sklearn.linear_model import RidgeCV, LassoCV
r = RidgeCV(alphas=np.logspace(-3, 3, 13)).fit(Xs, y)
print(r.alpha_)
l = LassoCV(cv=5, random_state=0).fit(Xs, y)
print(l.alpha_)

RidgeCV varsayılan olarak çok hızlı bir leave-one-out hesabı kullanır.

Düzenlileştirme yolu

Katsayıların alpha'ya göre nasıl değiştiğini görmek modeli anlamayı kolaylaştırır. Lasso yolunda alpha büyüdükçe özellikler birer birer sıfıra düşer; en son düşenler en önemli özelliklerdir:

for a in [0.01, 0.1, 0.5, 1, 2]:
    c = Lasso(alpha=a).fit(Xs, y).coef_
    print(a, (c != 0).sum())

lasso_path tüm yolu tek seferde hesaplar ve çizime hazır verir.

Uygulama Lasso yolu

alpha = 0.01, 0.1, 0.5, 1, 2 için Lasso eğit; her satırda alpha'yı ve sıfır olmayan katsayı sayısını yazdır. Ardından LassoCV(cv=5, random_state=0)'ın seçtiği alpha'yı round(..., 3) ile yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.preprocessing import StandardScaler

rng = np.random.default_rng(0)
X = rng.normal(size=(60, 20))
y = 3 * X[:, 0] - 2 * X[:, 1] + 1.5 * X[:, 2] + rng.normal(0, 1, 60)
Xs = StandardScaler().fit_transform(X)
from sklearn.linear_model import Lasso, LassoCV

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.preprocessing import StandardScaler

rng = np.random.default_rng(0)
X = rng.normal(size=(60, 20))
y = 3 * X[:, 0] - 2 * X[:, 1] + 1.5 * X[:, 2] + rng.normal(0, 1, 60)
Xs = StandardScaler().fit_transform(X)
from sklearn.linear_model import Lasso, LassoCV

for a in [0.01, 0.1, 0.5, 1, 2]:
    print(a, (Lasso(alpha=a).fit(Xs, y).coef_ != 0).sum())
print(round(LassoCV(cv=5, random_state=0).fit(Xs, y).alpha_, 3))

Beklenen çıktı

0.01 18
0.1 8
0.5 3
1 2
2 1
0.076

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 alpha çok büyük seçilirse ne olur?

  • Model aşırı öğrenir
  • Hiçbir şey değişmez
  • Hata verir
  • Katsayılar sıfıra yaklaşır, model eksik öğrenir Doğru cevap

Açıklama: Ceza baskın olunca model veriye uymaktan vazgeçer; tahmin ortalamaya yaklaşır.

2 alpha'yı CV ile seçen Lasso'yu kur.

Soru
l = ____(cv=5, random_state=0).fit(Xs, y)
Cevap
l = LassoCV(cv=5, random_state=0).fit(Xs, y)

Açıklama: LassoCV kendi alpha ızgarasını üretir ve en iyisini alpha_'da saklar.

3 Araçları eşleştir.

Kavram Anlamı
RidgeCV Ridge için hızlı CV
LassoCV Lasso için CV
alpha_ Seçilen ceza
lasso_path Katsayı yolu

Orta seviye bölümündeki tüm dersler