MulaiMulai sekarang secara gratis

glmnet dengan trainControl dan penyetelan kustom

Seperti yang Anda lihat di video, model glmnet sebenarnya memasangkan banyak model sekaligus (salah satu keunggulan paket ini). Anda dapat memanfaatkannya dengan memberikan banyak nilai lambda, yang mengendalikan besarnya penalti dalam model. train() cukup pintar untuk hanya memasangkan satu model per nilai alpha dan meneruskan semua nilai lambda sekaligus untuk dipasang secara simultan.

Kisi penyetelan favorit saya untuk model glmnet adalah:

expand.grid(
  alpha = 0:1,
  lambda = seq(0.0001, 1, length = 100)
)

Kisi ini mengeksplorasi banyak nilai lambda (tepatnya 100), dari yang sangat kecil hingga yang sangat besar. (Anda bisa menaikkan lambda maksimum hingga 10, tetapi dalam latihan ini 1 adalah batas atas yang baik.)

Jika Anda ingin mengeksplorasi lebih sedikit model, Anda dapat menggunakan deret lambda yang lebih pendek. Misalnya, lambda = seq(0.0001, 1, length = 10) akan memasangkan 10 model per nilai alpha.

Anda juga melihat dua bentuk model terpenalti dengan tuneGrid ini: regresi ridge dan regresi lasso. alpha = 0 adalah regresi ridge murni, dan alpha = 1 adalah regresi lasso murni. Anda dapat memasangkan campuran keduanya (yakni elastic net) dengan menggunakan alpha antara 0 dan 1. Misalnya, alpha = 0.05 berarti 95% regresi ridge dan 5% regresi lasso.

Dalam soal ini Anda akan mengeksplorasi 2 ekstrem — regresi ridge murni dan regresi lasso murni — untuk menggambarkan perbedaannya.

Latihan ini adalah bagian dari kursus

Machine Learning dengan caret di R

Lihat Kursus

Petunjuk latihan

  • Latih model glmnet pada data overfit sehingga y menjadi variabel respons dan semua variabel lainnya menjadi variabel penjelas. Pastikan menggunakan trainControl kustom Anda dari latihan sebelumnya (myControl). Selain itu, gunakan tuneGrid kustom untuk mengeksplorasi alpha = 0:1 dan 20 nilai lambda antara 0.0001 dan 1 per nilai alpha.
  • Cetak model ke konsol.
  • Cetak max() dari statistik ROC di model[["results"]]. Anda dapat mengaksesnya dengan model[["results"]][["ROC"]].

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Train glmnet with custom trainControl and tuning: model
model <- train(
  ___, 
  ___,
  tuneGrid = ___(
    ___,
    ___
  ),
  method = ___,
  trControl = ___
)

# Print model to console


# Print maximum ROC statistic
Edit dan Jalankan Kode