我正在尝试用Java实现FP-Growth(频繁模式挖掘)算法。我已经构建了树,但是在构建条件FP树时遇到了困难;我不明白递归函数应该做什么。给定一个频繁项列表(按频率计数的递增顺序排列) – 一个头部,以及一个树(Node类实例的列表),函数应该采取哪些步骤?
我很难理解上面的伪代码。alpha和Betha是树中的节点吗?generate和construct函数是做什么的?
我可以手动进行FP-Growth,但发现实现非常 confusing。如果有帮助的话,我可以分享我生成FP-Tree的代码。
回答:
- alpha是导致这个特定前缀树的前缀
- beta是新的前缀(将要构建的树的前缀)
- generate行意味着类似于:将模式beta及其支持
anItem.support
添加到结果集中 - construct函数从中创建新模式,从而创建新树
construct函数的一个例子(自底向上方式)可能是这样的:
function construct(Tree, anItem) conditional_pattern_base = empty list 在Tree中查找所有标签为anItem的节点 对于找到的每个节点: support = node.support conditional_pattern = empty list 当node.parent != root_node时 conditional_pattern.append(node.parent) node = node.parent conditional_pattern_base.append( (conditional_pattern, support)) return conditional_pattern_base