10

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

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

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

谢谢你帮助我。

注意:我使用linux。

4

4 回答 4

9

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

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

于 2011-06-16T14:25:11.270 回答
1

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

于 2011-06-16T13:35:09.920 回答
0

由于我们对数据一无所知,也不知道提问者的目标,只有几个通用链接:
I. Guyon 的视频讲座——还有许多论文和书籍。
stats.stackexchange 上的功能选择

于 2011-06-22T14:55:47.067 回答
0

查看 Mahout,它将在大型数据集上执行 k 均值:

http://mahout.apache.org/

于 2012-09-14T22:15:22.973 回答