LoslegenKostenlos loslegen

glmnet mit benutzerdefiniertem trainControl und Tuning

Wie du im Video gesehen hast, passt das glmnet-Modell tatsächlich viele Modelle auf einmal an (eine der großen Stärken des Pakets). Das kannst du ausnutzen, indem du eine große Anzahl an lambda-Werten übergibst, die den Grad der Regularisierung im Modell steuern. train() ist schlau genug, nur ein Modell pro alpha-Wert zu fitten und alle lambda-Werte auf einmal für ein gleichzeitiges Fitten zu übergeben.

Mein bevorzugtes Tuning-Grid für glmnet-Modelle ist:

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

Dieses Grid untersucht eine große Anzahl an lambda-Werten (genau 100), von einem sehr kleinen bis zu einem sehr großen. (Du könntest das maximale lambda auf 10 erhöhen, aber in dieser Übung ist 1 eine gute obere Grenze.)

Wenn du weniger Modelle untersuchen möchtest, kannst du eine kürzere Lambda-Sequenz verwenden. Zum Beispiel würde lambda = seq(0.0001, 1, length = 10) 10 Modelle pro Alpha-Wert fitten.

Mit diesem tuneGrid betrachtest du außerdem die beiden Formen regulierter Modelle: Ridge-Regression und Lasso-Regression. alpha = 0 ist reine Ridge-Regression, und alpha = 1 ist reine Lasso-Regression. Du kannst eine Mischung aus beiden Modellen (also ein Elastic Net) mit einem alpha zwischen 0 und 1 fitten. Zum Beispiel wären bei alpha = 0.05 95 % Ridge-Regression und 5 % Lasso-Regression enthalten.

In dieser Aufgabe untersuchst du nur die beiden Extreme – reine Ridge- und reine Lasso-Regression – um ihre Unterschiede zu veranschaulichen.

Diese Übung ist Teil des Kurses

Maschinelles Lernen mit caret in R

Kurs anzeigen

Anleitung zur Übung

  • Trainiere ein glmnet-Modell auf den overfit-Daten, wobei y die Zielvariable ist und alle anderen Variablen erklärende Variablen sind. Achte darauf, dein benutzerdefiniertes trainControl aus der vorherigen Übung (myControl) zu verwenden. Verwende außerdem ein benutzerdefiniertes tuneGrid, um alpha = 0:1 und 20 Werte von lambda zwischen 0.0001 und 1 pro Alpha-Wert zu untersuchen.
  • Gib model in der Konsole aus.
  • Gib das max() der ROC-Kennzahl in model[["results"]] aus. Du kannst darauf zugreifen mit model[["results"]][["ROC"]].

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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

# Print model to console


# Print maximum ROC statistic
Code bearbeiten und ausführen