Относительная ошибка
В этом упражнении вы сравните относительную ошибку с абсолютной. В целях моделирования определим относительную ошибку следующим образом:
$$ rel = \frac{(y - pred)}{y} $$
то есть ошибка выражается относительно истинного значения. Общую относительную ошибку модели будем измерять с помощью корня из среднеквадратичной относительной ошибки:
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
где \(\overline{rel^2}\) — среднее значение \(rel^2\).
Пример набора данных fdata уже загружен. Он содержит следующие столбцы:
y: истинное выходное значение, которое должна предсказать модель; представьте, что это сумма, которую покупатель потратит при посещении вашего магазина.pred: предсказания модели дляy.label: категориальный признак: относится лиyк группе покупателей, совершающихsmall(небольшие) илиlarge(крупные) покупки.
Ваша задача — определить, какая модель работает «лучше»: та, что предсказывает small, или та, что предсказывает large.
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Заполните пропуски, чтобы изучить данные. Обратите внимание: крупные покупки, как правило, примерно в 100 раз больше небольших.
- Заполните пропуски, чтобы создать столбцы с ошибками:
- Определите остаток как
y - pred. - Определите относительную ошибку как
residual / y.
- Определите остаток как
- Заполните пропуски, чтобы вычислить и сравнить RMSE и относительный RMSE.
- Как соотносятся абсолютные ошибки? А относительные?
- Изучите график предсказаний и истинных значений.
- На ваш взгляд, какая модель работает «лучше»?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# fdata is available
summary(fdata)
# Examine the data: generate the summaries for the groups large and small:
fdata %>%
group_by(label) %>% # group by small/large purchases
summarize(min = ___, # min of y
mean = ___, # mean of y
max = ___) # max of y
# Fill in the blanks to add error columns
fdata2 <- fdata %>%
group_by(label) %>% # group by label
mutate(residual = ___, # Residual
relerr = ___) # Relative error
# Compare the rmse and rmse.rel of the large and small groups:
fdata2 %>%
group_by(label) %>%
summarize(rmse = ___, # RMSE
rmse.rel = ___) # Root mean squared relative error
# Plot the predictions for both groups of purchases
ggplot(fdata2, aes(x = pred, y = y, color = label)) +
geom_point() +
geom_abline() +
facet_wrap(~ label, ncol = 1, scales = "free") +
ggtitle("Outcome vs prediction")