【问题标题】:Fp Growth Algorithm using CUDA使用 CUDA 的 Fp 增长算法
【发布时间】:2012-03-28 21:46:58
【问题描述】:

我必须使用 CUDA 开发一种数据挖掘算法。查了很多,发现除了FpGrowth,大部分算法都已经实现了。
你认为这是个好主意吗?你能给我一些关于如何实现它的想法吗?

【问题讨论】:

    标签: cuda data-mining


    【解决方案1】:

    我将回答您的第一个问题:“这是个好主意吗?”。好吧,我认为如果你需要它是个好主意。但是,如果您只是因为尚未完成而想这样做,那么这可能不是一个好主意。

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

    【讨论】:

      【解决方案2】:

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

      How to identify frequent patterns using FP tree algorithm

      【讨论】:

        【解决方案3】:

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

        使用 CUDA 获得良好性能的关键是大规模统一并行和少量同步。 CUDA Zone 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 中并不容易高效地实现。

        【讨论】:

        • “在 CUDA 中没有指针,没有字符串,没有打印”?这充其量是误导。 CUDA 中肯定有指针。您也可以轻松使用 char* 字符串。您甚至可以在最近的版本中使用 printf 来使用 print,但如果您想要获得良好的性能,您可能不应该这样做。
        猜你喜欢
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-16
        • 2019-01-09
        • 2020-02-11
        • 1970-01-01
        相关资源
        最近更新 更多