首页 > 解决方案 > FP-Growth 算法中的递归

问题描述

我正在尝试在 Java 中实现 FP-Growth(频繁模式挖掘)算法。我已经构建了树,但是在条件 FP 树构建时遇到了困难;我不明白递归函数应该做什么。给定一个频繁项列表(按频率计数递增的顺序)——一个标题和一个树(节点类实例的列表),函数应该采取哪些步骤? 从 https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwiT4Oeeg53lAhWPhOAKHUdSAmkQjRx6BAgBEAQ&url=https%3A%2F%2Fwww.researchgate.net%2Ffigure%2FPseudocode-FP-tree-Purba 检索到的图像-30_fig2_330783065&psig=AOvVaw3fyRRKroFZwnASsE-vuMZy&ust=1571186297476542

我很难理解上面的这个伪代码。树中的 alpha 和 Betha 节点是什么,生成和构造函数有什么作用?我可以手动进行 FP-Growth,但发现实现非常混乱。如果这有帮助,我可以分享我的 FP-Tree 生成代码。提前致谢。

标签: recursionmachine-learningdata-miningfpgrowthpattern-mining

解决方案


  1. alpha 是通向此特定前缀树的前缀
  2. beta 是(要构建的树的)新前缀
  3. 生成行的含义类似于:将模式 beta 添加到结果集,支持 anItem.support
  4. 构造函数创建新模式,从中创建新树

构造函数的一个示例(自下而上的方式)将类似于:

function construct(Tree, anItem)   
    conditional_pattern_base = empty list
    in Tree find all nodes with tag = anItem
    for each node found:
       support = node.support
       conditional_pattern = empty list
       while node.parent != root_node
            conditional_pattern.append(node.parent)
            node = node.parent
       conditional_pattern_base.append( (conditional_pattern, support))
    return conditional_pattern_base

推荐阅读