我有一个包含超过250,000个观测值的大型数据集,我想使用TraMineR包进行分析。特别是,我想使用命令seqtree和seqdist,例如,当我使用10,000个观察值的子样本时,它可以很好地工作。我的计算机可以管理的极限是大约20,000个观察值。
我想使用所有的观测结果,而且我确实可以使用一台超级计算机,他应该能够做到这一点。然而,这并没有多大帮助,因为该进程仅在单个内核上运行。因此,我的问题是,是否有可能将并行计算技术应用于上述命令?或者,有没有其他方法来加速这个过程?任何帮助都将不胜感激!
发布于 2013-07-04 16:31:43
内部seqdist函数是用C++编写的,有许多优化。因此,如果你想并行化seqdist,你需要在C++中完成。该循环位于源文件"distancefunctions.cpp“中,您需要查看位于函数"cstringdistance”中的第300行周围的两个循环(抱歉,所有注释都是法语的)。不幸的是,第二个重要的优化是在所有计算之间共享内存。因此,我认为并行化将是非常复杂的。
除了选择样本之外,您还应该考虑以下优化:
相同序列的
seqdist中有一个隐藏的选项,可以使用优化版本的最佳匹配算法。它仍然处于测试阶段(这就是它被隐藏的原因),但它应该会在未来的版本中取代实际的算法。要使用它,请设置method="OMopt",而不是method="OM"。根据您的顺序,它可能会减少计算时间。https://stackoverflow.com/questions/17464385
复制相似问题