如何在 R 中使用并行执行来实现层次聚类技术

数据挖掘 机器学习 r 数据科学模型 聚类
2022-03-05 17:22:07

在 R 中,目前为了实现层次聚类的 wards 方法,我使用以下代码 - results <- hclust(data, "ward.D2")然而,随着我的数据量呈指数增长,我想实现并行执行。

由于找不到包,我尝试重新编写 hclust 方法,但是它的大部分代码都是用 fortan 编写的。

有没有办法在这里实现并行执行?

1个回答

该算法的复杂度为 O(n³),并且需要 O(n²) 内存。

因此,如果您的数据“呈指数级”增长,您最好采用基于采样的方法!

认真:对 5k、10k、20k、40k、80k 实例的运行时间和内存要求进行基准测试。您应该能够观察到 O(n²)(用于计算距离矩阵)和 O(n³) 之间的一些东西来进行聚类。然后估计这需要多长时间(以及您需要多少内存)。即使您非常乐观,也可以将其除以您可以运行的线程数 M。如果您可以运行 M 个线程,则更现实的值将是 M/2。

当您真的确信您可以使用生成的运行时时,只需自己实现算法即可。这是一个非常简单的算法。无需研究 Fortran 代码。但很可能您的代码将比编写良好的旧 Fortran 代码慢 2 倍(如果使用纯 Python 或 R,则为 20 倍)......