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
Petunjuk latihan
- Latih model
glmnetpada dataoverfitsehinggaymenjadi variabel respons dan semua variabel lainnya menjadi variabel penjelas. Pastikan menggunakantrainControlkustom Anda dari latihan sebelumnya (myControl). Selain itu, gunakantuneGridkustom untuk mengeksplorasialpha = 0:1dan 20 nilailambdaantara 0.0001 dan 1 per nilai alpha. - Cetak
modelke konsol. - Cetak
max()dari statistik ROC dimodel[["results"]]. Anda dapat mengaksesnya denganmodel[["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