具有一百万行和18列的数据需要使用平均链接聚类进行聚类,这反过来又需要计算行之间的欧氏距离。这样做时,d <-dist(data)
,R会给出以下错误:
错误:无法分配大小为3725.3 Gb 的矢量
我的电脑内存为32 Gb。我应该采取什么方法?
距离矩阵,即使只有它的上对角线,也总是需要大约2TB的内存。此外,分层聚类的快速实现具有时间复杂性$O(n^2($。你可以尝试两件事:
- 使用fastcluster包中的函数
hclust.vector
,该函数不需要距离矩阵作为输入,从而以牺牲时间复杂性为代价节省了空间复杂性 - 使用不基于所有成对距离的不同聚类算法,例如k-means
您也可以尝试s混合方法,首先用2压缩数据。然后施加1。