glmnet cu trainControl și tuning personalizate
Așa cum ai văzut în videoclip, modelul glmnet antrenează de fapt mai multe modele simultan – unul dintre marele avantaje ale acestui pachet. Poți exploata acest lucru pasând un număr mare de valori lambda, care controlează gradul de penalizare al modelului. Funcția train() este suficient de inteligentă încât să antreneze un singur model per valoare alpha și să paseze toate valorile lambda simultan.
Gridul meu preferat de tuning pentru modelele glmnet este:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Acest grid explorează un număr mare de valori lambda (100, mai exact), de la una foarte mică până la una foarte mare. (Poți crește valoarea maximă a lui lambda la 10, dar în acest exercițiu 1 este o limită superioară potrivită.)
Dacă vrei să explorezi mai puține modele, poți folosi o secvență mai scurtă de lambda. De exemplu, lambda = seq(0.0001, 1, length = 10) va antrena 10 modele per valoare de alpha.
Cu acest tuneGrid vei analiza și cele două forme de modele penalizate: regresia ridge și regresia lasso. alpha = 0 corespunde regresiei ridge pure, iar alpha = 1 corespunde regresiei lasso pure. Poți antrena o combinație a celor două modele (adică un elastic net) folosind un alpha între 0 și 1. De exemplu, alpha = 0.05 ar însemna 95% regresie ridge și 5% regresie lasso.
În această problemă vei explora doar cele 2 extreme – regresia ridge pură și regresia lasso pură – pentru a ilustra diferențele dintre ele.
Acest exercițiu face parte din cursul
Machine Learning cu caret în R
Instrucțiuni pentru exercițiu
- Antrenează un model
glmnetpe dateleoverfit, astfel încâtysă fie variabila răspuns, iar toate celelalte variabile să fie explicative. Asigură-te că foloseștitrainControl-ul personalizat din exercițiul anterior (myControl). De asemenea, folosește untuneGridpersonalizat pentru a exploraalpha = 0:1și 20 de valori ale luilambdaîntre 0,0001 și 1 per valoare de alpha. - Afișează
modelîn consolă. - Afișează valoarea
max()a statisticii ROC dinmodel[["results"]]. O poți accesa folosindmodel[["results"]][["ROC"]].
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic