Poissonova a quasipoissonova regrese pro predikci počtů

Supervised Learning in R: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Predikce počtů

  • Lineární regrese: predikuje hodnoty v $[-\infty, \infty]$
  • Počty: celá čísla v rozsahu $[0,\infty]$
Supervised Learning in R: Regression

Poissonova/quasipoissonova regrese

glm(formula, data, family)
  • family: poisson nebo quasipoisson
  • vstupy jsou aditivní a lineární v log(počtu)
Supervised Learning in R: Regression

Poissonova/quasipoissonova regrese

glm(formula, data, family)
  • family: poisson nebo quasipoisson
  • vstupy jsou aditivní a lineární v log(počtu)
  • výsledek: celé číslo
    • počty: např. počet dopravních přestupků řidiče
    • míry: např. počet návštěv webu/den
  • predikce: očekávaná míra nebo intenzita (ne celé číslo)
    • očekávaný počet přestupků; očekávané návštěvy/den
Supervised Learning in R: Regression

Poisson vs. quasipoisson

  • Poisson předpokládá, že mean(y) = var(y)
  • Pokud se var(y) výrazně liší od mean(y) – použijte quasipoisson
  • Obvykle vyžaduje velký vzorek dat
  • Pokud jsou míry/počty >> 0 – postačí standardní regrese
Supervised Learning in R: Regression

Příklad: Predikce půjčování kol

Supervised Learning in R: Regression

Trénování modelu

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

Protože var(cnt) >> mean(cnt) $\rightarrow$ použijte quasipoisson

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

model <- glm(fmla, data = bikesJan, family = quasipoisson)
Supervised Learning in R: Regression

Ověření shody modelu

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
Supervised Learning in R: Regression

Predikce z modelu

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

Supervised Learning in R: Regression

Vyhodnocení modelu

Modely pro počty lze hodnotit pomocí RMSE

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
Supervised Learning in R: Regression

Porovnání predikcí se skutečnými hodnotami

Supervised Learning in R: Regression

Pojďme si to procvičit!

Supervised Learning in R: Regression

Preparing Video For Download...