2017-06-26 171 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