Erreur relative
Dans cet exercice, vous allez comparer l'erreur relative à l'erreur absolue. Pour les besoins de la modélisation, nous allons définir l'erreur relative comme
$$ rel = \frac{(y - pred)}{y} $$
c'est-à-dire que l'erreur est exprimée relativement à la véritable valeur. Vous mesurerez l'erreur relative globale d'un modèle à l'aide de l'erreur quadratique moyenne relative :
$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$
où \(\overline{rel^2}\) est la moyenne de \(rel^2\).
Le jeu de données d'exemple (jouet) fdata a été préchargé. Il comprend les colonnes :
y: la véritable sortie à prédire par un modèle; imaginez qu'il s'agit du montant qu'un client dépensera lors d'une visite dans votre magasin.pred: les prédictions d'un modèle qui prévoity.label: catégorielle : indique siyprovient d'une population qui fait de « small » achats ou de « large » achats.
Vous voulez savoir quel modèle « fait mieux » : celui qui prédit les petits achats (« small ») ou celui qui prédit les gros achats (« large »).
Cette activité fait partie du cours
Apprentissage supervisé en R : régression
Instructions de l’exercice
- Remplissez les espaces vides pour examiner les données. Remarquez que les gros achats ont tendance à être environ 100 fois plus élevés que les petits.
- Remplissez les espaces vides pour créer les colonnes d'erreur :
- Définissez le résidu comme
y - pred. - Définissez l'erreur relative comme
residual / y.
- Définissez le résidu comme
- Remplissez les espaces vides pour calculer et comparer le RMSE et le RMSE relatif.
- Comment les erreurs absolues se comparent-elles? Et les erreurs relatives?
- Examinez le nuage des prédictions par rapport aux valeurs observées.
- Selon vous, quel modèle « fait mieux »?
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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")