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
Oefeninstructies
- Train een
glmnet-model op deoverfit-data waarbijyde responsvariabele is en alle andere variabelen de verklarende variabelen. Zorg dat je je aangepastetrainControluit de vorige oefening (myControl) gebruikt. Gebruik ook een aangepasttuneGridomalpha = 0:1en 20 waarden vanlambdatussen 0.0001 en 1 per waarde van alpha te verkennen. - Print
modelnaar de console. - Print de
max()van de ROC-statistiek inmodel[["results"]]. Je kunt die benaderen metmodel[["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