【问题标题】:Logistic regression in R with millions of observations and rare eventsR中的逻辑回归,具有数百万个观察值和罕见事件
【发布时间】:2017-08-17 05:09:03
【问题描述】:

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

【问题讨论】:

  • “罕见事件问题”也称为不平衡分类问题,DMwR 包中的SMOTE 函数可用于解决此问题,请参阅CRANSMOTE paper

标签: r logistic-regression large-data


【解决方案1】:

这是一个征求意见而非解决方案的问题。我很想建议您的问题在于“我正在使用虚拟机”。虚拟机,单数。也许是一种可以跨多个虚拟机分担负载的产品? RHadoop?我最近完成了关于预测分析的入门课程。该课程介绍了 HPE Vertica,这是一种基于 SQL 的解决方案,具有统计分析功能。

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

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

【讨论】:

    【解决方案2】:

    我建议您手动构建成本函数最小化算法,而不是使用黑盒库。在这种情况下,您将能够看到成本函数值的进展(如果您使用 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 集群并使用他们的逻辑回归算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2018-01-26
      • 2019-08-20
      • 2019-04-12
      相关资源
      最近更新 更多