Aan de slagGa gratis aan de slag

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 dat y voorspelt.
  • label: categorisch: of y komt uit een populatie die small aankopen doet, of large aankopen.

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

Cursus bekijken

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.
  • 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")
Code bewerken en uitvoeren