下采样会改变逻辑回归系数吗?

机器算法验证 物流 不平衡类 病例对照研究
2022-01-27 14:54:02

如果我有一个包含非常罕见的正类的数据集,并且我对负类进行了下采样,然后执行逻辑回归,我是否需要调整回归系数以反映我改变了正类的普遍性的事实?

例如,假设我有一个包含 4 个变量的数据集:Y、A、B 和 C。Y、A 和 B 是二进制的,C 是连续的。对于 11,100 个观测值 Y=0,对于 900 个 Y=1:

set.seed(42)
n <- 12000
r <- 1/12
A <- sample(0:1, n, replace=TRUE)
B <- sample(0:1, n, replace=TRUE)
C <- rnorm(n)
Y <- ifelse(10 * A + 0.5 * B + 5 * C + rnorm(n)/10 > -5, 0, 1)

给定 A、B 和 C,我拟合逻辑回归来预测 Y。

dat1 <- data.frame(Y, A, B, C)
mod1 <- glm(Y~., dat1, family=binomial)

但是,为了节省时间,我可以删除 10,200 个非 Y 观测值,给出 900 Y=0 和 900 Y=1:

require('caret')
dat2 <- downSample(data.frame(A, B, C), factor(Y), list=FALSE)
mod2 <- glm(Class~., dat2, family=binomial)

两个模型的回归系数看起来非常相似:

> coef(summary(mod1))
              Estimate Std. Error   z value     Pr(>|z|)
(Intercept) -127.67782  20.619858 -6.191983 5.941186e-10
A           -257.20668  41.650386 -6.175373 6.600728e-10
B            -13.20966   2.231606 -5.919353 3.232109e-09
C           -127.73597  20.630541 -6.191596 5.955818e-10
> coef(summary(mod2))
              Estimate  Std. Error     z value    Pr(>|z|)
(Intercept) -167.90178   59.126511 -2.83970391 0.004515542
A           -246.59975 4059.733845 -0.06074284 0.951564016
B            -16.93093    5.861286 -2.88860377 0.003869563
C           -170.18735   59.516021 -2.85952165 0.004242805

这使我相信下采样不会影响系数。然而,这是一个单一的、人为的例子,我宁愿知道。

1个回答

下采样等效于医学统计中的病例对照设计——您正在修复响应计数并观察协变量模式(预测变量)。或许关键参考文献是 Prentice & Pyke (1979),“Logistic 疾病发病模型和病例对照研究”,Biometrika66,3

他们使用贝叶斯定理重写了给定协变量模式概率的每个项,条件是作为两个因素的案例或控制;一个代表普通逻辑回归(作为协变量模式条件下的案例或控制的概率),另一个代表协变量模式的边际概率。他们表明,最大化总体似然性受限于作为病例或控制的边际概率由抽样方案固定的约束,与在没有约束的情况下最大化第一个因素(即执行普通逻辑回归)相同的优势比估计值.

人口的截距β0可以从病例对照截距估计β^0如果人口流行π已知:

β^0=β^0log(1ππn1n0)

在哪里n0&n1分别是抽样的控制和案例的数量。

当然,通过丢弃数据,您会费力地收集数据,尽管是最没用的部分,但您正在降低估计的精确度。计算资源的限制是我知道这样做的唯一充分理由,但我之所以提到它,是因为有些人似乎认为“平衡的数据集”很重要,因为我无法确定其他一些原因。