层次聚类大型稀疏距离矩阵R

3

我试图在一组非常大的距离上执行fastclust,但遇到了问题。

我有一个非常大的csv文件(大约9100万行,所以在R中使用for循环太长时间)。这些是关键字之间的相似性(大约有50000个唯一关键字),当我读入一个数据框时,看起来像:

> df   
kwd1 kwd2 similarity  
a  b  1  
b  a  1  
c  a  2  
a  c  2 

这是一个稀疏列表,我可以使用sparseMatrix()将其转换为稀疏矩阵:

> myMatrix 
  a b c  
a . . .
b 1 . .
c 2 . .

然而,当我尝试使用as.dist()将其转换为dist对象时,R会报错说'问题太大了'。我已经阅读了这里的其他关于dist的问题,但是其他人建议的代码对我上面的数据集并不起作用。
谢谢任何帮助!
1个回答

3
虽然一开始使用稀疏矩阵似乎是个好主意,但我认为这种方法存在一个问题:你的缺失距离将被编码为0而不是NA(参见Creating (and Accessing) a Sparse Matrix with NA default entries)。如你所知,在聚类时,零差异具有完全不同的含义,与缺失值不同...

因此,你需要一个带有许多NA的dist对象来处理缺失的不相似性。不幸的是,你的问题太大了,需要太多内存:

d <- dist(x = rep(NA_integer_, 50000))
# Error: cannot allocate vector of size 9.3 Gb

仅仅处理输入就已经很复杂了...即使使用有大量内存的64位机器,我也不确定聚类算法本身是否会卡住或无限运行。

你应该考虑将问题拆分成更小的部分。


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