ÎncepețiÎncepe gratuit

Evaluează o procedură de modelare folosind validarea încrucișată n-fold

În acest exercițiu, vei folosi splitPlan, planul de validare încrucișată cu 3 folduri din exercițiul anterior, pentru a face predicții cu un model care prezice mpg$cty din mpg$hwy.

Dacă dframe este setul de date de antrenament, o modalitate de a adăuga o coloană de predicții din validarea încrucișată în cadru este următoarea:

# 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,])
}

Validarea încrucișată estimează cât de bine va performa pe date noi un model construit pe toate datele disponibile. Ca și în cazul împărțirii în seturi de antrenament și test, pentru o procedură de modelare bună, performanța din validarea încrucișată și performanța pe datele de antrenament ar trebui să fie apropiate.

Dataframe-ul mpg, planul de validare încrucișată splitPlan și funcția rmse() au fost preîncărcate.

Acest exercițiu face parte din cursul

Învățare supervizată în R: Regresia

Vezi cursul

Instrucțiuni pentru exercițiu

  • Rulează planul de validare încrucișată cu 3 folduri din splitPlan și plasează predicțiile în coloana mpg$pred.cv.
    • Folosește lm() și formula cty ~ hwy.
  • Creează un model de regresie liniară pe toate datele din mpg (formula cty ~ hwy) și atribuie predicțiile coloanei mpg$pred.
  • Folosește rmse() pentru a calcula eroarea pătratică medie a predicțiilor din modelul complet (mpg$pred). Reține că rmse() primește două argumente: valorile prezise și valorile reale ale variabilei de ieșire.
  • Calculează eroarea pătratică medie a predicțiilor din validarea încrucișată. Cele două valori sunt aproximativ egale?

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
___(___, ___)
Editează și rulează codul