Regresja Poissona i quasi-Poissona do prognozowania liczeń

Nadzorowane uczenie maszynowe w R: regresja

Nina Zumel and John Mount

Win-Vector, LLC

Prognozowanie liczeń

  • Regresja liniowa: prognozuje wartości z $[-\infty, \infty]$
  • Liczenia: liczby całkowite z zakresu $[0,\infty]$
Nadzorowane uczenie maszynowe w R: regresja

Regresja Poissona/quasi-Poissona

glm(formula, data, family)
  • family: poisson lub quasipoisson
  • zmienne addytywne i liniowe w log(liczenie)
Nadzorowane uczenie maszynowe w R: regresja

Regresja Poissona/quasi-Poissona

glm(formula, data, family)
  • family: poisson lub quasipoisson
  • zmienne addytywne i liniowe w log(liczenie)
  • wynik: liczba całkowita
    • liczenia: np. liczba mandatów kierowcy
    • wskaźniki: np. liczba odwiedzin strony/dzień
  • prognoza: oczekiwany wskaźnik lub intensywność (nie całka)
    • oczekiwana liczba mandatów; oczekiwane odwiedziny/dzień
Nadzorowane uczenie maszynowe w R: regresja

Poisson vs. quasi-Poisson

  • Poisson zakłada, że mean(y) = var(y)
  • Jeśli var(y) znacznie różni się od mean(y) – quasi-Poisson
  • Wymaga zazwyczaj dużej próby
  • Jeśli wskaźniki/liczenia >> 0 – zwykła regresja jest wystarczająca
Nadzorowane uczenie maszynowe w R: regresja

Przykład: prognozowanie wypożyczeń rowerów

Nadzorowane uczenie maszynowe w R: regresja

Dopasowanie modelu

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

Ponieważ var(cnt) >> mean(cnt) $\rightarrow$ użyj quasi-Poissona

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

model <- glm(fmla, data = bikesJan, family = quasipoisson)
Nadzorowane uczenie maszynowe w R: regresja

Ocena dopasowania modelu

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
Nadzorowane uczenie maszynowe w R: regresja

Prognozowanie z modelu

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

Nadzorowane uczenie maszynowe w R: regresja

Ocena modelu

Modele liczeń można oceniać za pomocą RMSE

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
Nadzorowane uczenie maszynowe w R: regresja

Porównanie prognoz z rzeczywistymi wartościami

Nadzorowane uczenie maszynowe w R: regresja

Czas na ćwiczenia!

Nadzorowane uczenie maszynowe w R: regresja

Preparing Video For Download...