2017-06-26 175 views
0

我在R中得到了一个[210,000 x 500]稀疏矩阵,我试图用h2o进行聚类。 我想像一个210,000行矩阵对于h2o不是那么大,但是当我尝试将它导入到h2o实例时,它需要很长时间(让它运行超过10分钟并在完成之前停止它) 当我子集第一个以稀疏矩阵填充10,000行并导入它,它只需要几秒钟。而且我尝试过逐渐增加,这需要很长时间。 (由60,000停止) 这是正常的还是我做错了什么?将稀疏矩阵导入h2o实例非常缓慢

这里就是我使用的是什么

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) 

我试图避免编写的矩阵再次文件并导入,只是因为我认为21万行和500列不应该是一个问题h2o处理

+0

发现几个SO答案似乎是为了解决数据传输的速度问题。这里是一个:https://stackoverflow.com/questions/41477700/optimising-sapply-or-for-paste-to-efficiently-transform-sparse-triplet-m我会搜索其他人,然后说出你试图尝试哪些,为什么他们没有解决你的问题。 –

+0

我已经打开了JIRA票,我们正在调查问题:https://0xdata.atlassian.net/browse/PUBDEV-4630 –

回答

0

看来它是不是真的可以导入稍大的稀疏矩阵int o直接通过R的实例。相反,通过SVMLight文件导入要快得多。如这里讨论

How to get sparse matrices into H2O?


编辑:在搜索稀疏矩阵文件转换为SVMLight格式(有效和快速的算法) 的我尝试使用laurai2 /稀疏包稀疏矩阵来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秒,这是可以的。

+1

检查快速svmlight读者和作家sparsio包。我上周把它放在了cran上。 –

+0

谢谢@Dmitriy Selivanov。我一直试图安装laura2/sparsity包无济于事。我会尝试使用sparsio。 – Ankhnesmerira

+0

sparsio不转换dgCMatrix类型,是吗? – Ankhnesmerira