Aan de slagGa gratis aan de slag

glmnet met aangepaste trainControl en tuning

Zoals je in de video zag, past het glmnet-model eigenlijk veel modellen tegelijk (een van de sterke punten van dit pakket). Je kunt hiervan profiteren door een groot aantal lambda-waarden door te geven, die de mate van regularisatie in het model bepalen. train() is slim genoeg om per alpha-waarde slechts één model te fitten en alle lambda-waarden in één keer door te geven voor gelijktijdig fitten.

Mijn favoriete afstemrooster voor glmnet-modellen is:

expand.grid(
  alpha = 0:1,
  lambda = seq(0.0001, 1, length = 100)
)

Dit rooster verkent een groot aantal lambda-waarden (100 om precies te zijn), van heel klein tot vrij groot. (Je zou de maximale lambda kunnen verhogen naar 10, maar in deze oefening is 1 een goede bovengrens.)

Als je minder modellen wilt verkennen, kun je een kortere lambda-reeks gebruiken. Bijvoorbeeld, lambda = seq(0.0001, 1, length = 10) zou 10 modellen per waarde van alpha fitten.

Met dit tuneGrid bekijk je ook de twee vormen van geregulariseerde modellen: ridge-regressie en lasso-regressie. alpha = 0 is pure ridge-regressie, en alpha = 1 is pure lasso-regressie. Je kunt een mix van beide modellen fitten (oftewel een elastic net) met een alpha tussen 0 en 1. Bijvoorbeeld, alpha = 0.05 zou 95% ridge-regressie en 5% lasso-regressie zijn.

In dit probleem bekijk je alleen de 2 uitersten – pure ridge- en pure lasso-regressie – om hun verschillen te illustreren.

Deze oefening maakt deel uit van de cursus

Machine Learning met caret in R

Cursus bekijken

Oefeninstructies

  • Train een glmnet-model op de overfit-data waarbij y de responsvariabele is en alle andere variabelen de verklarende variabelen. Zorg dat je je aangepaste trainControl uit de vorige oefening (myControl) gebruikt. Gebruik ook een aangepast tuneGrid om alpha = 0:1 en 20 waarden van lambda tussen 0.0001 en 1 per waarde van alpha te verkennen.
  • Print model naar de console.
  • Print de max() van de ROC-statistiek in model[["results"]]. Je kunt die benaderen met model[["results"]][["ROC"]].

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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

# Print model to console


# Print maximum ROC statistic
Code bewerken en uitvoeren