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
Instruções do exercício
- Execute o plano de validação cruzada de 3 partes do
splitPlane coloque as previsões na colunampg$pred.cv.- Use
lm()e a fórmulacty ~ hwy.
- Use
- Crie um modelo de regressão linear com todos os dados de
mpg(fórmulacty ~ hwy) e atribua as previsões ampg$pred. - Use
rmse()para obter a raiz do erro quadrático médio das previsões do modelo completo (mpg$pred). Lembre-se de quermse()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
___(___, ___)