LoslegenKostenlos starten

Ein Modellierungsverfahren mit n-facher Cross-Validation bewerten

In dieser Übung verwendest du splitPlan, den 3-fach-Cross-Validation-Plan aus der vorherigen Übung, um Vorhersagen aus einem Modell zu erzeugen, das mpg$cty aus mpg$hwy vorhersagt.

Wenn dframe die Trainingsdaten sind, kannst du eine Spalte mit Cross-Validation-Vorhersagen wie folgt zum Data Frame hinzufügen:

# Eine Spalte mit der passenden Länge initialisieren
dframe$pred.cv <- 0 

# k ist die Anzahl der Folds
# splitPlan ist der Cross-Validation-Plan

for(i in 1:k) {
  # Den i-ten Split holen
  split <- splitPlan[[i]]

  # Ein Modell auf den Trainingsdaten
  # dieses Splits bauen
  # (hier: lm)
  model <- lm(fmla, data = dframe[split$train,])

  # Vorhersagen auf den
  # Anwendungsdaten dieses Splits erzeugen
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

Cross-Validation schätzt ab, wie gut sich ein aus allen Daten gebautes Modell auf neuen Daten schlägt. Wie beim Test-/Train-Split sollten bei einem guten Modellierungsverfahren die Cross-Validation-Leistung und die Trainingsleistung nah beieinander liegen.

Der Data Frame mpg, der Cross-Validation-Plan splitPlan und die Funktion rmse() wurden bereits geladen.

Diese Übung ist Teil des Kurses

<Kurs>Überwachtes Lernen in R: Regression</Kurs>
Kurs ansehen

Übungsanweisungen

  • Führe den 3-fach-Cross-Validation-Plan aus splitPlan aus und schreibe die Vorhersagen in die Spalte mpg$pred.cv.
    • Verwende lm() und die Formel cty ~ hwy.
  • Erstelle ein lineares Regressionsmodell auf allen mpg-Daten (Formel cty ~ hwy) und schreibe die Vorhersagen in mpg$pred.
  • Benutze rmse(), um den Root-Mean-Squared-Error der Vorhersagen des Vollmodells (mpg$pred) zu berechnen. Denk daran: rmse() nimmt zwei Argumente entgegen, die vorhergesagten Werte und das tatsächliche Ergebnis.
  • Ermittle den Root-Mean-Squared-Error der Cross-Validation-Vorhersagen. Sind die beiden Werte ungefähr gleich?

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# mpg is available
summary(mpg)

# splitPlan is available
str(splitPlan)

# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0 
for(i in ___) {
  split <- ___
  model <- lm(___, data = ___)
  mpg$pred.cv[___] <- predict(___, newdata = ___)
}

# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))

# Get the rmse of the full model's predictions
___(___, ___)

# Get the rmse of the cross-validation predictions
___(___, ___)
Code bearbeiten und ausführen