使用CUDA的Fp增长算法

时间:2011-03-23 06:48:04

标签: cuda data-mining

我必须使用CUDA开发数据挖掘算法。我搜索了很多,发现大多数算法已经实现,除了FpGrowth 你认为这是一个好主意吗?你能告诉我如何实施它吗?

3 个答案:

答案 0 :(得分:1)

我会回答你的第一个问题:“这是一个好主意吗?”嗯,我认为如果你需要它是个好主意。但是,如果你只是想这样做,因为它还没有完成,也许它不是一个好主意。

对于第二个问题,请确保您很好地理解FPGrowth。您可以阅读描述FPGrowth的原始论文。您也可以查看“数据挖掘简介”一书。它有一个易于理解的FPGrowth描述。在你理解了FPGrowth之后,你可以看到如何用CUDA实现它...这是我的建议。

答案 1 :(得分:0)

我找到了一个网页,描述了如何绘制FP树以及如何从该树中识别频繁模式。您可以访问该网站并阅读信息。

How to identify frequent patterns using FP tree algorithm

答案 2 :(得分:-2)

我不知道FpGrowth,但我猜你已经阅读了论文(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.162.1209&rep=rep1&type=pdf等)。我想你是CUDA的新手,这使得实现复杂的东西变得相当困难。

CUDA良好性能的关键是大规模的统一并行性和litte同步。 CUDA区http://www.nvidia.com/object/cuda_apps_flash_new.html有很多很好的例子,它们的工作原理和方式如何。学习CUDA的一个很好的起点是编程指南http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf

一个常见的问题是“我有这个C代码,如何将它移植到CUDA”。答案是不要!在CUDA中没有指针,没有字符串,没有打印,没有文件,而且你学到的有关高效代码的大部分内容都是错误的。

更有前途的方法是以更抽象的方式考虑底层算法。确定可以并行完成的任务,考虑一个好的数据结构(可能涉及大型数组),实现原型。依靠像Thrust http://code.google.com/p/thrust/这样的CUDA库来获得第一个版本可能更容易。

关于FpGrowth,有什么可以并行完成的吗?构建动态树和树遍历通常不被认为很容易在CUDA中有效实现。