泊松与准泊松回归:预测计数

R 中的监督学习:回归

Nina Zumel and John Mount

Win-Vector, LLC

预测计数

  • 线性回归:预测范围 $[-\infty, \infty]$
  • 计数:整数,范围 $[0,\infty]$
R 中的监督学习:回归

泊松/准泊松回归

glm(formula, data, family)
  • family:poissonquasipoisson
  • 输入在 log(count) 上加性且线性
R 中的监督学习:回归

泊松/准泊松回归

glm(formula, data, family)
  • family:poissonquasipoisson
  • 输入在 log(count) 上加性且线性
  • 结果:整数
    • 计数:如司机收到的罚单数
    • 率:如网站日均访问次数
  • 预测:期望"率/强度"(非整数)
    • 期望罚单数;期望日访问数
R 中的监督学习:回归

泊松 vs. 准泊松

  • 泊松假设 mean(y) = var(y)
  • var(y)mean(y) 差异很大 → 用准泊松
  • 通常需较大样本
  • 若率/计数远大于 0 → 可用普通回归
R 中的监督学习:回归

示例:预测共享单车租用量

R 中的监督学习:回归

拟合模型

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

由于 var(cnt) >> mean(cnt) → 使用准泊松

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

model <- glm(fmla, data = bikesJan, family = quasipoisson)
R 中的监督学习:回归

检验拟合优度

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

glance(model) %>%
  summarize(pseudoR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.7654358
R 中的监督学习:回归

模型预测

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

R 中的监督学习:回归

评估模型

可用 RMSE 评估计数模型

bikesFeb %>%
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2))) 
      rmse
1 69.32869
sd(bikesFeb$cnt)
134.2865
R 中的监督学习:回归

对比预测与实际

R 中的监督学习:回归

Passons à la pratique !

R 中的监督学习:回归

Preparing Video For Download...