CommencezCommencez gratuitement

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évoit y.
  • label : catégorielle : indique si y provient 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

Voir le cours

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.
  • 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")
Modifier et exécuter le code