Lasso Regresyonu

R'de Boyutsal Azaltma

Matt Pickard

Owner, Pickard Predictives, LLC

Lasso regresyona genel bakış

  • Denetimli özellik seçimi
  • L1 düzenlileştirme
  • Regresyon katsayılarını cezalandırır
  • Katsayıları küçültür
  • Önemsiz katsayıları sıfıra indirir
  • Doğal olarak özellik seçimi yapar
linear_reg(engine = "glmnet", penalty = 0.001 , mixture = 1)
R'de Boyutsal Azaltma

Verileri standartlaştırma

  • Önce verileri standartlaştırın; böylece ceza tüm özelliklere eşit uygulanır
  • Hedef değişken için scale() kullanın
    • matris döner; vektöre as.vector() ile çevirin
  • Yordayıcılar için step_normalize() kullanın

Örnek

# Hedef değişkeni ölçekleyin
df <- df %>% mutate(target = as.vector(scale(target))) 
... 
# Yordayıcıları ölçekleyin
recipe() %>% step_normalize(all_numeric_predictors()) 
R'de Boyutsal Azaltma

Ceza değerini seçme

  • Ceza, optimize edilecek bir hiperparametredir
  • En iyi ceza değerini arayın
  • tidymodels içinde tune() kullanın
linear_reg(engine = "glmnet", penalty = tune() , mixture = 1)
R'de Boyutsal Azaltma

Verileri hazırlama

Hedef değişkeni ölçekleyin
house_sales_subset_df <- house_sales_subset_df %>% 
  mutate(price = as.vector(scale(price)))
Eğitim ve test kümelerini oluşturun
split <- initial_split(house_sales_subset_df, prop = 0.8)
train <- split %>% training()
test <-  split %>% testing()
R'de Boyutsal Azaltma

Bir tarif oluşturun

Bir tarif oluşturun
lasso_recipe <- 
  recipe(price ~ ., data = train) %>% 
  step_normalize(all_numeric_predictors()) 
R'de Boyutsal Azaltma

İş akışını oluşturun

Model özelliklerini oluşturun
lasso_model <- linear_reg(penalty = 0.01, mixture = 1, engine = "glmnet")
İş akışını oluşturun
lasso_workflow <- workflow(preprocessor = lasso_recipe, spec =  lasso_model)
R'de Boyutsal Azaltma

İş akışını uydurun

tidy(lasso_workflow %>% fit(train)) %>% filter(estimate > 0)
# A tibble: 9 × 3
  term          estimate penalty
  <chr>            <dbl>   <dbl>
1 bathrooms      0.0477     0.01
2 sqft_living    0.434      0.01
3 floors         0.0262     0.01
4 waterfront     0.133      0.01
5 view           0.0510     0.01
6 condition      0.0319     0.01
...              ...        ...
R'de Boyutsal Azaltma

Ayarlanabilir bir model iş akışı oluşturun

Ayarlanabilir bir model özelliği oluşturun
lasso_model <- linear_reg(penalty = tune(), mixture = 1, engine = "glmnet")
lasso_workflow <- workflow(preprocessor = lasso_recipe, spec =  lasso_model)
Çapraz doğrulama eğitim örneği oluşturun
train_cv <- vfold_cv(train, v = 5)
Ceza değerleri için bir ızgara oluşturun
penalty_grid <- grid_regular(penalty(range = c(-3, -1)), levels = 20)
  • 0.001–0.1 ceza aralığı range = c(-3, -1) olarak belirtilir
R'de Boyutsal Azaltma

Bir model ızgarası uydurun

Uydurulmuş modeller ızgarası oluşturun
lasso_grid <- tune_grid(
  lasso_workflow,
  resamples = train_cv,
  grid = penalty_grid)
Model performanslarını çizin
autoplot(lasso_grid, metric = "rmse")
R'de Boyutsal Azaltma

Ceza performans grafiği

ceza performans grafiği

R'de Boyutsal Azaltma

Modeli tamamlayın

En iyi modelin ceza değerini alın
best_rmse <- lasso_grid %>% select_best("rmse")
En iyi modeli yeniden uydurun
final_lasso <- 
  finalize_workflow(lasso_workflow, best_rmse) %>% 
  fit(train)
En iyi modelin katsayılarını görüntüleyin
tidy(final_lasso) %>% filter(estimate > 0)
R'de Boyutsal Azaltma

Hadi pratik yapalım!

R'de Boyutsal Azaltma

Preparing Video For Download...