Makine Öğrenmesi
ElasticNet
ElasticNet, L1 ve L2 regularizasyonunu birleştirir.
ElasticNet
ElasticNet, L1 ve L2 cezalarını birleştirir. l1_ratio karışım oranıdır: 1 saf Lasso, 0 saf Ridge. Lasso'nun seyrekliğini ve Ridge'in ilişkili özelliklerdeki kararlılığını birlikte sunar:
from sklearn.linear_model import ElasticNet, ElasticNetCV
en = ElasticNet(alpha=0.1, l1_ratio=0.5).fit(Xs, y)
encv = ElasticNetCV(l1_ratio=[0.1, 0.5, 0.9, 1.0], cv=5, random_state=0).fit(Xs, y)
print(encv.alpha_, encv.l1_ratio_)
İlişkili özellik grupları varsa ElasticNet grubu birlikte tutma eğilimindedir; Lasso ise gruptan tek birini seçer.
Sınıflandırmada düzenlileştirme
Lojistik regresyon da düzenlileştirilir; ama scikit-learn'de ceza gücü C = 1/α ile verilir: küçük C güçlü ceza demektir. L1 cezası için uygun çözücü seçilmelidir:
LogisticRegression(C=0.1) # güçlü L2
LogisticRegression(penalty="l1", C=0.1, solver="liblinear") # seyrek
LogisticRegression(penalty="elasticnet", l1_ratio=0.5, solver="saga", C=1)
SVM'deki C da aynı mantıktadır: büyük C az ceza, sıkı uyum.
Uygulama Gruplu özellikler
İlk sütunun üç gürültülü kopyasından oluşan G ile Lasso(alpha=0.1) ve ElasticNet(alpha=0.1, l1_ratio=0.3) eğit. Her biri için sıfır olmayan katsayı sayısını aynı satırda yazdır (önce Lasso).
Örnek çözümü göster
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, ElasticNet
G = np.column_stack([Xs[:, 0] + rng.normal(0, 0.05, 60) for _ in range(3)])
a = (Lasso(alpha=0.1).fit(G, y).coef_ != 0).sum()
b = (ElasticNet(alpha=0.1, l1_ratio=0.3).fit(G, y).coef_ != 0).sum()
print(a, b)
Kendini test et
-
<code>ElasticNet(l1_ratio=1.0)</code> neye eşittir?
- LinearRegression
- Hiçbiri
- Lasso
- Ridge
Cevabı göster
Lasso — l1_ratio = 1 cezanın tamamen L1 olduğu anlamına gelir.
-
L1 ve L2'yi eşit karıştır.
en = ElasticNet(alpha=0.1, ____=0.5)
Cevabı göster
en = ElasticNet(alpha=0.1, l1_ratio=0.5)
-
Parametreleri eşleştir.
- l1_ratio=0
- Saf Ridge
- l1_ratio=1
- Saf Lasso
- C küçük
- Güçlü ceza
- solver="liblinear"
- L1 lojistik
Sıradaki ders: Özet - Regularizasyon