Zacznij terazZacznij za darmo

Ocena procedury modelowania za pomocą n-krotnej walidacji krzyżowej

W tym ćwiczeniu użyjesz splitPlan – planu 3-krotnej walidacji krzyżowej z poprzedniego ćwiczenia – aby wykonać predykcje z modelu przewidującego mpg$cty na podstawie mpg$hwy.

Jeśli dframe to dane treningowe, to jeden ze sposobów na dodanie kolumny predykcji z walidacji krzyżowej do ramki danych wygląda następująco:

# Initialize a column of the appropriate length
dframe$pred.cv <- 0 

# k is the number of folds
# splitPlan is the cross validation plan

for(i in 1:k) {
  # Get the ith split
  split <- splitPlan[[i]]

  # Build a model on the training data 
  # from this split 
  # (lm, in this case)
  model <- lm(fmla, data = dframe[split$train,])

  # make predictions on the 
  # application data from this split
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

Walidacja krzyżowa pozwala przewidzieć, jak model zbudowany na wszystkich danych będzie działać na nowych danych. Podobnie jak w przypadku podziału na zbiór treningowy i testowy, dla dobrej procedury modelowania wyniki walidacji krzyżowej i wyniki na danych treningowych powinny być zbliżone.

Ramka danych mpg, plan walidacji krzyżowej splitPlan oraz funkcja rmse() zostały wcześniej wczytane.

To ćwiczenie jest częścią kursu

Nadzorowane uczenie maszynowe w R: regresja

Zobacz kurs

Instrukcje do ćwiczenia

  • Uruchom plan 3-krotnej walidacji krzyżowej z splitPlan i zapisz predykcje w kolumnie mpg$pred.cv.
    • Użyj funkcji lm() z formułą cty ~ hwy.
  • Zbuduj model regresji liniowej na wszystkich danych z mpg (formuła cty ~ hwy) i przypisz predykcje do mpg$pred.
  • Użyj funkcji rmse(), aby obliczyć pierwiastek błędu średniokwadratowego dla predykcji z pełnego modelu (mpg$pred). Pamiętaj, że rmse() przyjmuje dwa argumenty: wartości przewidywane oraz rzeczywiste wartości wynikowe.
  • Oblicz pierwiastek błędu średniokwadratowego dla predykcji z walidacji krzyżowej. Czy obie wartości są zbliżone?

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
___(___, ___)
Edytuj i uruchom kod