Transformer la réponse 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 lognormale
  • Longue traîne, large plage dynamique (60–700 K)
Apprentissage supervisé en R : régression

Distributions lognormales

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

Retour à la distribution normale

Pour une distribution normale :

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

La procédure

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

La procédure

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

La procédure

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

Prédire des résultats log-transformés : 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 (RMS) = $\sqrt{ \overline{ (\frac{pred-y}{y})^2 }}$

  • Prédire la cible en log réduit l'erreur RMS relative
  • Mais le modèle aura souvent un RMSE plus grand
Apprentissage supervisé en R : régression

Exemple : modéliser directement le revenu

modIncome <- lm(Income ~ AFQT + Educ, data = train)
  • AFQT : score à un test d'aptitudes 25 ans avant l'enquête
  • Educ : années de scolarité 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 RMS 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 RMS relative
38 906,61 2,276865
Apprentissage supervisé en R : régression

Comparer les erreurs

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

Modèle RMSE Erreur RMS 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...