K-means具有非常大的矩阵

时间:2011-06-16 13:08:27

标签: r cluster-analysis weka k-means mahout

我必须在一个非常庞大的矩阵上执行k-means聚类(大约300.000x100.000值超过100Gb)。我想知道我是否可以使用R软件来执行此操作或weka。 我的计算机是一个多处理器,具有8Gb的ram和数百Gb的可用空间。

我有足够的空间进行计算但加载这样的矩阵似乎是R的问题(我不认为使用bigmemory包会帮助我和大矩阵自动使用我的所有RAM然后我的交换文件,如果不够空间)。

所以我的问题是:我应该使用哪种软件(最终与其他软件包或自定义设置相关联)。

感谢您的帮助。

注意:我使用的是linux。

4 个答案:

答案 0 :(得分:7)

它必须是K-means吗?另一种可能的方法是首先将数据转换为网络,然后应用图形聚类。我是MCL的作者,这是一种在生物信息学中经常使用的算法。链接到的实现应该很容易扩展到具有数百万个节点的网络 - 假设您有100K属性,您的示例将具有300K节点。使用这种方法,数据将在数据转换步骤中自然地被修剪 - 并且该步骤很可能成为瓶颈。你如何计算两个向量之间的距离?在我处理的应用程序中,我使用了Pearson或Spearman相关性,而MCL附带了软件,可以有效地对大规模数据执行此计算(它可以使用多个CPU和多台机器)。

数据大小仍然存在问题,因为大多数群集算法都要求您至少执行一次所有成对比较。您的数据是否真的存储为巨型矩阵?输入中有多个零吗?或者,你有办法丢弃较小的元素吗?您是否可以访问多台计算机以分发这些计算?

答案 1 :(得分:1)

我保留link(对特定用户有用)但我同意Gavin的评论! 要在大数据上执行k-means聚类,您可以使用在Revolution R Enterprise R专有实现中实现的rxKmeans函数(我知道这可能是个问题);这个功能似乎能够管理那种数据。

答案 2 :(得分:0)

因为我们对数据一无所知,也没有提问者的目标 对于它,只是几个一般链接:
I. Guyon's video lectures - 许多论文和书籍 feature selection on stats.stackexchange

答案 3 :(得分:0)

查看Mahout,它将对大型数据集执行k表示:

http://mahout.apache.org/