Kom igångKom igång gratis

Relativt fel

I den här övningen jämför du relativt fel med absolut fel. För modelleringens skull definierar vi relativt fel som

$$ rel = \frac{(y - pred)}{y} $$

dvs. felet ställs i relation till det sanna utfallet. Det totala relativa felet mäts med roten ur det relativa medelkvadratfelet:

$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$

där \(\overline{rel^2}\) är medelvärdet av \(rel^2\).

Exempeldatamängden fdata är förinläst. Den innehåller följande kolumner:

  • y: det sanna utfall som en modell ska förutsäga – tänk dig att det är hur mycket en kund spenderar vid ett butiksbesök.
  • pred: förutsägelserna från en modell som förutsäger y.
  • label: kategorisk variabel som anger om y kommer från en population med small (små) eller large (stora) köp.

Du vill ta reda på vilken modell som presterar "bättre": den som förutsäger small-köpen eller den som förutsäger large-köpen.

Den här övningen är en del av kursen

Övervakad inlärning i R: Regression

Visa kurs

Övningsinstruktioner

  • Fyll i de tomma fälten för att undersöka data. Lägg märke till att stora köp tenderar att vara ungefär 100 gånger större än små.
  • Fyll i de tomma fälten för att skapa felkolumner:
    • Definiera residualen som y - pred.
    • Definiera det relativa felet som residual / y.
  • Fyll i de tomma fälten för att beräkna och jämföra RMSE och relativt RMSE.
    • Hur förhåller sig de absoluta felen till varandra? Och de relativa felen?
  • Undersök diagrammet över förutsägelser i förhållande till utfall.
    • Vilken modell anser du presterar "bättre"?

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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")
Redigera och kör kod