Відносна помилка
У цій вправі ви порівняєте відносну помилку з абсолютною. Для моделювання визначимо відносну помилку як
$$ 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")