CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Entraînez un modèle glmnet sur les données overfity est la variable réponse et toutes les autres variables sont explicatives. Assurez-vous d'utiliser votre trainControl personnalisé de l'exercice précédent (myControl). Utilisez aussi un tuneGrid personnalisé pour explorer alpha = 0:1 et 20 valeurs de lambda entre 0.0001 et 1 pour chaque 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 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
Modifier et exécuter le code