大型glm模型和内存管理

问题描述 投票:0回答:1

我正在使用h2o训练一组glm模型,其中非常稀疏训练矩阵(4million x 50k)相同,但是每个模型的响应变量(y)不同。我正在使用的步骤是

  1. 将训练矩阵读取为3col熊猫表(row_id,col_id,值)[时间:<5s]
  2. [scipy.sparse.csc_matrix是使用表[时间:<5s]]创建的>
  3. train_h2o_orig = h2o.H2OFrame(csc_matrix)
  4. 此循环中的火车
  5. for y in cols:
        train_h2o = train_h2o_orig.cbind(h2o.H2OFrame(y))
        train_h2o[-1] = train_h2o[-1].asfactor()
        glm_h2o = H2PGeneralizedLinearEstimator(family="binomial", nfolds=4, nlambdas=20,
                                  lambda_search=True, max_active_predictors=100, seed=12345)
        glm_h2o.train(y=train_h2o.names[-1], training_frame=train_h2o)
    

问题:

  1. 是否有GLM模型训练函数的版本,可以分别提供训练矩阵和响应向量(如H2OFrame s,因此我不必绑定和复制帧。

  2. 这里最慢的步骤是`h2o.H2OFrame(。)(> 30分钟)。是否有更有效的稀疏矩阵格式(csc?coo?csr?)

  3. 过去,我更喜欢编写SVMLight文件并将其读回。但是,我必须在磁盘上创建20个磁盘,然后将其读回。是否创建一种没有响应变量的文件创建方法?

  4. 设置:32核,512GB内存,RHEL7(单用户)/ Python 3.6.9 / h2o 3.30.0.2/jre 1.8.0_251

我正在使用h2o训练一组glm模型,其中非常稀疏的训练矩阵(400万x 50k)相同,但是每个模型的响应变量(y)不同。我正在使用的步骤是...

python h2o glm
1个回答
0
投票

您的问题的答案:

© www.soinside.com 2019 - 2024. All rights reserved.