alpha
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 106/112
- 5 dk
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
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
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.
l = ____(cv=5, random_state=0).fit(Xs, y)
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 |