Régressions de Poisson et quasipoisson pour prédire des décomptes

Apprentissage supervisé en R : Régression

Nina Zumel and John Mount

Win-Vector, LLC

Prédire des décomptes

  • Régression linéaire : prédit des valeurs dans $[-\infty, \infty]$
  • Décomptes : entiers dans $[0,\infty]$
Apprentissage supervisé en R : Régression

Régression Poisson/Quasipoisson

glm(formula, data, family)
  • family : poisson ou quasipoisson
  • entrées additives et linéaires dans log(count)
Apprentissage supervisé en R : Régression

Régression Poisson/Quasipoisson

glm(formula, data, family)
  • family : poisson ou quasipoisson
  • entrées additives et linéaires dans log(count)
  • variable cible : entier
    • décomptes : p. ex. nombre d'amendes reçues par un conducteur
    • taux : p. ex. nombre de visites/jour d'un site web
  • prédiction : taux ou intensité attendus (non entier)
    • nombre attendu d'amendes ; visites/jour attendues
Apprentissage supervisé en R : Régression

Poisson vs Quasipoisson

  • Le modèle de Poisson suppose mean(y) = var(y)
  • Si var(y) est très différente de mean(y) : quasipoisson
  • Nécessite en général un grand effectif
  • Si taux/décomptes >> 0 : la régression classique convient
Apprentissage supervisé en R : Régression

Exemple : prédire les locations de vélos

Apprentissage supervisé en R : Régression

Ajuster le modèle

bikesJan %>% 
  summarize(mean = mean(cnt), var = var(cnt))
      mean      var
1 130.5587 14351.25

Comme var(cnt) >> mean(cnt) $\rightarrow$ utiliser quasipoisson

fmla <- cnt ~ hr + holiday + workingday + 
  weathersit + temp + atemp + hum + windspeed

model <- glm(fmla, data = bikesJan, family = quasipoisson)
Apprentissage supervisé en R : Régression

Vérifier l'ajustement

$$ pseudo R^2 = 1 - \frac{deviance}{null.deviance} $$

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
Apprentissage supervisé en R : Régression

Prédire avec le modèle

predict(model, newdata = bikesFeb, type = "response")

Apprentissage supervisé en R : Régression

Évaluer le modèle

Vous pouvez évaluer ces modèles par la RMSE

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
Apprentissage supervisé en R : Régression

Comparer prédictions et valeurs réelles

Apprentissage supervisé en R : Régression

Passons à la pratique !

Apprentissage supervisé en R : Régression

Preparing Video For Download...