glmnet con trainControl e tuning personalizzati
Come hai visto nel video, il modello glmnet in realtà adatta molti modelli in una volta sola (una delle grandi qualità del pacchetto). Puoi sfruttarlo passando un numero elevato di valori di lambda, che controllano l’ammontare della penalizzazione nel modello. train() è abbastanza intelligente da adattare un solo modello per ogni valore di alpha e passare tutti i valori di lambda in una volta per un fitting simultaneo.
La mia griglia di tuning preferita per i modelli glmnet è:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Questa griglia esplora un gran numero di valori di lambda (100, per la precisione), da molto piccolo a molto grande. (Potresti aumentare il lambda massimo a 10, ma in questo esercizio 1 è un buon limite superiore.)
Se vuoi esplorare meno modelli, puoi usare una sequenza di lambda più corta. Per esempio, lambda = seq(0.0001, 1, length = 10) adattarebbe 10 modelli per ciascun valore di alpha.
Con questo tuneGrid esamini anche le due forme di modelli penalizzati: ridge regression e lasso regression. alpha = 0 è ridge regression pura e alpha = 1 è lasso regression pura. Puoi adattare una combinazione dei due modelli (cioè un elastic net) usando un alpha compreso tra 0 e 1. Per esempio, alpha = 0.05 corrisponde al 95% di ridge regression e al 5% di lasso regression.
In questo esercizio esplorerai solo i due estremi – ridge puro e lasso puro – per metterne in evidenza le differenze.
Questo esercizio fa parte del corso
Machine Learning con caret in R
Istruzioni dell'esercizio
- Allena un modello
glmnetsui datioverfitin cuiyè la variabile risposta e tutte le altre variabili sono esplicative. Assicurati di usare il tuotrainControlpersonalizzato dall’esercizio precedente (myControl). Inoltre, usa untuneGridpersonalizzato per esplorarealpha = 0:1e 20 valori dilambdatra 0.0001 e 1 per ciascun valore di alpha. - Stampa
modelnella console. - Stampa il
max()della statistica ROC inmodel[["results"]]. Puoi accedervi conmodel[["results"]][["ROC"]].
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic