ПочатиПочніть безкоштовно

Оцініть процедуру моделювання за допомогою n-фолдної крос-валідації

У цій вправі ви використаєте splitPlan, 3-фолдний план крос-валідації з попередньої вправи, щоб отримати передбачення з моделі, яка прогнозує mpg$cty за mpg$hwy.

Якщо dframe — це тренувальні дані, один зі способів додати до датафрейму стовпчик з крос-валідаційними передбаченнями такий:

# Ініціалізуйте стовпчик потрібної довжини
dframe$pred.cv <- 0 

# k — кількість фолдів
# splitPlan — план крос-валідації

for(i in 1:k) {
  # Отримайте i-й спліт
  split <- splitPlan[[i]]

  # Побудуйте модель на тренувальних даних 
  # з цього спліту 
  # (у цьому випадку lm)
  model <- lm(fmla, data = dframe[split$train,])

  # зробіть передбачення на 
  # застосовних даних з цього спліту
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

Крос-валідація оцінює, наскільки добре модель, побудована на всіх даних, працюватиме на нових даних. Як і у випадку з поділом на train/test, для якісної процедури моделювання результати крос-валідації та навчальні результати мають бути близькими.

Датафрейм mpg, план крос-валідації splitPlan і функцію rmse() уже завантажено.

Ця вправа є частиною курсу

Кероване навчання в R: регресія

Переглянути курс

Інструкції до вправи

  • Запустіть 3-фолдний план крос-валідації з splitPlan і розмістіть передбачення у стовпчику mpg$pred.cv.
    • Використайте lm() і формулу cty ~ hwy.
  • Створіть лінійну регресійну модель на всіх даних mpg (формула cty ~ hwy) і запишіть передбачення в mpg$pred.
  • Використайте rmse() для обчислення кореня середньоквадратичної помилки для передбачень повної моделі (mpg$pred). Згадайте, що rmse() приймає два аргументи: передбачені значення та фактичний результат.
  • Обчисліть корінь середньоквадратичної помилки крос-валідаційних передбачень. Чи приблизно однакові ці два значення?

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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
___(___, ___)
Редагувати та запускати код