Eroarea relativă
În acest exercițiu, vei compara eroarea relativă cu eroarea absolută. În scopul modelării, vom defini eroarea relativă astfel:
$$ rel = \frac{(y - pred)}{y} $$
cu alte cuvinte, eroarea este raportată la valoarea reală a rezultatului. Vei măsura eroarea relativă globală a unui model folosind eroarea relativă pătratică medie (RMSE relativ):
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
unde \(\overline{rel^2}\) reprezintă media valorilor \(rel^2\).
Setul de date exemplu (de tip „toy") fdata a fost preîncărcat. Acesta include următoarele coloane:
y: valoarea reală de prezis de un model; imaginează-ți că reprezintă suma pe care un client o cheltuiește la fiecare vizită în magazinul tău.pred: predicțiile unui model care estimeazăy.label: variabilă categorică – indică dacăyprovine dintr-o populație care face achizițiismall(mici) saularge(mari).
Vrei să afli care model funcționează „mai bine": cel care prezice achizițiile small sau cel care prezice achizițiile large.
Acest exercițiu face parte din cursul
Învățare supervizată în R: Regresia
Instrucțiuni pentru exercițiu
- Completează spațiile libere pentru a examina datele. Observă că achizițiile mari tind să fie de aproximativ 100 de ori mai mari decât cele mici.
- Completează spațiile libere pentru a crea coloanele de eroare:
- Definește rezidualul ca
y - pred. - Definește eroarea relativă ca
residual / y.
- Definește rezidualul ca
- Completează spațiile libere pentru a calcula și compara RMSE și RMSE relativ.
- Cum se compară erorile absolute? Dar cele relative?
- Examinează graficul predicțiilor față de valorile reale.
- În opinia ta, care model funcționează „mai bine"?
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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")