L1 (Lasso)
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 104/112
- 5 dk
L1 regularizasyonu, katsayıları sıfıra yaklaştırarak özellik seçimi yapar.
Lasso (L1)
Lasso mutlak değer cezası kullanır. Bu cezanın önemli bir özelliği vardır: zayıf özelliklerin katsayılarını tam olarak sıfıra iter. Böylece model hem öğrenir hem de özellik seçer:
from sklearn.linear_model import Lasso
m = Lasso(alpha=0.1).fit(Xs, y)
print((m.coef_ != 0).sum()) # sıfır olmayan katsayı sayısı
print(np.where(m.coef_ != 0)[0]) # seçilen özelliklerSeyrek (çoğu sıfır) çözüm, yorumlanabilir ve hızlı modeller üretir.
Ölçek ve kararsızlık
Ceza tüm katsayılara aynı uygulanır; bu yüzden özellikler önce ölçeklenmelidir, yoksa büyük birimli özellik küçük katsayıyla "ucuza" kurtulur. Ayrıca ilişkili özellikler arasında Lasso birini keyfi seçebilir:
pipe = make_pipeline(StandardScaler(), Lasso(alpha=0.1))
# x1 ile x1 + küçük gürültü: Lasso genellikle yalnızca birini tutarİlişkili özellik grupları varsa Lasso'nun seçimi örneklemden örnekleme değişebilir; ElasticNet bu sorunu yumuşatır.
Uygulama Lasso ile seçim
Ölçekli veride Lasso(alpha=0.2) eğit. Sıfır olmayan katsayıların indekslerini, ardından bu katsayıları np.round(..., 2) ile alt alta 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
# 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
m = Lasso(alpha=0.2).fit(Xs, y)
idx = np.where(m.coef_ != 0)[0]
print(idx)
print(np.round(m.coef_[idx], 2))Beklenen çıktı
[ 0 1 2 3 5 15] [ 2.78 -1.64 1.32 0.05 -0.11 -0.06]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Lasso'yu Ridge'den ayıran özellik nedir?
- Ceza kullanmaması
- Katsayıları tam sıfıra indirebilmesi Doğru cevap
- Ölçekleme gerektirmemesi
- Daha hızlı olması
Açıklama: L1 cezasının köşeli geometrisi çözümü eksenlere, yani sıfır katsayılara iter.
2 Sıfır olmayan katsayıları say.
print((m.coef_ ____ 0).sum())
print((m.coef_ != 0).sum())
Açıklama: Lasso'da sıfır olmayan katsayılar seçilen özelliklerdir.
3 Özellikleri eşleştir.
| Kavram | Anlamı |
|---|---|
L1 |
Mutlak değer cezası |
seyrek çözüm |
Çoğu katsayı sıfır |
ölçekleme |
Adil ceza için şart |
ilişkili özellikler |
Keyfi seçim riski |