R 中的逻辑回归,具有数百万个观测值和罕见事件



我正在使用R中~1500万个观察值的大型数据集。我正在尝试运行逻辑回归来预测二进制依赖变量("HasShared"(。由于共享事件非常罕见(不到 1%(,我尝试使用 logistf 回归来处理罕见事件问题。我的数据集中有 48 个变量,其中只有 6 个应该参与回归。当我在 Google 云平台上的虚拟机上工作时,我有额外的 RAM,并将我的 RAM 更改为大约 100 GB。当我尝试运行 logistf 模型时 - 运行永远不会结束。我等了2个多小时,没有完成。所以这似乎不可行。我读到有一个包应该处理非常大的数据集(biglm(的回归,但我正在寻找一种既能处理我的大数据集又能处理罕见事件问题的解决方案。有这样的组合解决方案吗?

这是一个征求意见而不是解决方案的问题。我很想建议你的问题出在这里"我正在处理虚拟机"。虚拟机,单数。也许是一个可以在多个虚拟机之间共享负载的产品?嘭嘭嘭?我最近完成了一门关于预测分析的入门课程。本课程介绍了 HPE Vertica,这是一种具有统计分析功能的基于 SQL 的解决方案。

https://www.futurelearn.com/courses/predictive-analytics

是的,我宁愿将其作为评论发布,但我没有经验值。

我建议您手动构建成本函数最小化算法,而不是使用黑盒库。在这种情况下,您将能够看到成本函数值的进度(如果您使用 Rstudio,您可以刷新变量(、使用学习率 alpha 等。以下是梯度下降的实现方式:

# generate some data:
x1 = rnorm(1000)          
x2 = rnorm(1000)
z = 1 + 2*x1 + 3*x2        
pr = 1/(1+exp(-z))         
y = pr > 0.5               
# apply gradient descent to minimize cost function:
alpha = 0.001
m = length(y)
X = as.matrix(cbind(x0 = rep(1,m), x1,  x2))
Y = y
n = ncol(X)
THETA = rep(0, n)
H_theta = function(i){
  1/(1+exp(-(t(THETA) %*% X[i,]) ) )
}
J_theta <- function(){ -(1/m)*(  sum(  Y*log(mapply(H_theta, 1:m))  +   (1-Y)*log(1 - (mapply(H_theta, 1:m)) )   ) ) }
gradient_j <- function(j){sum((mapply(H_theta, 1:m) - Y)*X[,j]) }

for(i in 1:1000){
  NEW_THETA <- THETA - alpha*mapply(gradient_j, 1:n)
  THETA <- NEW_THETA
  cost = J_theta()
}
predicted_y = mapply(H_theta, 1:m)>0.5
# see results:
table(y == predicted_y)

或者,您可以构建Apache Spark集群并使用其逻辑回归算法。

最新更新