Relatieve fout
In deze oefening vergelijk je relatieve fout met absolute fout. Voor het modelleren definiëren we de relatieve fout als
$$ rel = \frac{(y - pred)}{y} $$
oftewel: de fout is relatief ten opzichte van de echte uitkomst. Je meet de totale relatieve fout van een model met de root mean squared relative error:
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
waarbij \(\overline{rel^2}\) het gemiddelde is van \(rel^2\).
De voorbeeldgegevensset fdata is al geladen. Deze bevat de kolommen:
y: de echte output die door een model voorspel moet worden; stel je voor dat dit het bedrag is dat een klant uitgeeft bij een bezoek aan je winkel.pred: de voorspellingen van een model datyvoorspelt.label: categorisch: ofykomt uit een populatie diesmallaankopen doet, oflargeaankopen.
Je wilt weten welk model het "beter" doet: het model dat de small aankopen voorspelt, of dat voor de large aankopen.
Deze oefening maakt deel uit van de cursus
Supervised Learning in R: Regressie
Oefeninstructies
- Vul de lege plekken in om de gegevens te bekijken. Let op: grote aankopen zijn vaak ongeveer 100 keer zo groot als kleine.
- Vul de lege plekken in om foutkolommen te maken:
- Definieer residu als
y - pred. - Definieer relatieve fout als
residual / y.
- Definieer residu als
- Vul de lege plekken in om RMSE en relatieve RMSE te berekenen en te vergelijken.
- Hoe vergelijken de absolute fouten? En de relatieve fouten?
- Bekijk de grafiek van voorspellingen versus uitkomst.
- Naar jouw mening: welk model doet het "beter"?
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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")