CommencerCommencer gratuitement

glmnet avec trainControl personnalisé et réglage

Comme vous l’avez vu dans la vidéo, le modèle glmnet ajuste en fait de nombreux modèles en une seule fois (c’est l’un des grands atouts du package). Vous pouvez en profiter en passant un grand nombre de valeurs de lambda, qui contrôlent l’intensité de la pénalisation dans le modèle. train() est assez malin 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 l’occurrence), 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 souhaitez 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’est‑à‑dire un elastic net) en utilisant un alpha entre 0 et 1. Par exemple, alpha = 0.05 correspondrait à 95 % de régression ridge et 5 % de régression lasso.

Dans ce problème, vous allez simplement explorer les 2 extrêmes – régression ridge pure et régression lasso pure – afin d’illustrer leurs différences.

Cet exercice fait partie du cours

Machine Learning avec caret en R

Afficher le cours

Instructions

  • Entraînez un modèle glmnet sur les données overfit en prenant y comme variable réponse et toutes les autres variables comme explicatives. Veillez à utiliser votre trainControl personnalisé de l’exercice précédent (myControl). Utilisez également un tuneGrid personnalisé pour explorer alpha = 0:1 et 20 valeurs de lambda comprises entre 0.0001 et 1 par valeur de alpha.
  • Affichez model dans la console.
  • Affichez le max() de la statistique ROC dans model[["results"]]. Vous pouvez y accéder avec model[["results"]][["ROC"]].

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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

# Print model to console


# Print maximum ROC statistic
Modifier et exécuter le code