CodeBlanks Logo Icon CodeBlanks

L1 (Lasso)

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 özellikler

Seyrek (ç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

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

# 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

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.

Soru
print((m.coef_ ____ 0).sum())
Cevap
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

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