glmnet med anpassad trainControl och tuning
Som du såg i videon anpassar glmnet-modellen faktiskt många modeller samtidigt – vilket är en av paketets stora fördelar. Du kan utnyttja det genom att skicka in ett stort antal lambda-värden, som styr graden av penalisering i modellen. train() är smart nog att bara anpassa en modell per alpha-värde och skickar sedan alla lambda-värden på en gång för simultan anpassning.
Mitt favoritrutnät för glmnet-modeller är:
expand.grid(
alpha = 0:1,
lambda = seq(0.0001, 1, length = 100)
)
Det här rutnätet utforskar ett stort antal lambda-värden (100 stycken) från ett mycket litet till ett mycket stort. (Du skulle kunna öka det maximala lambda-värdet till 10, men i den här övningen är 1 en rimlig övre gräns.)
Om du vill utforska färre modeller kan du använda en kortare lambda-sekvens. Till exempel skulle lambda = seq(0.0001, 1, length = 10) anpassa 10 modeller per alpha-värde.
Med det här tuneGrid tittar du också på de två formerna av penaliserade modeller: ridge-regression och lasso-regression. alpha = 0 ger ren ridge-regression och alpha = 1 ger ren lasso-regression. Du kan anpassa en blandning av de två modellerna – det vill säga ett elastiskt nät – med ett alpha-värde mellan 0 och 1. Till exempel skulle alpha = 0.05 motsvara 95 % ridge-regression och 5 % lasso-regression.
I den här övningen utforskar du bara de två ytterligheterna – ren ridge- och ren lasso-regression – för att illustrera skillnaderna mellan dem.
Den här övningen är en del av kursen
Maskininlärning med caret i R
Övningsinstruktioner
- Träna en
glmnet-modell på datamängdenoverfitså attyär responsvariabeln och alla övriga variabler är förklarande variabler. Använd din anpassadetrainControlfrån föregående övning (myControl). Använd även ett anpassattuneGridför att utforskaalpha = 0:1och 20lambda-värden mellan 0,0001 och 1 per alpha-värde. - Skriv ut
modeli konsolen. - Skriv ut
max()-värdet för ROC-statistiken imodel[["results"]]. Du kan nå det viamodel[["results"]][["ROC"]].
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic