Régression de Poisson et quasi-Poisson pour prédire des comptes

Apprentissage supervisé en R : régression

Nina Zumel and John Mount

Win-Vector, LLC

Prédire des comptes

  • Régression linéaire : prédit des valeurs dans $[-\infty, \infty]$
  • Comptes : entiers dans l'intervalle $[0,\infty]$
Apprentissage supervisé en R : régression

Régression Poisson/quasi-Poisson

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/quasi-Poisson

glm(formula, data, family)
  • family : poisson ou quasipoisson
  • entrées additives et linéaires dans log(count)
  • résultat : entier
    • comptes : p. ex. nombre de contraventions reçues par un conducteur
    • taux : p. ex. nombre de visites Web/jour
  • prédiction : taux ou intensité attendus (non entier)
    • de contraventions attendues ; visites/jour attendues

Apprentissage supervisé en R : régression

Poisson vs quasi-Poisson

  • Poisson suppose que mean(y) = var(y)
  • Si var(y) diffère beaucoup de mean(y) : quasi-Poisson
  • Exige généralement un grand échantillon
  • Si taux/comptes >> 0 : la régression classique convient
Apprentissage supervisé en R : régression

Exemple : prédire la location 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 quasi-Poisson

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

$$ R^2\text{ pseudo} = 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 des modèles de comptes avec 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 observations

Apprentissage supervisé en R : régression

Passons à la pratique !

Apprentissage supervisé en R : régression

Preparing Video For Download...