Transformer la variable cible avant la modélisation

Apprentissage supervisé en R : Régression

Nina Zumel and John Mount

Win-Vector, LLC

La transformation logarithmique pour les données monétaires

  • Valeurs monétaires : distribution log-normale
  • Longue traîne, large plage dynamique (60–700 K)
Apprentissage supervisé en R : Régression

Distributions log-normales

  • moyenne > médiane (~ 50 K vs 39 K)
  • Prédire la moyenne surestime les valeurs typiques
Apprentissage supervisé en R : Régression

Retour à une distribution normale

Pour une loi normale :

  • moyenne = médiane (ici : 4,53 vs 4,59)
  • plage dynamique plus raisonnable (1,8–5,8)
Apprentissage supervisé en R : Régression

Procédure

  1. Appliquer le log à la cible et ajuster un modèle
     model <- lm(log(y) ~ x, data = train)
    
Apprentissage supervisé en R : Régression

Procédure

  1. Appliquer le log à la cible et ajuster un modèle
     model <- lm(log(y) ~ x, data = train)
    
  2. Produire les prédictions dans l'espace log
     logpred <- predict(model, data = test)
    
Apprentissage supervisé en R : Régression

Procédure

  1. Appliquer le log à la cible et ajuster un modèle
     model <- lm(log(y) ~ x, data = train)
    
  2. Produire les prédictions dans l'espace log
     logpred <- predict(model, data = test)
    
  3. Revenir à l'échelle d'origine
     pred <- exp(logpred)
    
Apprentissage supervisé en R : Régression

Prédire une cible log-transformée : erreur multiplicative

$log(a) + log(b) = log(ab)$

$log(a) - log(b) = log(a/b)$

  • Erreur multiplicative : $pred/y$
  • Erreur relative : $(pred - y)/y = \frac{pred}{y} - 1$

Réduire l'erreur multiplicative réduit l'erreur relative.

Apprentissage supervisé en R : Régression

Erreur quadratique moyenne relative

Erreur quadratique moyenne relative = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Prédire le log de la cible réduit l'erreur quadratique moyenne relative
  • Mais le modèle aura souvent une RMSE plus grande
Apprentissage supervisé en R : Régression

Exemple : modéliser directement le revenu

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT : score à un test d'aptitude 25 ans avant l'enquête
  • Educ : années d'études au moment de l'enquête
  • Income : revenu au moment de l'enquête
Apprentissage supervisé en R : Régression

Performance du modèle

test %>% 
+     mutate(pred = predict(modIncome, newdata = test),
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2))) 
RMSE Erreur quadratique moyenne relative
36 819,39 3,295189
Apprentissage supervisé en R : Régression

Modéliser log(Income)

modLogIncome <- lm(log(Income) ~ AFQT + Educ, data = train)
Apprentissage supervisé en R : Régression

Performance du modèle

test %>% 
+     mutate(predlog = predict(modLogIncome, newdata = test), 
+            pred = exp(predlog), 
+            err = pred - Income) %>%
+     summarize(rmse = sqrt(mean(err^2)),
+               rms.relerr = sqrt(mean((err/Income)^2)))
RMSE Erreur quadratique moyenne relative
38 906,61 2,276865
Apprentissage supervisé en R : Régression

Comparer les erreurs

Modèle log(Income) : erreur relative plus faible, RMSE plus élevée

Modèle RMSE Erreur quadratique moyenne relative
Sur Income 36 819,39 3,295189
Sur log(Income) 38 906,61 2,276865
Apprentissage supervisé en R : Régression

Passons à la pratique !

Apprentissage supervisé en R : Régression

Preparing Video For Download...