在R中对非常大、稀疏的矩阵进行k-means聚类?

9
我正在尝试对一个非常大的矩阵进行k-means聚类。
该矩阵大约有500000行x4000列,但非常稀疏(每行只有几个“1”值)。
整个矩阵无法全部载入内存,因此我将其转换为稀疏的ARFF文件。但是R无法读取稀疏的ARFF文件格式。我也有该数据的普通CSV文件。
在R中是否有可用于高效加载此类稀疏矩阵的软件包?然后,我将使用集群包中的常规k-means算法继续进行。
非常感谢。

谢谢你的回答!我还有一个问题 :-) 我正在尝试使用大型kmeans算法,聚类数约为2000,例如“clust <- bigkmeans(mymatrix, centers=2000)”然而,我遇到了以下错误: Error in 1:(10 + 2^k) : result would be too long a vector有人可以给我一些提示吗?我在这里做错了什么?谢谢! - movingabout
1
非常庞大的稀疏矩阵聚类 - Andrew Dalke
4个回答

14

bigmemory软件包(现在是一系列软件包——请看他们的网站)使用k-means作为大数据扩展分析的运行示例。特别是要查看子软件包biganalytics,其中包含k-means函数。


+1 大内存,我不知道他们有这么多的包。 - richiemorrisroe
是的,bigmemory包中的read.data.matrix()函数支持1种原子数据类型。 - Scott Davis

1
请检查:
library(foreign)
?read.arff

干杯。


1

sparkcl执行稀疏层次聚类和稀疏k-means聚类。这对于适合R(即适合内存)的矩阵非常有用。

http://cran.r-project.org/web/packages/sparcl/sparcl.pdf

==

对于非常大的矩阵,我建议尝试使用 Apache Spark 稀疏矩阵和 MLlib 进行解决。不过,目前我不确定它在实验性方面的表现如何。

https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.Matrices$

https://spark.apache.org/docs/latest/mllib-clustering.html


0

对于 R,有一个特殊的 SparseM 包可以高效地处理它。如果这不起作用,我会尝试使用更高性能的语言,比如 C。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接