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

标签 r distance sparse-matrix bigdata hierarchical-clustering

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

我有一个非常大的 csv 文件(大约 9100 万行,因此 for 循环在 R 中花费的时间太长)关键字(大约 50,000 个唯一关键字)之间的相似性,当我读入 data.frame 时看起来像:

> 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 问题,但是代码其他人建议不适用于我上面的示例数据集。

感谢您的帮助!

最佳答案

虽然一开始使用稀疏矩阵似乎是个好主意,但我认为这种方法存在一些问题:您丢失的距离将被编码为 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 位机器,我也不确定聚类算法本身是否会阻塞或无限期地运行。

您应该考虑将您的问题分解成更小的部分。

关于r - 层次聚类大稀疏距离矩阵R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393466/

相关文章:

c# - Jaccard 得分/距离或重叠百分比

python - scipy 中稀疏矩阵的 Log-sum-exp 技巧

python - Scipy稀疏矩阵和稀疏向量之间的欧几里德距离

r - ggplot 上的混合刻度

r - 如何将数据从 libsvm 导入到 R

r - R引用类中有析构函数吗?

r - 隐藏和显示评论

mysql - 如何按距给定点的距离对行进行排序,mysql?

python - 为什么 cv2.NORM_HAMMING 给出的值与实际汉明距离不同?

r - 从列表中加载 r 中的稀疏矩阵