向不平衡数据的逻辑回归添加权重

机器算法验证 回归 物流 分类 不平衡类 加权数据
2022-02-14 09:54:38

我想用不平衡的数据 (9:1) 对逻辑回归进行建模。我想尝试glmR 函数中的权重选项,但我不是 100% 确定它的作用。

可以说我的输出变量是c(0,0,0,0,0,0,0,0,0,1). 现在我想给“1”增加 10 倍的重量。所以我给出了权重论点weights=c(1,1,1,1,1,1,1,1,1,1,1,10)

当我这样做时,将在计算最大似然度时考虑它。我对吗?“1”的错误分类比“0”的错误分类严重10倍。

2个回答

加权是对数据进行加权以补偿样本和总体差异的过程(King 2001)。例如,在罕见事件中(例如信用风险欺诈、医学文献中的死亡),我们倾向于对所有 1(罕见事件)和一小部分 0(非事件)进行采样。在这种情况下,我们必须相应地对观察结果进行加权。

示例:假设在 500,000 笔交易中,有 50 笔欺诈交易。在这种情况下,你会

  1. 对所有 50 次欺诈交易进行抽样(100% 的欺诈)
  2. 10% 的好交易(500,000 的 10% 是 50,000 的好交易)

在这种情况下,您将为欺诈交易分配权重 1,为良好交易分配权重 10。这称为加权最大似然法。重要的一点是权重与抽样比例有关

参考:罕见事件数据中的逻辑回归(King 2001)

Ching,您不必使数据集在 1 和 0 方面保持平衡。您所需要的只是足够数量的 1 以使最大似然收敛。查看数据集中 1 (100,000) 的分布,您应该没有任何问题。你可以在这里做一个简单的实验

  1. 对 1 的 10% 和 0 的 10% 进行采样,并为两者使用 10 的权重
  2. 对 1 的 100% 和 0 的 10% 进行采样,并对 0 使用 10 的权重

在这两种情况下,您都会得到相同的估计值。同样,加权的概念与抽样有关。如果您使用整个数据集,则不应对其加权。如果我是你,我只会使用 10% 的 1 和 10% 的 0。

在 R 中,您将使用glm. 这是一个示例代码:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

在您的数据集中应该有一个wt权重变量。

如果您使用 0 和 1 的 10%,则wt变量的值为 10。

如果您使用 10% 的 0 和 100% 的 1:wt对于 y=0 的观察,变量的值为 10,对于 y=1 的观察,变量的值为 1