Оценка модели с использованием разбивки на обучающую и тестовую выборки
Теперь вы протестируете модель mpg_model на тестовых данных mpg_test.
Для удобства заранее подготовлены функции rmse() и r_squared(), вычисляющие RMSE и R-квадрат:
rmse(predcol, ycol)
r_squared(predcol, ycol)
где:
- predcol: прогнозируемые значения
- ycol: фактические значения целевой переменной
Вы также построите график зависимости прогнозов от фактических значений.
Как правило, качество модели на обучающих данных выше, чем на тестовых (хотя иногда тестовая выборка «везёт»). Небольшое расхождение в показателях допустимо; если же качество на обучающей выборке значительно лучше — это повод насторожиться.
Фреймы данных mpg_train и mpg_test, модель mpg_model, а также функции rmse() и r_squared() уже загружены.
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Спрогнозируйте расход топлива в городском цикле по переменной
hwyна данныхmpg_train. Запишите прогнозы в столбецpred. - Спрогнозируйте расход топлива в городском цикле по переменной
hwyна данныхmpg_test. Запишите прогнозы в столбецpred. - Используйте функцию
rmse(), чтобы вычислить RMSE для тестовой и обучающей выборок. Сравните результаты. Похожи ли показатели качества? - Повторите то же самое с функцией
r_squared(). Похожи ли показатели качества? - С помощью
ggplot2постройте график зависимости прогнозов отctyна тестовых данных.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Examine the objects that have been loaded
ls.str()
# predict cty from hwy for the training set
mpg_train$pred <- ___
# predict cty from hwy for the test set
mpg_test$pred <- ___
# Evaluate the rmse on both training and test data and print them
(rmse_train <- ___)
(rmse_test <- ___)
# Evaluate the r-squared on both training and test data.and print them
(rsq_train <- ___)
(rsq_test <- ___)
# Plot the predictions (on the x-axis) against the outcome (cty) on the test data
ggplot(___, aes(x = ___, y = ___)) +
geom_point() +
geom_abline()