glmnet avec trainControl personnalisé et réglage des hyperparamètres
Comme vous l'avez vu dans la vidéo, le modèle glmnet ajuste en fait plusieurs modèles en parallèle (c'est l'un des grands atouts du plugiciel). Vous pouvez en profiter en passant un grand nombre de valeurs de lambda, qui contrôlent l'ampleur de la pénalisation dans le modèle. train() est assez futé pour n'ajuster qu'un seul modèle par valeur de alpha et transmettre toutes les valeurs de lambda d'un coup pour un ajustement simultané.
Mon grille de réglage préférée pour les modèles glmnet est :
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Cette grille explore un grand nombre de valeurs de lambda (100, en fait), d'une très petite à une très grande. (Vous pourriez augmenter le lambda maximal à 10, mais dans cet exercice, 1 est une bonne borne supérieure.)
Si vous voulez explorer moins de modèles, vous pouvez utiliser une séquence de lambda plus courte. Par exemple, lambda = seq(0.0001, 1, length = 10) ajusterait 10 modèles par valeur de alpha.
Vous examinez aussi les deux formes de modèles pénalisés avec ce tuneGrid : la régression ridge et la régression lasso. alpha = 0 correspond à une régression ridge pure, et alpha = 1 à une régression lasso pure. Vous pouvez ajuster un mélange des deux (c.-à-d. un réseau élastique) en utilisant une valeur de alpha entre 0 et 1. Par exemple, alpha = 0.05 donnerait 95 % de régression ridge et 5 % de régression lasso.
Dans ce problème, vous allez simplement explorer les 2 extrêmes – la régression ridge pure et la régression lasso pure – afin d'illustrer leurs différences.
Cette activité fait partie du cours
Machine Learning avec caret en R
Instructions de l’exercice
- Entraînez un modèle
glmnetsur les donnéesoverfitoùyest la variable réponse et toutes les autres variables sont explicatives. Assurez-vous d'utiliser votretrainControlpersonnalisé de l'exercice précédent (myControl). Utilisez aussi untuneGridpersonnalisé pour exploreralpha = 0:1et 20 valeurs delambdaentre 0.0001 et 1 pour chaque valeur de alpha. - Affichez
modeldans la console. - Affichez le
max()de la statistique ROC dansmodel[["results"]]. Vous pouvez y accéder avecmodel[["results"]][["ROC"]].
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic