ComeçarComece de graça

Avaliar um procedimento de modelagem usando validação cruzada em n partes

Neste exercício, você usará o splitPlan, o plano de validação cruzada de 3 partes do exercício anterior, para fazer previsões de um modelo que prevê mpg$cty a partir de mpg$hwy.

Se dframe for o conjunto de dados de treinamento, uma forma de adicionar uma coluna de previsões de validação cruzada ao frame é a seguinte:

# Inicialize uma coluna com o comprimento apropriado
dframe$pred.cv <- 0 

# k é o número de partes (folds)
# splitPlan é o plano de validação cruzada

for(i in 1:k) {
  # Obtenha a i-ésima divisão
  split <- splitPlan[[i]]

  # Construa um modelo nos dados de treinamento 
  # desta divisão 
  # (lm, neste caso)
  model <- lm(fmla, data = dframe[split$train,])

  # faça previsões nos dados de aplicação
  # desta divisão
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

A validação cruzada prevê quão bem um modelo construído com todos os dados vai se sair em novos dados. Assim como na divisão treino/teste, para um bom procedimento de modelagem, o desempenho na validação cruzada e o desempenho no treinamento devem ser próximos.

O data frame mpg, o plano de validação cruzada splitPlan e a função rmse() já foram pré-carregados.

Este exercício faz parte do curso

Aprendizado Supervisionado em R: Regressão

Ver curso

Instruções do exercício

  • Execute o plano de validação cruzada de 3 partes do splitPlan e coloque as previsões na coluna mpg$pred.cv.
    • Use lm() e a fórmula cty ~ hwy.
  • Crie um modelo de regressão linear com todos os dados de mpg (fórmula cty ~ hwy) e atribua as previsões a mpg$pred.
  • Use rmse() para obter a raiz do erro quadrático médio das previsões do modelo completo (mpg$pred). Lembre-se de que rmse() recebe dois argumentos: os valores previstos e o resultado real.
  • Obtenha a raiz do erro quadrático médio das previsões da validação cruzada. Os dois valores são aproximadamente iguais?

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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
___(___, ___)
Editar e executar o código