Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Träna en glmnet-modell på datamängden overfit så att y är responsvariabeln och alla övriga variabler är förklarande variabler. Använd din anpassade trainControl från föregående övning (myControl). Använd även ett anpassat tuneGrid för att utforska alpha = 0:1 och 20 lambda-värden mellan 0,0001 och 1 per alpha-värde.
  • Skriv ut model i konsolen.
  • Skriv ut max()-värdet för ROC-statistiken i model[["results"]]. Du kan nå det via model[["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
Redigera och kör kod