การถดถอย Poisson และ Quasipoisson สำหรับพยากรณ์จำนวนนับ

Supervised Learning ใน R: การถดถอย

Nina Zumel and John Mount

Win-Vector, LLC

การพยากรณ์จำนวนนับ

  • การถดถอยเชิงเส้น: พยากรณ์ค่าในช่วง $[-\infty, \infty]$
  • จำนวนนับ: จำนวนเต็มในช่วง $[0,\infty]$
Supervised Learning ใน R: การถดถอย

การถดถอย Poisson/Quasipoisson

glm(formula, data, family)
  • family: either poisson or quasipoisson
  • inputs additive and linear in log(count)
Supervised Learning ใน R: การถดถอย

การถดถอย Poisson/Quasipoisson

glm(formula, data, family)
  • family: either poisson or quasipoisson
  • inputs additive and linear in log(count)
  • ผลลัพธ์: จำนวนเต็ม
    • จำนวนนับ: เช่น จำนวนใบสั่งจราจรที่ผู้ขับขี่ได้รับ
    • อัตรา: เช่น จำนวนการเข้าชมเว็บไซต์ต่อวัน
  • การพยากรณ์: อัตรา หรือ ความเข้ม ที่คาดหวัง (ไม่ใช่จำนวนเต็ม)
    • จำนวนใบสั่งจราจรที่คาดหวัง; จำนวนการเข้าชมต่อวันที่คาดหวัง
Supervised Learning ใน R: การถดถอย

Poisson vs. Quasipoisson

  • Poisson สมมติว่า mean(y) = var(y)
  • หาก var(y) ต่างจาก mean(y) มาก — ใช้ quasipoisson
  • โดยทั่วไปต้องการขนาดตัวอย่างที่ใหญ่
  • หากอัตรา/จำนวนนับ >> 0 — การถดถอยปกติก็เพียงพอ
Supervised Learning ใน R: การถดถอย

ตัวอย่าง: การพยากรณ์การเช่าจักรยาน

Supervised Learning ใน R: การถดถอย

สร้างโมเดล

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

เนื่องจาก var(cnt) >> mean(cnt) $\rightarrow$ ใช้ quasipoisson

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

model <- glm(fmla, data = bikesJan, family = quasipoisson)
Supervised Learning ใน R: การถดถอย

ตรวจสอบความพอดีของโมเดล

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
Supervised Learning ใน R: การถดถอย

การพยากรณ์จากโมเดล

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

Supervised Learning ใน R: การถดถอย

ประเมินโมเดล

ประเมินโมเดลจำนวนนับได้ด้วย RMSE

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
Supervised Learning ใน R: การถดถอย

เปรียบเทียบค่าพยากรณ์กับผลลัพธ์จริง

Supervised Learning ใน R: การถดถอย

มาฝึกกันเถอะ!

Supervised Learning ใน R: การถดถอย

Preparing Video For Download...