将稀疏矩阵导入 h2o 实例非常慢

Importing sparse matrix to h2o instance is very slow

我在 R 中得到了一个 [210,000 x 500] 稀疏矩阵,我正在尝试使用 h2o 对其进行聚类。 我想象一个 210,000 行矩阵对于 h2o 来说不是那么大,但是当我尝试将它导入到 h2o 实例时它需要很长时间(让它 运行 超过 10 分钟并在完成之前停止它) 当我将稀疏矩阵中的前 10,000 行子集化并导入时,只需要几秒钟。而且我已经尝试逐步进行,但需要很长时间。 (到 60,000 我停了下来) 这是正常的还是我做错了什么?

这是我正在使用的

library(h2o)
localH2O <- h2o.init(nthreads = -1, max_mem_size = "16g")     
spmx.h2o <- as.h2o(sparse_mx)

以下是有关 h2o 实例生成时的更多信息:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Starting H2O JVM and connecting: . Connection successful!

    R is connected to the H2O cluster: 
        H2O cluster uptime:         6 seconds 779 milliseconds 
        H2O cluster version:        3.10.4.6 
        H2O cluster version age:    1 month and 30 days  
        H2O cluster name:           H2O_started_from_R_M_vto433 
        H2O cluster total nodes:    1 
        H2O cluster total memory:   14.22 GB 
        H2O cluster total cores:    4 
        H2O cluster allowed cores:  4 
        H2O cluster healthy:        TRUE 
        H2O Connection ip:          localhost 
        H2O Connection port:        54321 
        H2O Connection proxy:       NA 
        H2O Internal Security:      FALSE 
        R Version:                  R version 3.4.0 (2017-04-21) 

我试图避免将矩阵写入文件并再次导入,仅仅是因为我认为 210,000 行和 500 列对于 h2o 来说应该不是问题

目前看来还不能直接通过R将稍微大一点的稀疏矩阵导入到h2o实例中。相反,通过 SVMLight 文件导入要快得多。如此处所述


编辑:寻找将稀疏矩阵文件转换为 SVMLight 格式(高效快速的算法) 我尝试使用 laurai2/sparsity 包将稀疏矩阵高效转换为 SVMLgith 格式文件。但是由于某些 Cpp 编译错误,我无法安装该软件包。 根据@Dmitriy Selivanov 的建议,我使用了 sparsio 包,可以轻松地将稀疏矩阵转换为 SVMLight 格式并快速将其导入 h2o。

## The following works
library(sparsio)
library(h2o)
write_svmlight(x = spmx, file = "spmx_svmlight.txt", zero_based = FALSE) #h2o accepts one_based by default

localH2O <- h2o.init(nthreads = -1, max_mem_size = "16g")  
spmx.h2o <- h2o.importFile("spmx_svmlight.txt", parse = TRUE) 

我的数据集仍然很小,我不确定 write_svmlight 在更大的数据集上的表现如何。我的数据用了大约40秒,还可以。