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ägery.label: kategorisk variabel som anger omykommer från en population medsmall(små) ellerlarge(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
Ö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.
- Definiera residualen som
- 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")