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>Übungsanweisungen
- Führe den 3-fach-Cross-Validation-Plan aus
splitPlanaus und schreibe die Vorhersagen in die Spaltempg$pred.cv.- Verwende
lm()und die Formelcty ~ hwy.
- Verwende
- Erstelle ein lineares Regressionsmodell auf allen
mpg-Daten (Formelcty ~ hwy) und schreibe die Vorhersagen inmpg$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
___(___, ___)